{"schemaVersion":1,"sourceCheckedOn":"2026-08-03","categories":[{"id":"application","index":"A","label":{"zh-cn":"应用架构","en":"Application architecture"},"summary":{"zh-cn":"决定应用如何运行、导航，以及代码和数据在客户端与服务端之间如何交接。","en":"Defines how an application runs, navigates, and hands code and data across client and server boundaries."}},{"id":"data-state","index":"B","label":{"zh-cn":"数据与状态","en":"Data and state"},"summary":{"zh-cn":"分别处理远程异步数据、响应式数据模型、轻量本地状态和 AI 流式交互。","en":"Separates remote async data, reactive data models, lightweight local state, and streamed AI interactions."}},{"id":"headless-ui","index":"C","label":{"zh-cn":"无头交互逻辑","en":"Headless interaction logic"},"summary":{"zh-cn":"提供复杂 UI 的状态与行为，不接管你的组件、样式系统或设计规范。","en":"Provides state and behavior for complex UI without owning components, styling, or design language."}},{"id":"performance","index":"D","label":{"zh-cn":"性能控制","en":"Performance control"},"summary":{"zh-cn":"控制大规模渲染和高频事件，让昂贵工作只在必要时发生。","en":"Controls large-scale rendering and high-frequency events so expensive work happens only when needed."}},{"id":"tooling","index":"E","label":{"zh-cn":"工程工具","en":"Engineering tooling"},"summary":{"zh-cn":"把多个 TanStack 工具的运行状态汇总到统一的调试界面。","en":"Brings runtime state from multiple TanStack tools into one extensible debugging surface."}}],"products":[{"id":"start","index":"01","label":"TanStack Start","category":"application","lifecycle":"rc","coverage":"published","role":{"zh-cn":"全栈 React 应用框架","en":"Full-stack React application framework"},"decision":{"zh-cn":"当路由、服务端函数、SSR 与部署需要一个共同运行时边界时选择。","en":"Choose it when routing, server functions, SSR, and deployment need one runtime boundary."},"packages":["@tanstack/react-start"],"officialUrl":"https://tanstack.com/start/latest/docs/framework/react/overview","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#start"},{"id":"router","index":"02","label":"TanStack Router","category":"application","lifecycle":"established","coverage":"published","role":{"zh-cn":"类型安全路由与 URL 状态","en":"Type-safe routing and URL state"},"decision":{"zh-cn":"当路由参数、搜索参数、加载生命周期需要端到端类型推断时选择。","en":"Choose it when route params, search params, and loading lifecycles need end-to-end inference."},"packages":["@tanstack/react-router"],"officialUrl":"https://tanstack.com/router/latest/docs/overview","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#router"},{"id":"query","index":"03","label":"TanStack Query","category":"data-state","lifecycle":"established","coverage":"published","role":{"zh-cn":"远程异步数据与缓存","en":"Remote async data and caching"},"decision":{"zh-cn":"当服务端数据需要缓存、新鲜度、重试、失效和后台同步时选择。","en":"Choose it when server data needs caching, freshness, retries, invalidation, and background sync."},"packages":["@tanstack/react-query"],"officialUrl":"https://tanstack.com/query/latest/docs/framework/react/overview","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#query"},{"id":"db","index":"04","label":"TanStack DB","category":"data-state","lifecycle":"beta","coverage":"next","role":{"zh-cn":"响应式客户端数据模型","en":"Reactive client data model"},"decision":{"zh-cn":"当多个数据源需要集合、实时查询和乐观写入组成统一客户端模型时评估。","en":"Evaluate it when collections, live queries, and optimistic writes must unify multiple data sources."},"packages":["@tanstack/react-db"],"officialUrl":"https://tanstack.com/db/latest/docs/overview","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#db"},{"id":"store","index":"05","label":"TanStack Store","category":"data-state","lifecycle":"alpha","coverage":"watch","role":{"zh-cn":"框架无关的响应式状态","en":"Framework-agnostic reactive state"},"decision":{"zh-cn":"当少量跨组件本地状态需要轻量响应式原语，而不属于远程数据时评估。","en":"Evaluate it for small shared reactive client state that does not belong to remote data."},"packages":["@tanstack/store"],"officialUrl":"https://tanstack.com/store/latest/docs/overview","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#store"},{"id":"ai","index":"06","label":"TanStack AI","category":"data-state","lifecycle":"beta","coverage":"watch","role":{"zh-cn":"类型安全的 AI 与流式协议","en":"Type-safe AI and streaming protocols"},"decision":{"zh-cn":"当模型供应商、流式输出和工具调用需要统一且可替换的类型接口时评估。","en":"Evaluate it when providers, streamed output, and tool calls need one replaceable typed interface."},"packages":["@tanstack/ai","@tanstack/ai-react"],"officialUrl":"https://tanstack.com/ai/latest/docs/getting-started/overview","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#ai"},{"id":"table","index":"07","label":"TanStack Table","category":"headless-ui","lifecycle":"established","coverage":"published","role":{"zh-cn":"表格与数据网格逻辑","en":"Table and data-grid logic"},"decision":{"zh-cn":"当排序、筛选、分页、分组需要与你的组件和样式系统解耦时选择。","en":"Choose it when sorting, filtering, pagination, and grouping must stay independent of your UI system."},"packages":["@tanstack/react-table"],"officialUrl":"https://tanstack.com/table/latest/docs/introduction","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#table"},{"id":"form","index":"08","label":"TanStack Form","category":"headless-ui","lifecycle":"established","coverage":"published","role":{"zh-cn":"类型安全的表单状态","en":"Type-safe form state"},"decision":{"zh-cn":"当复杂字段、同步与异步校验需要类型安全且不绑定 UI 组件时选择。","en":"Choose it when complex fields and sync or async validation need type safety without UI lock-in."},"packages":["@tanstack/react-form"],"officialUrl":"https://tanstack.com/form/latest/docs/overview","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#form"},{"id":"hotkeys","index":"09","label":"TanStack Hotkeys","category":"headless-ui","lifecycle":"alpha","coverage":"watch","role":{"zh-cn":"声明式键盘快捷键","en":"Declarative keyboard shortcuts"},"decision":{"zh-cn":"当产品级快捷键需要处理作用域、组合键、冲突和跨平台修饰键时评估。","en":"Evaluate it when product shortcuts need scopes, chords, conflict handling, and cross-platform modifiers."},"packages":["@tanstack/react-hotkeys"],"officialUrl":"https://tanstack.com/hotkeys/latest/docs/overview","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#hotkeys"},{"id":"virtual","index":"10","label":"TanStack Virtual","category":"performance","lifecycle":"established","coverage":"planned","role":{"zh-cn":"长列表与网格虚拟化","en":"Long-list and grid virtualization"},"decision":{"zh-cn":"当 DOM 规模而非网络请求成为列表或网格的性能瓶颈时选择。","en":"Choose it when DOM volume, rather than network work, becomes the list or grid bottleneck."},"packages":["@tanstack/react-virtual"],"officialUrl":"https://tanstack.com/virtual/latest/docs/introduction","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#virtual"},{"id":"pacer","index":"11","label":"TanStack Pacer","category":"performance","lifecycle":"beta","coverage":"watch","role":{"zh-cn":"高频事件节奏控制","en":"High-frequency event pacing"},"decision":{"zh-cn":"当防抖、节流、排队或限速需要可组合、可观察的统一原语时评估。","en":"Evaluate it when debouncing, throttling, queuing, or rate limiting need observable composable primitives."},"packages":["@tanstack/react-pacer"],"officialUrl":"https://tanstack.com/pacer/latest/docs/overview","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#pacer"},{"id":"devtools","index":"12","label":"TanStack Devtools","category":"tooling","lifecycle":"alpha","coverage":"watch","role":{"zh-cn":"可扩展的统一调试面板","en":"Extensible unified debugging panel"},"decision":{"zh-cn":"当多个 TanStack 工具需要共享一个可扩展的运行时检查界面时评估。","en":"Evaluate it when multiple TanStack tools need one extensible runtime inspection surface."},"packages":["@tanstack/react-devtools"],"officialUrl":"https://tanstack.com/devtools/latest/docs/overview","sourceCheckedOn":"2026-08-03","atlasUrlTemplate":"https://tanstack-atlas.vercel.app/{localeId}/ecosystem#devtools"}]}