{"slug": "tanstack-query", "name": "TanStack Query", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 13, "warners": 0, "score": 5.265, "rising": -0.98, "first": "2025-12-02", "latest": "2026-10-01", "why": "I think tanstack query already does all the hard part. I feel like people under-use react query", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 12, "compare": 0, "warn": 0}, "spark": [0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "I think tanstack query already does all the hard part. I feel like people under-use react query", "kind": "", "icon": true, "domain": null, "github_repo": null, "official_url": "https://tanstack.com/query", "pricing": "", "aliases": ["TanStack Query"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 769697717, "item_id": 48106107, "url": "https://news.ycombinator.com/item?id=48106107", "by": "Escapado", "date": "2026-05-12", "version": null, "stance": "recommend", "quote": "Nextjs, oRPC, Next-Intl, Zod, Tanstack Form, Tanstack Query, Drizzle, SQLite, Tiptap, Better-Auth, Jest, Tailwind, a heavily customized Shadcn.", "excerpt": "For the past two years I have worked on a SaaS platform for the education space that we are about to launch (small 2 person start up) - it involves a lot of highly dynamic forms and fairly complex client side state and tons of rather complex components and workflows. The stack for non-specifics we landed on for now coincides with a lot of what is mentioned in the blog post with a few extras: Nextjs, oRPC, Next-Intl, ", "context": "2-person startup, education SaaS", "use_case": "", "switched_from": "", "story": "The Modern React Stack Explained for 2026"}, {"id": 763156256, "item_id": 47697266, "url": "https://news.ycombinator.com/item?id=47697266", "by": "igor47", "date": "2026-04-08", "version": null, "stance": "recommend", "quote": "I think tanstack query already does all the hard part. I feel like people under-use react query", "excerpt": "All the examples are fetching data from a server, and in such cases I think tanstack query already does all the hard part. I feel like people under-use react query and put too much state in their FE. This might be relevant if your app has some really complicated interactions, but for most apps they should really be a function of server, not client, state. Of course this exact reasoning is why I moved off react altoge", "context": "", "use_case": "server state management", "switched_from": "", "story": "Show HN: Tired of logic in useEffect, I built a class-based React state manager"}, {"id": 747118608, "item_id": 46694913, "url": "https://news.ycombinator.com/item?id=46694913", "by": "docmars", "date": "2026-01-20", "version": null, "stance": "recommend", "quote": "React Query at least gives you an `initialData` option", "excerpt": "I've used React Query and Zustand extensively in my projects, and unfortunately Zustand suffers from the same issue in cases where you aren't dealing with async data. I'm talking about React state + data that's already available, but can't be used to initialize your store before the first render cycle. Here's how Zustand gets around this, and lo-and-behold: it requires React Context :( [1] (Look at how much boilerpla", "context": "", "use_case": "", "switched_from": "", "story": "jQuery 4.0.0 Released"}]}], "caveats": [], "who": [{"by": "Escapado", "context": "2-person startup, education SaaS", "url": "https://news.ycombinator.com/item?id=48106107", "date": "2026-05-12"}, {"by": "gonxped31", "context": "junior software engineer seeking full-time role", "url": "https://news.ycombinator.com/item?id=47977937", "date": "2026-05-01"}, {"by": "bobjordan", "context": "builds customer portal bomquote.com", "url": "https://news.ycombinator.com/item?id=46315756", "date": "2025-12-18"}], "tags": [], "use_cases": ["data fetching", "frontend data fetching", "server state management", "client data fetching"], "compared": [{"slug": "tailwind-css", "name": "Tailwind CSS", "co": 9, "switched_from": 0, "switched_to": 0}, {"slug": "react", "name": "React", "co": 9, "switched_from": 0, "switched_to": 0}, {"slug": "next-js", "name": "Next.js", "co": 7, "switched_from": 0, "switched_to": 0}, {"slug": "postgresql", "name": "PostgreSQL", "co": 7, "switched_from": 0, "switched_to": 0}, {"slug": "redux", "name": "Redux", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "drizzle", "name": "Drizzle", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "shadcn-ui", "name": "shadcn/ui", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "jest", "name": "Jest", "co": 4, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=49922568", "title": "Ask HN: Who wants to be hired? (October 2026)", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=47975570", "title": "Ask HN: Who wants to be hired? (May 2026)", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49156682", "title": "Ask HN: Who wants to be hired? (August 2026)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48105772", "title": "The Modern React Stack Explained for 2026", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47975571", "title": "Ask HN: Who is hiring? (May 2026)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47696760", "title": "Show HN: Tired of logic in useEffect, I built a class-based React state manager", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"neutral": 3}, "2026-01": {"recommend": 1}, "2026-02": {"neutral": 1}, "2026-03": {"neutral": 1}, "2026-04": {"neutral": 1, "recommend": 1}, "2026-05": {"neutral": 3, "recommend": 1}, "2026-06": {}, "2026-07": {}, "2026-08": {"neutral": 1}, "2026-09": {}, "2026-10": {"neutral": 2}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 798833547, "item_id": 49927096, "url": "https://news.ycombinator.com/item?id=49927096", "by": "vasilht22", "date": "2026-10-01", "version": null, "stance": "neutral", "quote": "TanStack Query, Tailwind CSS", "excerpt": "Location: Skopje, North Macedonia (CET/CEST) Remote: Yes \u2014 flexible hours for US teams, including full Eastern/Central business hours and significant Pacific overlap. Willing to relocate: No (remote only) Technologies: TypeScript, JavaScript, React, Next.js, Vue 3, PostgreSQL, Drizzle ORM, Neon, Cloudflare, Docker, AWS, TanStack Query, Tailwind CSS, REST APIs, n8n, AI integrations R\u00e9sum\u00e9/CV: Available by email Email:", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: Who wants to be hired? (October 2026)"}, {"id": 798780488, "item_id": 49923780, "url": "https://news.ycombinator.com/item?id=49923780", "by": "zhyd1997_", "date": "2026-10-01", "version": null, "stance": "neutral", "quote": "TanStack Query", "excerpt": "Location: Shanghai, China Remote: Yes Willing to relocate: Yes Technologies: Languages & Databases \u2022 JavaScript, TypeScript, Java, Golang \u2022 PostgreSQL, MongoDB Frameworks & Libraries \u2022 React.js, Next.js, Express.js, Koa.js \u2022 MUI, Tailwind CSS, CSS-in-JS \u2022 TanStack Query, Redux, Prisma, Supabase \u2022 Highcharts, ECharts, AG Grid \u2022 Jest, Cypress DevOps & Tools \u2022 Docker, Git, GitHub Actions, CircleCI \u2022 Datadog, Sentry Work", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: Who wants to be hired? (October 2026)"}, {"id": 786512042, "item_id": 49157002, "url": "https://news.ycombinator.com/item?id=49157002", "by": "tomxmp", "date": "2026-08-03", "version": null, "stance": "neutral", "quote": "TanStack Query", "excerpt": "Location: Lisbon, Portugal (GMT+0/+1) Remote: Yes Willing to relocate: No Technologies: Typescript, React, TanStack Start, Next.js, PostgreSQL, pgvector, Redis, Docker, Drizzle ORM, Zod, Zustand, TanStack Query, Tailwind CSS, Plasmo, Vite, Astro, Expo, AI SDK, Python, TensorFlow, scikit-learn, Pandas, Deck.gl, AWS, GCP R\u00e9sum\u00e9/CV: https://tomasmenezes.com/cv Email: tomas.alexmp+hn@gmail.com More info: https://tomasmen", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: Who wants to be hired? (August 2026)"}, {"id": 769697717, "item_id": 48106107, "url": "https://news.ycombinator.com/item?id=48106107", "by": "Escapado", "date": "2026-05-12", "version": null, "stance": "recommend", "quote": "Nextjs, oRPC, Next-Intl, Zod, Tanstack Form, Tanstack Query, Drizzle, SQLite, Tiptap, Better-Auth, Jest, Tailwind, a heavily customized Shadcn.", "excerpt": "For the past two years I have worked on a SaaS platform for the education space that we are about to launch (small 2 person start up) - it involves a lot of highly dynamic forms and fairly complex client side state and tons of rather complex components and workflows. The stack for non-specifics we landed on for now coincides with a lot of what is mentioned in the blog post with a few extras: Nextjs, oRPC, Next-Intl, ", "context": "2-person startup, education SaaS", "use_case": "", "switched_from": "", "story": "The Modern React Stack Explained for 2026"}, {"id": 768092344, "item_id": 48005771, "url": "https://news.ycombinator.com/item?id=48005771", "by": "zhyd1997_", "date": "2026-05-04", "version": null, "stance": "neutral", "quote": "TanStack Query", "excerpt": "Location: Shanghai, China Remote: Yes Willing to relocate: Yes Technologies: Languages & Databases \u2022 JavaScript, TypeScript, Java, Golang \u2022 PostgreSQL, MongoDB Frameworks & Libraries \u2022 React.js, Next.js, Express.js, Koa.js \u2022 MUI, Tailwind CSS, CSS-in-JS \u2022 TanStack Query, Redux, Prisma, Supabase \u2022 Highcharts, ECharts, AG Grid \u2022 Jest, Cypress DevOps & Tools \u2022 Docker, Git, GitHub Actions, CircleCI \u2022 Datadog, Sentry Work", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: Who wants to be hired? (May 2026)"}, {"id": 767646996, "item_id": 47977937, "url": "https://news.ycombinator.com/item?id=47977937", "by": "gonxped31", "date": "2026-05-01", "version": null, "stance": "neutral", "quote": "Frontend: React, Next.js, Tailwind CSS, ShadCN, React Query (Tanstack)", "excerpt": "Location: Canada Remote: Preferred Willing to relocate: Depends on the role. Technologies: * Languages: Python, TypeScript, JavaScript, Java, SQL, R Frontend: React, Next.js, Tailwind CSS, ShadCN, React Query (Tanstack) Backend & Data: FastAPI, Node.js, PostgreSQL, Supabase AI/ML: PyTorch, Scikit-learn, n8n, Docker, CI/CD Portfolio/CV: https://samir-gbian.vercel.app/ GitHub: https://github.com/Gonxped31 LinkedIn: htt", "context": "junior software engineer seeking full-time role", "use_case": "frontend data fetching", "switched_from": "", "story": "Ask HN: Who wants to be hired? (May 2026)"}, {"id": 767615124, "item_id": 47975945, "url": "https://news.ycombinator.com/item?id=47975945", "by": "jacri-fte", "date": "2026-05-01", "version": null, "stance": "neutral", "quote": "Stack: TypeScript, React, Tailwind, shadcn/ui, AG Grid, TanStack Query, Drizzle, PostgreSQL, Python (FastAPI), Node.js, Docker.", "excerpt": "Fortech Engineering | Full Stack Software Engineer | Primarily remote (Waterloo region, Canada) | $140-170K CAD + performance pay + earned equity Electrical and mechanical engineering consulting firm in Waterloo, serving the Canadian building construction industry \u2014 a market that's still mostly designed the old way. I designed the original platform schema and UX vision; my early code attempts got abandoned when runni", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: Who is hiring? (May 2026)"}, {"id": 763156256, "item_id": 47697266, "url": "https://news.ycombinator.com/item?id=47697266", "by": "igor47", "date": "2026-04-08", "version": null, "stance": "recommend", "quote": "I think tanstack query already does all the hard part. I feel like people under-use react query", "excerpt": "All the examples are fetching data from a server, and in such cases I think tanstack query already does all the hard part. I feel like people under-use react query and put too much state in their FE. This might be relevant if your app has some really complicated interactions, but for most apps they should really be a function of server, not client, state. Of course this exact reasoning is why I moved off react altoge", "context": "", "use_case": "server state management", "switched_from": "", "story": "Show HN: Tired of logic in useEffect, I built a class-based React state manager"}, {"id": 763143728, "item_id": 47696483, "url": "https://news.ycombinator.com/item?id=47696483", "by": "chrisweekly", "date": "2026-04-08", "version": null, "stance": "neutral", "quote": "TanStack Query is the newer name for the library FKA react-query.", "excerpt": "(facepalm) Thank you, but no. I typed \"Router\" when I meant \"Query\". TanStack Query is the newer name for the library FKA react-query. TanStack Router is an alternative to React Router. TanStack Start is an alternative to Remix/react-router-7's framework mode. The naming history and evolution of react-router and its relationship to Remix is a bit convoluted, but an unrelated tangent to the point I was making.", "context": "", "use_case": "", "switched_from": "", "story": "We moved Railway's front end off Next.js. Builds went from 10 minutes to under 2"}, {"id": 755514792, "item_id": 47219674, "url": "https://news.ycombinator.com/item?id=47219674", "by": "zhyd1997_", "date": "2026-03-02", "version": null, "stance": "neutral", "quote": "TanStack Query", "excerpt": "Location: Shanghai, China (relocating to Spain in April 2026) Remote: Yes Willing to relocate: Yes Technologies: Languages & Databases \u2022 JavaScript, TypeScript, Java, Golang \u2022 PostgreSQL, MongoDB Frameworks & Libraries \u2022 React.js, Next.js, Express.js, Koa.js \u2022 MUI, Tailwind CSS, CSS-in-JS \u2022 TanStack Query, Redux, Prisma, Supabase \u2022 Highcharts, ECharts, AG Grid \u2022 Jest, Cypress DevOps & Tools \u2022 Docker, Git, GitHub Acti", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: Who wants to be hired? (March 2026)"}, {"id": 750005188, "item_id": 46875324, "url": "https://news.ycombinator.com/item?id=46875324", "by": "artahian", "date": "2026-02-03", "version": null, "stance": "neutral", "quote": "via react-query useQuery/useMutation", "excerpt": "We've been one of the very early Meteor users, since 2013 (our previous startup is featured on their landing page). After about 10 years of scaling on Meteor & Galaxy, we ended up moving Meteor into our own custom AWS cloud because of lack of observability. As for the framework, we always wanted to have things like built-in config management, cron jobs, and better live data support (pub/sub was too rigid) - Meteor wa", "context": "", "use_case": "Client data fetching", "switched_from": "", "story": "Launch HN: Modelence (YC S25) \u2013 App Builder with TypeScript / MongoDB Framework"}, {"id": 747118608, "item_id": 46694913, "url": "https://news.ycombinator.com/item?id=46694913", "by": "docmars", "date": "2026-01-20", "version": null, "stance": "recommend", "quote": "React Query at least gives you an `initialData` option", "excerpt": "I've used React Query and Zustand extensively in my projects, and unfortunately Zustand suffers from the same issue in cases where you aren't dealing with async data. I'm talking about React state + data that's already available, but can't be used to initialize your store before the first render cycle. Here's how Zustand gets around this, and lo-and-behold: it requires React Context :( [1] (Look at how much boilerpla", "context": "", "use_case": "", "switched_from": "", "story": "jQuery 4.0.0 Released"}, {"id": 741052100, "item_id": 46315756, "url": "https://news.ycombinator.com/item?id=46315756", "by": "bobjordan", "date": "2025-12-18", "version": null, "stance": "neutral", "quote": "specifically React/TS, TanStack Query, Orval, and Shadcn", "excerpt": "I\u2019ve been a fan of this philosophy since the Intercooler.js days. In fact, our legacy customer portal at bomquote.com still runs on Intercooler. I spent the last year building a new version using the \"modern\" version of that stack: Flask, HTMX, Alpine, and Tailwind. However, I\u2019ve recently made the difficult decision to rewrite the frontend in React (specifically React/TS, TanStack Query, Orval, and Shadcn). In a perf", "context": "builds customer portal bomquote.com", "use_case": "data fetching", "switched_from": "", "story": "Please just try HTMX"}, {"id": 738454627, "item_id": 46153414, "url": "https://news.ycombinator.com/item?id=46153414", "by": "acemarke", "date": "2025-12-04", "version": null, "stance": "neutral", "quote": "React Query is now the default standard data fetching tool", "excerpt": "Hi. I'm the current Redux maintainer, and have been since Dan handed it over to me in mid-2016, one year after he created Redux. It's also worth noting that Dan never used Redux on a real app (that I know of), whereas I've spent years maintaining Redux and Redux Toolkit and designing APIs based on the needs of our users. Redux is still by far the most widely-used state management library in React apps. Some of that _", "context": "", "use_case": "", "switched_from": "", "story": "RCE Vulnerability in React and Next.js"}, {"id": 738091457, "item_id": 46130716, "url": "https://news.ycombinator.com/item?id=46130716", "by": "ivandalmet", "date": "2025-12-02", "version": null, "stance": "neutral", "quote": "We use Tanstack Query for data fetching", "excerpt": "We use Tanstack Query for data fetching with query and mutation options auto generated by oRPC. For auth setup, Better Auth is so good that is handling everything from server to client. Better Auth is just so amazing that is the first time that using auth is enjoyable! For protected routes with just check Auth and roles with better Auth in an orpc middleware.", "context": "", "use_case": "Data fetching", "switched_from": "", "story": null}]}