TanStack/tanstack.com

The marketing and docs site for all TanStack projects

TypeScript

1,123

2,381 commits

updated Oct 12, 2026

See the code

README

TanStack.com

The home of the TanStack ecosystem. Built with TanStack Router and deployed on Cloudflare Workers.

Follow @TanStack

Become a Sponsor!

Development

Quick Start

From your terminal:

pnpm install
pnpm dev

Requires Node.js 22.12 or newer and pnpm 11. This starts the site at http://localhost:3000 and rebuilds on file changes. No environment file, Cloudflare account, database, or sibling repository is required. Internet access is needed to download dependencies and read remote documentation.

Optional services

Add only the credentials you need to .env.local, then restart pnpm dev. Environment files are read from this checkout, never from another checkout. Missing credentials disable the relevant local service, they do not prevent the site from starting.

ServiceOptional configurationWithout it
Public docsSibling repositories or TANSTACK_LOCAL_REPOS_DIRReads public docs from GitHub. Local files take precedence. TANSTACK_DOCS_USE_REMOTE=true skips local files.
GitHub dataGITHUB_AUTH_TOKENPublic REST and raw-file requests remain anonymous, with GitHub's rate limits. Private sponsor data is omitted.
Database featuresDATABASE_URL, with the repository migrations appliedShowcase and Intent registry lists, plus the feedback leaderboard, are empty. Accounts and writes are unavailable.
GitHub sign-inDatabase plus GITHUB_OAUTH_CLIENT_ID and GITHUB_OAUTH_CLIENT_SECRETGitHub sign-in is hidden.
Google sign-inDatabase plus GOOGLE_OAUTH_CLIENT_ID and GOOGLE_OAUTH_CLIENT_SECRETGoogle sign-in is hidden.
Persistent sessionsSESSION_SECRETDevelopment generates a random worker-local secret. Restarting or reloading the worker signs you out. Production requires a configured secret.
ShopifySHOPIFY_PRIVATE_STOREFRONT_TOKENThe shop shows an unconfigured state with a link to the live shop.
Workers AICLOUDFLARE_API_TOKEN, plus CLOUDFLARE_ACCOUNT_ID to use your own accountRemote bindings are disabled. The included chat model is unavailable. Local R2, Durable Objects, and Workflows still use the local emulator.
TanChat and connected accountsDatabase, sign-in, chat access, and ENCRYPTION_KEY of at least 32 charactersPrivate chat and encrypted connected-account storage are unavailable. Provider API keys can be added in chat settings once chat is configured.
AI GatewayAI_GATEWAY_ACCOUNT_ID, AI_GATEWAY_ID, AI_GATEWAY_TOKENConfigured providers connect directly.
KodyKODY_ORIGIN and ENCRYPTION_KEY, then connect an accountKody actions require a connected account.
NotificationsDISCORD_WEBHOOK_URL and/or RESEND_API_KEYThe corresponding notification transport is disabled.
Server error reportingSENTRY_DSNLocal error reporting is disabled. Browser reporting and analytics only run in production.
Kapa docs assistantVITE_KAPA_INTEGRATION_ID and optional VITE_KAPA_SOURCE_GROUP_IDSThe hosted docs assistant is unavailable.
WebContainer runtimeVITE_WEBCONTAINER_API_KEY where required by the runtimeOther Builder runtimes remain available.

For a database you own, set DATABASE_URL and run pnpm db:migrate. OAuth apps must permit the local callback URL, http://localhost:3000/api/auth/callback/github or /google. Use a persistent session secret when testing saved sessions or encrypted site API keys.

Cloudflare's included model makes real remote requests and can incur usage charges once a Cloudflare API token is supplied. Local storage stays in .wrangler/state. Production bindings and deployment configuration remain in wrangler.jsonc.

Local Setup

The documentation for all TanStack projects (except React Charts) is hosted on tanstack.com. Doc pages are fetched from GitHub. In development, a local copy takes precedence when available. You only need the additional repositories if you're editing their docs.

