Standard Reader
TkDodo's blog
reactjs

TkDodo's blog

A technical blog about Frontend Development, TypeScript, React, and TanStack Query.

@tkdodo.eu1readers90posts16d ago
LatestRecent writing
TanStack Router and Query
May 26, 2026
TanStack Router has a built-in cache, so why would we need TanStack Query? There are, of course, reasons ...
ReactJsTanStack Router
The Vertical Codebase
Apr 13, 2026
Let's take a look at why the common, horizontal code structure is not ideal, where it breaks down, and what we can do about it.
FrontendArchitecture
Test IDs are an a11y smell
Mar 23, 2026
Users don't use data-testid, so why do your tests?
Design SystemTesting
Creating Query Abstractions
Feb 23, 2026
Building reusable abstractions on top of libraries that rely on type inference can be deceptively difficult, which is why we need better ways to build those abstractions ...
ReactJsReact Query
Building Type-Safe Compound Components
Jan 2, 2026
Compound Components are great, but should be type-safe. No, this isn't about the children prop ...
Design SystemAPI Design
2025 in Review
Dec 26, 2025
A retrospective on what has happened for me in 2025
PersonalYear in Review
Designing Design Systems
Dec 1, 2025
I want to write more about what makes a good design system. This is the unstructured list of principles I think matter.
Design SystemAPI Design
Omit for Discriminated Unions in TypeScript
Nov 24, 2025
Why TypeScript’s built-in Omit breaks discriminated unions, and how a distributive version preserves them.
TypeScriptReactJs
Tooltip Components Should Not Exist
Nov 17, 2025
A look at why tooltip components are often the wrong abstraction in design systems, leading to accessibility issues, misuse, and inconsistent user experiences.
ReactJsDesign System
Context Inheritance in TanStack Router
Oct 12, 2025
An overview of how TanStack Router automatically shares and infers path params, search params, and context between nested routes in a type-safe way.
ReactJsTanStack Router
Deriving Client State from Server State
Sep 1, 2025
How to use derived state in React to keep client state and server data aligned without manual sync or effects.
ReactJsReact Query
React Query Selectors, Supercharged
Aug 4, 2025
How to get the most out of select, sprinkled with some TypeScript tips.
ReactJsReact Query