Brad Zacher
@brad.zacher.com.au
Computer scientist. Cider drinker. Dungeon Master.
Maintainer of @typescript-eslint.io
Software Engineer @ Canva.
https://zacher.com.au
Maintainer of @typescript-eslint.io
Software Engineer @ Canva.
https://zacher.com.au
Reposted by Brad Zacher
Folks ask us in @typescript-eslint.io about typed linting perf optimizations often. There's a lot of work we *want* to do but can't - so we put our deep explainer in an issue.
github.com/typescript-e...
Enjoy!
github.com/typescript-e...
Enjoy!
Typed linting optimizations blocked by ESLint core · Issue #11677 · typescript-eslint/typescript-eslint
Suggestion tl;dr: We get asked pretty frequently about improving the state of cross-file linting, e.g. typed linting, in ESLint core. Most requests are around performance, with others around core E...
github.com
October 3, 2025 at 12:25 PM
Folks ask us in @typescript-eslint.io about typed linting perf optimizations often. There's a lot of work we *want* to do but can't - so we put our deep explainer in an issue.
github.com/typescript-e...
Enjoy!
github.com/typescript-e...
Enjoy!
Today I learned that git and github support emojis in branch names. Do with that information what you will.
September 11, 2025 at 4:05 AM
Today I learned that git and github support emojis in branch names. Do with that information what you will.
We've had a few people ask about type-aware linting, eslint's new concurrent linting mode, and why they don't play well together. So we (the ts-eslint team) wrote a short post breaking down why and the design limitations we're constrained by.
github.com/typescript-e...
github.com/typescript-e...
Interaction with multithread linting · typescript-eslint typescript-eslint · Discussion #11568
Body ESlint v9.34.0 has added support for multithread linting: https://eslint.org/blog/2025/08/multithread-linting/ One word that isn't mentioned in that blog post is "TypeScript." If you use linti...
github.com
September 6, 2025 at 1:11 PM
We've had a few people ask about type-aware linting, eslint's new concurrent linting mode, and why they don't play well together. So we (the ts-eslint team) wrote a short post breaking down why and the design limitations we're constrained by.
github.com/typescript-e...
github.com/typescript-e...
TypeScript-ESLint v8.42.0 has been released!
This is our first release with npm provenance!
Shoutout to @jameshenry.bsky.social for the hard work securing our release pipeline.
github.com/typescript-e...
This is our first release with npm provenance!
Shoutout to @jameshenry.bsky.social for the hard work securing our release pipeline.
github.com/typescript-e...
Release v8.42.0 · typescript-eslint/typescript-eslint
8.42.0 (2025-09-02)
🚀 Features
deprecate tseslint.config() (#11531)
🩹 Fixes
deps: update eslint monorepo to v9.33.0 (#11482)
typescript-eslint: handle non-normalized windows paths produced by ji...
github.com
September 2, 2025 at 2:30 PM
TypeScript-ESLint v8.42.0 has been released!
This is our first release with npm provenance!
Shoutout to @jameshenry.bsky.social for the hard work securing our release pipeline.
github.com/typescript-e...
This is our first release with npm provenance!
Shoutout to @jameshenry.bsky.social for the hard work securing our release pipeline.
github.com/typescript-e...
Been seeing an uptick in what are clearly vibe-coded PRs. On the surface this seems great -- more contributors!
But in the reality it's often AI slop that the person hasn't reviewed and instead the burden of review is on us, the maintainers -- which is a horrible trade.
But in the reality it's often AI slop that the person hasn't reviewed and instead the burden of review is on us, the maintainers -- which is a horrible trade.
July 23, 2025 at 11:29 PM
Been seeing an uptick in what are clearly vibe-coded PRs. On the surface this seems great -- more contributors!
But in the reality it's often AI slop that the person hasn't reviewed and instead the burden of review is on us, the maintainers -- which is a horrible trade.
But in the reality it's often AI slop that the person hasn't reviewed and instead the burden of review is on us, the maintainers -- which is a horrible trade.
I asked cursor's AI agent to try to create a small TUI form.
It went HORRIBLY. After a while it declared the task as done despite numerous compiler errors.
When I told it that it wasn't done. This was the agent's response:
It went HORRIBLY. After a while it declared the task as done despite numerous compiler errors.
When I told it that it wasn't done. This was the agent's response:
February 12, 2025 at 8:44 PM
I asked cursor's AI agent to try to create a small TUI form.
It went HORRIBLY. After a while it declared the task as done despite numerous compiler errors.
When I told it that it wasn't done. This was the agent's response:
It went HORRIBLY. After a while it declared the task as done despite numerous compiler errors.
When I told it that it wasn't done. This was the agent's response:
Without downloading any new pics what's your energy going into 2025
December 28, 2024 at 7:47 AM
Without downloading any new pics what's your energy going into 2025
I've been doing a bunch of work on a meta-linter of sorts and so I need to ingest results from many different linters.
A really painful problem I've discovered recently is that nobody is consistent about how to define a "location" in text. It's a surprisingly complex space to try and reconcile!
A really painful problem I've discovered recently is that nobody is consistent about how to define a "location" in text. It's a surprisingly complex space to try and reconcile!
December 12, 2024 at 12:51 AM
I've been doing a bunch of work on a meta-linter of sorts and so I need to ingest results from many different linters.
A really painful problem I've discovered recently is that nobody is consistent about how to define a "location" in text. It's a surprisingly complex space to try and reconcile!
A really painful problem I've discovered recently is that nobody is consistent about how to define a "location" in text. It's a surprisingly complex space to try and reconcile!
I finally started using copilot a few weeks ago. As a skeptic I didn't think that I'd like it so I was surprised to find I actually have found value in it.
(Humble brag) I've met very few people who can pump out code as fast as I can. So I didn't think that copilot would really make me much faster.
(Humble brag) I've met very few people who can pump out code as fast as I can. So I didn't think that copilot would really make me much faster.
November 26, 2024 at 10:04 PM
I finally started using copilot a few weeks ago. As a skeptic I didn't think that I'd like it so I was surprised to find I actually have found value in it.
(Humble brag) I've met very few people who can pump out code as fast as I can. So I didn't think that copilot would really make me much faster.
(Humble brag) I've met very few people who can pump out code as fast as I can. So I didn't think that copilot would really make me much faster.
The most frustrating thing about providing support to someone is when they use words like "this / that / it".
I tried that, but it errored
Tried what? What error?
Show what you tried!
There's a good chance you did "it" wrong!
After all that's why you're asking for help.
I tried that, but it errored
Tried what? What error?
Show what you tried!
There's a good chance you did "it" wrong!
After all that's why you're asking for help.
November 25, 2024 at 10:17 PM
The most frustrating thing about providing support to someone is when they use words like "this / that / it".
I tried that, but it errored
Tried what? What error?
Show what you tried!
There's a good chance you did "it" wrong!
After all that's why you're asking for help.
I tried that, but it errored
Tried what? What error?
Show what you tried!
There's a good chance you did "it" wrong!
After all that's why you're asking for help.
Reposted by Brad Zacher
TypeScript-ESLint v8.15.0 has been released!
This release includes:
- a fix for the recent crash introduced with ESLint v9.15.0
- support for arrays in `tseslint.config` (no more spreads necessary!)
- a new rule `no-unsafe-type-assertion`
- and more...!
github.com/typescript-e...
This release includes:
- a fix for the recent crash introduced with ESLint v9.15.0
- support for arrays in `tseslint.config` (no more spreads necessary!)
- a new rule `no-unsafe-type-assertion`
- and more...!
github.com/typescript-e...
Release v8.15.0 · typescript-eslint/typescript-eslint
8.15.0 (2024-11-18)
🚀 Features
eslint-plugin: added related-getter-setter-pairs rule (#10192)
eslint-plugin: new rule no-unsafe-type-assertion (#10051)
eslint-plugin: [prefer-nullish-coalescing] f...
github.com
November 18, 2024 at 5:44 PM
TypeScript-ESLint v8.15.0 has been released!
This release includes:
- a fix for the recent crash introduced with ESLint v9.15.0
- support for arrays in `tseslint.config` (no more spreads necessary!)
- a new rule `no-unsafe-type-assertion`
- and more...!
github.com/typescript-e...
This release includes:
- a fix for the recent crash introduced with ESLint v9.15.0
- support for arrays in `tseslint.config` (no more spreads necessary!)
- a new rule `no-unsafe-type-assertion`
- and more...!
github.com/typescript-e...
It's good to know that AI is still a long way off taking my job
November 14, 2024 at 4:07 AM
It's good to know that AI is still a long way off taking my job
I made/maintained a lot of the lint rules people have a love hate relationship with.
November 10, 2024 at 7:47 AM
I made/maintained a lot of the lint rules people have a love hate relationship with.
Reposted by Brad Zacher
"cast"?
Sir it's not a cast unless it's from the native region of programming languages.
Otherwise it's a sparkling assertion.
Sir it's not a cast unless it's from the native region of programming languages.
Otherwise it's a sparkling assertion.
November 10, 2024 at 5:13 AM
"cast"?
Sir it's not a cast unless it's from the native region of programming languages.
Otherwise it's a sparkling assertion.
Sir it's not a cast unless it's from the native region of programming languages.
Otherwise it's a sparkling assertion.
Reposted by Brad Zacher
I want to CREATE something but all of my energy is being used to merely exist right now
November 7, 2024 at 8:15 PM
I want to CREATE something but all of my energy is being used to merely exist right now
Reposted by Brad Zacher
Thanks for filing this issue. We generally look at bug reports in order of most-succinct repro to most-complex repro. We have currently scheduled this one for three weeks after the heat death of the universe.
November 7, 2024 at 11:38 PM
Thanks for filing this issue. We generally look at bug reports in order of most-succinct repro to most-complex repro. We have currently scheduled this one for three weeks after the heat death of the universe.
I made an eslint utility that allows finer control over no-restricted-syntax/globals/properties configurations.
In a nutshell it generates a plugin that has one rule per selector -- allowing granular disable comments and better auditing!
github.com/bradzacher/e...
In a nutshell it generates a plugin that has one rule per selector -- allowing granular disable comments and better auditing!
github.com/bradzacher/e...
GitHub - bradzacher/eslint-no-restricted: An eslint plugin for quickly and easily creating no-restricted-syntax rules
An eslint plugin for quickly and easily creating no-restricted-syntax rules - bradzacher/eslint-no-restricted
github.com
November 5, 2024 at 11:44 PM
I made an eslint utility that allows finer control over no-restricted-syntax/globals/properties configurations.
In a nutshell it generates a plugin that has one rule per selector -- allowing granular disable comments and better auditing!
github.com/bradzacher/e...
In a nutshell it generates a plugin that has one rule per selector -- allowing granular disable comments and better auditing!
github.com/bradzacher/e...
Reposted by Brad Zacher
👋 Welcome to Bsky, everyone!
I'm jumping on the starter pack bandwagon and making one for the static analysis folks around JavaScript/TypeScript. Projects like ESLint, TypeScript, and new fancy versions of them all.
Who else should go on it?
go.bsky.app/5hwBPTK
I'm jumping on the starter pack bandwagon and making one for the static analysis folks around JavaScript/TypeScript. Projects like ESLint, TypeScript, and new fancy versions of them all.
Who else should go on it?
go.bsky.app/5hwBPTK
November 5, 2024 at 2:29 PM
👋 Welcome to Bsky, everyone!
I'm jumping on the starter pack bandwagon and making one for the static analysis folks around JavaScript/TypeScript. Projects like ESLint, TypeScript, and new fancy versions of them all.
Who else should go on it?
go.bsky.app/5hwBPTK
I'm jumping on the starter pack bandwagon and making one for the static analysis folks around JavaScript/TypeScript. Projects like ESLint, TypeScript, and new fancy versions of them all.
Who else should go on it?
go.bsky.app/5hwBPTK
Reposted by Brad Zacher
✨ @brad.zacher.com.au and I are going to hop onto a Twitch stream to talk about typescript-eslint intricacies. We'll deep dive into source parsing, ecosystem compatibility, and all sorts of great nuances. Fun!
4pm EST this Thursday the 7th / 7:30am AEST the 8th
www.twitch.tv/joshuakgoldb...
4pm EST this Thursday the 7th / 7:30am AEST the 8th
www.twitch.tv/joshuakgoldb...
joshuakgoldberg Schedule - Twitch
Check out joshuakgoldberg stream schedule, and set reminders so you don’t miss out!
www.twitch.tv
March 6, 2024 at 1:08 PM
✨ @brad.zacher.com.au and I are going to hop onto a Twitch stream to talk about typescript-eslint intricacies. We'll deep dive into source parsing, ecosystem compatibility, and all sorts of great nuances. Fun!
4pm EST this Thursday the 7th / 7:30am AEST the 8th
www.twitch.tv/joshuakgoldb...
4pm EST this Thursday the 7th / 7:30am AEST the 8th
www.twitch.tv/joshuakgoldb...