Maintaining TanStack Query โข blog at tkdodo.eu โข Software Engineer @getsentry โข ReactJs โข TypeScript โข ๐ฆ๐น Vienna, Austria โข Father of two ๐งโ๐ฆ
๐ข I'm so stoked to announce that today, ๐ฎ query.gg - the brand new, official @tan_stack React Query course - is live and available for everyone ๐
๐ข We have mostly moved the TanStack Query API reference docs to being auto-generated from JsDoc comments.
This might mean some of the pages will temporarily have less information than before.
If you see something that doesn't look right, please reach out and/or file a PR ๐
It was a constant chore to keep the docs up-to-date with code. Also people have often complained about our JsDocs not being comprehensive enough. So we made this switch to fill the gaps. Huge shoutout to Wonsuk Choi, who has been leading this initiative ๐
tanstack.com/query/latest/doโฆ
๐ It's been way too long since my last blogpost. Today, I'm continuing my @tan_stack router series with a pattern that I've been teaching in my workshops for over a year:
How to keep prefetches in sync between route loaders and components:
tkdodo.eu/blog/reliable-querโฆ
๐ข I've decided to remove the experimental_prefetchInRender flag and the associated promise returned from useQuery. There are too many "gotchas" with this approach. This currently puts use(promise) off the table, sorry. We'll have to think some more how to make this possible...
Guido Started a great 7-part blog series, explaining ATproto to people outside the ecosystem.
Give it a read if you're interested in ATproto or why I think it's the future (not just for social media).
Part 1: Who actually owns your network?
gui.do/post/atproto-series-0โฆ
๐ Surprisingly, I haven't written about how my two favourite TanStack libraries - Router and Query - work together.
๐ loaders start fetches early
๐ฎ query owns the cache
๐ suspense integrates naturally
๐๏ธ TanStack Start makes SSR & streaming easy
tkdodo.eu/blog/tan-stack-rouโฆ
Say hi to @TkDodo, maintainer of @tan_stack -query and one of the sharpest voices in frontend architecture. From async state management and tools like Knip, Dominik champions clarity, maintainability, and thoughtful engineering over hype.
Excited to have him at ZurichJS Conf๐.
One of our core TanStack Start/Router team, @ChaponFlo, is looking for his next full-time remote position.
Easily top 1% talent, highly skilled in perf, dev-facing tools, TS, full-stack, etc (including TanStack, obviously ๐)
If hiring, DM him. If not, spread the word.
๐ข Happy to announce that @tan_stack Query now has a lit adapter
๐ The adapter is v0.1 - your feedback will help us getting the APIs to stable
๐ Shoutout to Gaurav Chugh for contributing it
tanstack.com/query/latest/doโฆ
Join @TkDodo for a hands-on React Query workshop that goes beyond the fundamentals and helps you build the best possible user experience.
Bring your laptop, sharpen your React Query skills, and leave ready to build faster, smoother, more scalable apps.
reactalicante.es
๐ Colocation matters. Cognitive load matters. Boundaries matter. High cohesion matters. Yes, even in the age of AI (maybe even more so). Enter the vertical codebase:
tkdodo.eu/blog/the-vertical-โฆ
Finally, @Tan_Stack Start now supports React Server Components!
Start's RSCs are a truly fetchable, cacheable and composable primitive that work with your favorite tools instead of dictating your entire architecture.
Oh, and one more thing... "Composite Components" ๐
๐โฌ๏ธ๐งต
Dead code = hidden complexity.
This year at @ReactNorway, @TkDodo (Software Engineer at @sentry and @tan_stack Query core maintainer) will break down how to detect, validate, and remove unused code at scale using real workflows.
๐ ๏ธ Expect practical steps you can apply immediately... after all, he did remove 28,000 lines of dead code using Knip...safely, systematically ๐ค
JOIN US on June 5th at Rockefeller โ the legendary heart of Oslo's music scene for Rock & React Festival > reactnorway.com/
๐ Continuing my series about design-systems, today I wrote about why I believe data-testid is a bad practice and and how role-based selectors actually help ensure your app is accessible.
tkdodo.eu/blog/test-ids-are-โฆ
๐ Creating thin abstractions is easy, until youโre trying to build them on top of functions that heavily rely on generics.
I wrote about the tradeoffs of wrapping useQuery and why type inference makes this trickier than it looks.
tkdodo.eu/blog/creating-querโฆ