TkDodo's blog
Deriving Client State from Server State
React Query Selectors, Supercharged
The Useless useCallback
The Beauty of TanStack Router
Concurrent Optimistic Updates in React Query
My Open Source Origin Story
2024 in Review
React Query - The Bad Parts
Ref Callbacks, React 19 and the Compiler
My Slow Retreat from Twitter
React Query API Design - Lessons Learned
Component Composition is great btw
How Infinite Queries work
Introducing XState Store
Please Stop Using Barrel Files
React 19 and Suspense - A Drama in 3 Acts
Automatic Query Invalidation after Mutations
Zustand and React Context
Avoiding Hydration Mismatches with useSyncExternalStore
The Query Options API
2023 in Review
Why You Want React Query
The Uphill Battle of Memoization
Array Types in TypeScript
React Query and React Context
Thinking in React Query
You Might Not Need React Query
Breaking React Query's API on purpose
OSS Feature Decision Tree
Why React isn't dying
Type-safe React Query
2022 in Review
Inside React Query
Working with Zustand
Refactor impactfully
Seeding the Query Cache
Refs, Events and Escape Hatches
React Query meets React Router
Avoiding useEffect with callback refs
React Query FAQs
Hooks, Dependencies and Stale Closures
React Query and Forms
Use Urgency
optional vs. undefined
Offline React Query
Always provide customer value
Road to Refactoring
2021 in Review
Beware the leaking any
Leveraging the Query Function Context
Mastering Mutations in React Query
useState vs useReducer
React Query Error Handling
React Query as a State Manager
Placeholder and Initial Data in React Query
About async functions
Effective React Query Keys
Using WebSockets with React Query
React Query and TypeScript
How can I ... ?
Testing React Query
Status Checks in React Query
React Query Render Optimizations
useState for one-time initializations
React Query Data Transformations
No love for boolean parameters
Things to know about useState
Simplifying useEffect
Flow to TypeScript migration journey
On naming things
Practical React Query
Avoiding legacy systems
Putting props to useState
The power of const assertions
Pedantic index signatures in TypeScript 4.1
Why I don't like reduce
Calling JavaScript from TypeScript
Solving conflicts in package-lock.json
Don't over useState
Exhaustive matching in TypeScript