Everything you care about in one place

Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.

Get Feeder

tkdodo.eu

TkDodo's blog

Get the latest updates from TkDodo's blog directly as they happen.

Follow now 96 followers

Latest posts

Last updated 20 days ago

The Vertical Codebase

21 days ago

Let's take a look at why the common, horizontal code structure is...

Test IDs are an a11y smell

about 1 month ago

Users don't use data-testid, so why do your tests?Keep reading.

Creating Query Abstractions

2 months ago

Building reusable abstractions on top of libraries that rely on type inference...

Building Type-Safe Compound Components

4 months ago

Compound Components are great, but should be type-safe. No, this isn't about...

2025 in Review

4 months ago

A retrospective on what has happened for me in 2025

Designing Design Systems

5 months ago

I want to write more about what makes a good design system...

Omit for Discriminated Unions in TypeScript

5 months ago

Why TypeScript’s built-in Omit breaks discriminated unions, and how a distributive version...

Tooltip Components Should Not Exist

6 months ago

A look at why tooltip components are often the wrong abstraction in...

Context Inheritance in TanStack Router

7 months ago

An overview of how TanStack Router automatically shares and infers path params...

Deriving Client State from Server State

8 months ago

How to use derived state in React to keep client state and...

React Query Selectors, Supercharged

9 months ago

How to get the most out of select, sprinkled with some TypeScript...

The Useless useCallback

9 months ago

Why most memoization is downright useless...