Create a tanstack parent directory and clone this repo alongside the projects:

mkdir tanstack && cd tanstack
git clone git@github.com:TanStack/tanstack.com.git
git clone git@github.com:TanStack/query.git
git clone git@github.com:TanStack/router.git
git clone git@github.com:TanStack/table.git

Your directory structure should look like this:

tanstack/
   ├── tanstack.com/
   ├── query/
   ├── router/
   └── table/

[!WARNING] Directory names must match repo names exactly (e.g., query not tanstack-query). The app finds docs by looking for sibling directories by name.

Editing Docs

To edit docs for a project, make changes in its docs/ folder (e.g., ../form/docs/) and visit http://localhost:3000/form/latest/docs/overview to preview.

[!NOTE] Updated pages need to be manually reloaded in the browser.

[!WARNING] Update the project's docs/config.json if you add a new doc page!

Get Involved

Explore the TanStack Ecosystem

… and more at TanStack.com »

TanChat alpha access

TanChat is invite-only, independent of Builder access. Signing in to TanStack does not unlock it. Admins and TanStack maintainers with a linked GitHub account have automatic access and unlimited invites. Maintainer identity comes from the verified GitHub account ID and the site's maintainer catalog, not an editable profile name.

Other users unlock TanChat by redeeming a single-use invite and receive three invites to share. Issuing a link consumes one invite, even if the link expires unused. Links expire after seven days. Account settings links to /chat-access, where users can create and copy invites. The main site menu links to TanChat, and accounts without access see the invite page.

Migration 0039_tanchat_invites adds grants and hashed invite tokens. Server functions and chat HTTP endpoints enforce access independently of the UI. Quota checks lock the issuer account, and redemption locks the invite while granting access and consuming it in one transaction. Invite grants are stored in whichever database you configure. Local development without a database has no invite or account state.

TanStack/tanstack.com

The marketing and docs site for all TanStack projects

TypeScript

1,123

2,381 commits

updated Oct 12, 2026

See the code

README

TanStack.com

The home of the TanStack ecosystem. Built with TanStack Router and deployed on Cloudflare Workers.

Follow @TanStack

Become a Sponsor!

Development

Quick Start

From your terminal:

pnpm install
pnpm dev

Requires Node.js 22.12 or newer and pnpm 11. This starts the site at http://localhost:3000 and rebuilds on file changes. No environment file, Cloudflare account, database, or sibling repository is required. Internet access is needed to download dependencies and read remote documentation.

Optional services

Add only the credentials you need to .env.local, then restart pnpm dev. Environment files are read from this checkout, never from another checkout. Missing credentials disable the relevant local service, they do not prevent the site from starting.

ServiceOptional configurationWithout it
Public docsSibling repositories or TANSTACK_LOCAL_REPOS_DIRReads public docs from GitHub. Local files take precedence. TANSTACK_DOCS_USE_REMOTE=true skips local files.
GitHub dataGITHUB_AUTH_TOKENPublic REST and raw-file requests remain anonymous, with GitHub's rate limits. Private sponsor data is omitted.
Database featuresDATABASE_URL, with the repository migrations appliedShowcase and Intent registry lists, plus the feedback leaderboard, are empty. Accounts and writes are unavailable.
GitHub sign-inDatabase plus GITHUB_OAUTH_CLIENT_ID and GITHUB_OAUTH_CLIENT_SECRETGitHub sign-in is hidden.
Google sign-inDatabase plus GOOGLE_OAUTH_CLIENT_ID and GOOGLE_OAUTH_CLIENT_SECRETGoogle sign-in is hidden.
Persistent sessionsSESSION_SECRETDevelopment generates a random worker-local secret. Restarting or reloading the worker signs you out. Production requires a configured secret.
ShopifySHOPIFY_PRIVATE_STOREFRONT_TOKENThe shop shows an unconfigured state with a link to the live shop.
Workers AICLOUDFLARE_API_TOKEN, plus CLOUDFLARE_ACCOUNT_ID to use your own accountRemote bindings are disabled. The included chat model is unavailable. Local R2, Durable Objects, and Workflows still use the local emulator.
TanChat and connected accountsDatabase, sign-in, chat access, and ENCRYPTION_KEY of at least 32 charactersPrivate chat and encrypted connected-account storage are unavailable. Provider API keys can be added in chat settings once chat is configured.
AI GatewayAI_GATEWAY_ACCOUNT_ID, AI_GATEWAY_ID, AI_GATEWAY_TOKENConfigured providers connect directly.
KodyKODY_ORIGIN and ENCRYPTION_KEY, then connect an accountKody actions require a connected account.
NotificationsDISCORD_WEBHOOK_URL and/or RESEND_API_KEYThe corresponding notification transport is disabled.
Server error reportingSENTRY_DSNLocal error reporting is disabled. Browser reporting and analytics only run in production.
Kapa docs assistantVITE_KAPA_INTEGRATION_ID and optional VITE_KAPA_SOURCE_GROUP_IDSThe hosted docs assistant is unavailable.
WebContainer runtimeVITE_WEBCONTAINER_API_KEY where required by the runtimeOther Builder runtimes remain available.

