Dominik 🔮
banner
tkdodo.eu
Dominik 🔮
@tkdodo.eu
⚛️ Maintaining TanStack Query
🔮 https://query.gg
👨‍💻 Software Engineer @sentry.io
📚 Blog at https://tkdodo.eu
🇦🇹 Vienna, Austria
👧👦 Father of two
Pinned
📢 After more than 11 years of working at Adverity in various positions, I’ve decided to look for new challenges in 2025.

🚀 I'm excited to share that starting in January, I'll be joining the Frontend Platform Team at @sentry.io.
What’s the latest take on checking `e.defaultPrevented` in event handlers of component libraries to allow consumers to override default behavior by calling e.preventDefault()

onMouseEnter={(e) => {
props.onMouseEnter?.(e);
if (e.defaultPrevented) return;

// do your stuff
}}

yay or nay?
November 7, 2025 at 9:23 AM
Reposted by Dominik 🔮
People give `useEffect` a bad rap, but it isn't usually the source of the problem. The real problem is too many `useState`s.
Devs fail to see how their data is connected and model it too discretely. As those connections appear, it is easier to synchronize than refactor the model. 1/
November 6, 2025 at 4:41 PM
Reposted by Dominik 🔮
Looking for a new challenge in 2026? 👀

Maybe it's your turn to take the stage at #JSHeroes. 🌟
📝 Submit your talk proposal using the link below, and get the chance to share your ideas with fellow tech enthusiasts.

👉 jsheroes.io/speak

⏳ Submissions are open until the end of the year.

#TechEvent
November 6, 2025 at 2:30 PM
Reposted by Dominik 🔮
Back in Vienna! 🇦🇹

Come meet the community on Dec 18 at the LEAN-CODERS office.

→ Reserve your spot:

luma.com/rc84shks
Effect Vienna Meetup · Luma
Join us for an evening focused on Effect, the powerful library for building production-grade software in TypeScript. Talks and special guests will be announced…
luma.com
November 6, 2025 at 1:04 PM
Reposted by Dominik 🔮
Self reviews were a good idea before AI but are now a necessity. Don't put that burden on your co-workers. If you use AI, review it 🤖
So I'm reviewing a PR from a colleague that was written for like 95% by AI, and while it might have made his job easier, it's making mine a lot harder because it's riddled with mistakes and issues that I have to now fix, and I feel like I have to thoroughly check every single line of code twice
November 4, 2025 at 11:35 AM
Self reviews were a good idea before AI but are now a necessity. Don't put that burden on your co-workers. If you use AI, review it 🤖
So I'm reviewing a PR from a colleague that was written for like 95% by AI, and while it might have made his job easier, it's making mine a lot harder because it's riddled with mistakes and issues that I have to now fix, and I feel like I have to thoroughly check every single line of code twice
November 4, 2025 at 11:35 AM
What a win for @tanstack.com!
Welcome to the team, @beaussan.io 🙌
There is some opportunities that feels unreal. This is one of them! I've joined the TanStack Router team to keep pushing the boundaries of typescript and routing!

Huge thanks to @manuelschiller.bsky.social and @tannerlinsley.com for their trust ❤️
November 4, 2025 at 9:42 AM
✂️ If you're using knip at work, try and get your employer to sponsor @webpro.nl
✂️ Thank you, sponsors!

We've officially hit €500/month in sponsorships ❤️

knip.dev/sponsors

Most of them are supporting Knip for quite a while already which I truly appreciate! 🙏
November 3, 2025 at 12:36 PM
Reposted by Dominik 🔮
knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip
November 2, 2025 at 8:32 PM
Note that this doesn't happen with @tanstack.com start server functions because unlike "directives", they are actually typed so you'll get a Promise on type level and linting can tell you if you forget to await it. So types are good I guess, who would've thought 🤷‍♂️
How our "perfect" one-line isOwner() function in Next.js started always returning true.

Spoiler: It is because of server functions...

Wrote about the bug, the fix, and the "magic" that caused it:

marma.dev/articles/202...

#webdev #javascript #typescript #react #nextjs #serverfunctions
marma.dev
November 2, 2025 at 8:57 AM
Reposted by Dominik 🔮
Happy Halloween 🎃
November 1, 2025 at 9:24 AM
Happy Halloween 🎃
November 1, 2025 at 9:24 AM
Quite happy with this (mostly) vibe-coded result: github.com/getsentry/se...
October 31, 2025 at 1:25 PM
Does claude have to say “You're absolutely right!” every time?
October 31, 2025 at 12:37 PM
Does anyone know a good alternative to github.com/plantain-00/... to compute type-coverage ? This one doesn’t seem actively maintained and I’m running into some obvious false positives ...
GitHub - plantain-00/type-coverage: A CLI tool to check type coverage for typescript code
A CLI tool to check type coverage for typescript code - plantain-00/type-coverage
github.com
October 31, 2025 at 8:23 AM
Reposted by Dominik 🔮
Had a great time at the @viennajs.bsky.social meetup today hosted in our brand new @sentry.io office. I talked about how we use knip by @webpro.nl to get rid of dead code 🙌
October 29, 2025 at 10:03 PM
Reposted by Dominik 🔮
I am looking for a full-time job.

Being independent in open source for 3.5+ years has been wonderful. I've gotten done most of the high-level goals I wanted to, and miss having people & structure around me.

If you know of a role for a staff-level TypeScript+web developer, let me know! 🙂
October 30, 2025 at 2:40 PM
Had a great time at the @viennajs.bsky.social meetup today hosted in our brand new @sentry.io office. I talked about how we use knip by @webpro.nl to get rid of dead code 🙌
October 29, 2025 at 10:03 PM
Reposted by Dominik 🔮
📦 nuqs has passed 1M weekly downloads on @npmjs.bsky.social 🚀

Thanks everyone! 🫶
October 29, 2025 at 11:57 AM
Reposted by Dominik 🔮
We just crossed 1 million downloads a week! 🎉🚀

Thanks to everyone supporting our community!
October 28, 2025 at 11:27 PM
Reposted by Dominik 🔮
Oh you want to hear about why TanStack Start’s middleware is so incredible??

I gotchu

frontendmasters.com/blog/introdu...
Introducing TanStack Start Middleware
TanStack Start is one of the most exciting full-stack web development frameworks I’ve seen. I’ve written about it before. In essence, TanStack Start takes TanStack Router, a superb, strongly-typed cli...
frontendmasters.com
October 24, 2025 at 7:09 PM
@ssalbdivad.dev you're amazing 🤩. Obviously WTF!? but in a good way 🤪
📢Introducing ArkRegex📢

a drop in replacement for new RegExp() with types ⬇️
October 28, 2025 at 6:57 PM
After a week of not doing open source, I'm drowning in notifications and stuck in analysis paralysis because there are so many things I want to / need to do at the same time. I'm not really liking this right now
October 28, 2025 at 9:06 AM
Reposted by Dominik 🔮
My talk at @nextjs.org conf is online!

Go watch it, it contains two gems:
- The dangers and limits of URL state (to make you a better engineer)
- A live demo of how @nuqs.dev uses a declarative approach to type-safe and time-safe behaviours, in a composable way.
Type-safe URL state in Next.js with nuqs
YouTube video by Vercel
www.youtube.com
October 27, 2025 at 11:19 PM
Reposted by Dominik 🔮
🚩 So many red flags in a form with basically one field:

- Using placeholder as label
- Insufficient contrast on the continue button
- A negated checkbox that opts you into marketing stuff per default

Bad a11y and shady practices - both illegal in the EU (GDPR and EAA)
October 26, 2025 at 3:52 PM