For a database you own, set DATABASE_URL and run pnpm db:migrate. OAuth apps must permit the local callback URL, http://localhost:3000/api/auth/callback/github or /google. Use a persistent session secret when testing saved sessions or encrypted site API keys.

Cloudflare's included model makes real remote requests and can incur usage charges once a Cloudflare API token is supplied. Local storage stays in .wrangler/state. Production bindings and deployment configuration remain in wrangler.jsonc.

Local Setup

The documentation for all TanStack projects (except React Charts) is hosted on tanstack.com. Doc pages are fetched from GitHub. In development, a local copy takes precedence when available. You only need the additional repositories if you're editing their docs.

Create a tanstack parent directory and clone this repo alongside the projects:

mkdir tanstack && cd tanstack
git clone git@github.com:TanStack/tanstack.com.git
git clone git@github.com:TanStack/query.git
git clone git@github.com:TanStack/router.git
git clone git@github.com:TanStack/table.git

Your directory structure should look like this:

tanstack/
   ├── tanstack.com/
   ├── query/
   ├── router/
   └── table/

[!WARNING] Directory names must match repo names exactly (e.g., query not tanstack-query). The app finds docs by looking for sibling directories by name.

Editing Docs

To edit docs for a project, make changes in its docs/ folder (e.g., ../form/docs/) and visit http://localhost:3000/form/latest/docs/overview to preview.

[!NOTE] Updated pages need to be manually reloaded in the browser.

[!WARNING] Update the project's docs/config.json if you add a new doc page!

Get Involved

Explore the TanStack Ecosystem

… and more at TanStack.com »

TanChat alpha access

TanChat is invite-only, independent of Builder access. Signing in to TanStack does not unlock it. Admins and TanStack maintainers with a linked GitHub account have automatic access and unlimited invites. Maintainer identity comes from the verified GitHub account ID and the site's maintainer catalog, not an editable profile name.

Other users unlock TanChat by redeeming a single-use invite and receive three invites to share. Issuing a link consumes one invite, even if the link expires unused. Links expire after seven days. Account settings links to /chat-access, where users can create and copy invites. The main site menu links to TanChat, and accounts without access see the invite page.

Migration 0039_tanchat_invites adds grants and hashed invite tokens. Server functions and chat HTTP endpoints enforce access independently of the UI. Quota checks lock the issuer account, and redemption locks the invite while granting access and consuming it in one transaction. Invite grants are stored in whichever database you configure. Local development without a database has no invite or account state.

Significant stargazers

Jiahan Chen

1,855 followers · starred Jul 2026

Tim Kevin Oxley

1,393 followers · starred Oct 2024

Felix Schneider

68 followers · starred Jun 2026

Théo LUDWIG

125 followers · starred Jul 2026