mrkeyoor.com_
Fri 16 Oct 20:41 UTC
Webevaluationupdated 26 Aug 2026

router review

TanStack Router is a type-safe routing and data-loading library for React, Solid, and Vue applications, with validated search parameters, nested layouts, caching, prefetching, and error boundaries. The same repository also contains TanStack Start, a full-stack framework that adds server rendering, streaming, server functions, and deployment builds.

+36stars / 7d
Verdict

Our TanStack Router run built in 13 seconds and reached 870 passing tests with 0 failures, but the full command still had not finished at the 900-second cap after a 2,365-package install. Use Router when type-safe URLs and search state will prevent real application bugs, and budget for its monorepo and abstractions. Treat TanStack Start as a separate, faster-moving adoption decision with route-level production checks after every package upgrade.

We ran it

Lab card: what happened when we ran routerScreenshot of router (tanstack.com/router)
Install✓ · 183s2365 packages · 2073 MB
Build✓ · 13s
Tests✗ timed out · 900s870 passed · 0 failed · 1 skipped of 871 (vitest)
Repo11970 files~709,904 lines of source · 42.1 MB · 8 CI workflows

Answers from our run

Does router build from source?

Dependencies installed in 183 seconds (2365 packages), and the build succeeded in 13 seconds. We cloned commit 9f8990b into a clean Debian container with 3 CPUs and no project-specific setup.

Do router's tests pass?

Yes: 870 of 871 passed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Who should not use router?

Small React or Preact sites where a tiny router is enough: issue 7090 reports a 29 KB increase in one Solid build.

What are the alternatives to router?

React Router, Wouter, Next.js. Our TanStack Router run built in 13 seconds and reached 870 passing tests with 0 failures, but the full command still had not finished at the 900-second cap after a 2,365-package install.

Setup2/5183-second install used 2,073 MB and tests exceeded 900 seconds
Docs4/5Dedicated Router and Start docs cover a wide API surface
Community5/514,994 stars with releases and issue work in August 2026
Maturity4/5Router is established; Start and deployment edges move quickly

Discussed on

  1. hnTanStack Router v18 points
  2. hnTanStack Router v1.04 points
  3. hnTanStack Router: modern router designed for type safety, data‑driven navigation3 points
  4. hnThe Beauty of TanStack Router3 points
  5. hnTanStack Start - Full-stack React framework powered by TanStack Router3 points

Who it’s for

TypeScript teams that want route paths, parameters, search values, loaders, and links checked together.
Applications where URL search state is part of the product rather than an untyped string.
React, Solid, or Vue developers who need nested layouts, route data, preloading, and cache invalidation.
Teams evaluating TanStack Start for a full-stack application and willing to pin its many package versions.

Who it’s NOT for

Small React or Preact sites where a tiny router is enough: issue 7090 reports a 29 KB increase in one Solid build.
Applications that must preserve repeated query keys in signed URLs today: issue 8174 reproduces them being rewritten as one JSON array parameter.
Teams treating a successful Start build as proof every route can serve: issue 8031 describes Vite exiting 0 while every SSR request returned 500.
Static sites that cannot verify every prerendered URL: issue 8120 reports a failed page being omitted while the build still exited 0.
Repositories that need a quick full validation loop: our test command was still running at the 900-second cap after 870 passes.

Setup reality

Our sandbox installed 2,365 pnpm packages in 183 seconds and used 2,073 MB. The build succeeded in 13 seconds. Tests hit the 900-second cap with 870 passed, 0 failed, and 1 skipped out of 871; the final log had moved on to an ESLint target, so the overall command did not finish.

Application setup depends on scope. Router needs a supported UI framework, TypeScript configuration, route definitions or generation, and a bundler integration. TanStack Start adds a server runtime, SSR or prerender decisions, deployment adapters, and tightly related package versions. No service credentials are required for the router itself.

This is a 42.1 MB workspace monorepo, not one small package checkout. The repository contained 11,970 files and about 709,904 source lines. Consumers install selected published packages, but contributors and teams debugging framework internals inherit a long build and test graph.

The 2,073 MB monorepo contains a router and a framework

TanStack Router makes the URL part of a TypeScript application's data model. Route paths, path parameters, search values, loader inputs, and links can share inferred types, while schemas validate search parameters arriving from outside the app. Nested layouts, route-level data, prefetching, cache invalidation, transitions, and error boundaries sit in the same layer. This is more than choosing which component renders for a pathname.

The repository also houses TanStack Start, which adds full-document server rendering, streaming, server functions, prerendering, and deployment builds. Our checkout contained 11,970 files and about 709,904 lines of source, then the workspace install occupied 2,073 MB. Buyers should separate two choices: adopting the published router in an existing app, and adopting Start as the application framework. The latter owns much more of the production path.

Typed search parameters justify the extra machinery

Search strings often become an untyped side channel for filters, pagination, OAuth state, and modal state. TanStack Router can parse them through a schema and carry the result through loaders, links, and navigation with compile-time checking. That is especially useful when several routes depend on the same structured search object and an invalid link would otherwise reach production.

The current repeated-key report shows the cost of owning serialization. Issue 8174 reproduces ?a=1&a=2 becoming one percent-encoded JSON array when the router rebuilds the location. The reporter traces the change to versions including @tanstack/react-router 1.170.32 and shows signed OAuth URLs failing because the original parameter sequence is lost. Applications using repeated query keys, signed callbacks, or third-party URLs should add round-trip fixtures before upgrading.

What happened when we ran it

Our sandbox installed 2,365 pnpm packages in 183 seconds and used 2,073 MB on disk. Building commit 9f8990b succeeded in 13 seconds. The unprivileged Node 22 container had 3 CPUs, 8 GB of RAM, and no secrets. The workspace had 8 CI workflow files, no root Dockerfile, and no tests directory.

The test command timed out at our 900-second limit. Vitest had reported 870 passed, 0 failed, and 1 skipped out of 871 tests. The last output showed module-resolution checks succeeding across Node and bundler modes, then Nx starting an ESLint target for router devtools. Nothing in the supplied tail shows a stuck test or failed assertion. The precise finding is that this large validation graph did not complete within 15 minutes on our stated machine.

Router edge cases can remove the whole application tree

The library's value depends on consistent behavior between routes, hooks, links, and boundaries. Open issue 8168 reports that a route-scoped useMatch call dropped the shouldThrow: false option even though the generic hook returned undefined as requested. That is narrow, but it affects shared shells that inspect a child route while another route is active.

Issue 8123 reports a more visible failure in version 1.170.31 and current main. A route component that throws undefined, null, or an empty string can bypass every supplied error component because the boundary tests the thrown value for truthiness. The entire React tree then unmounts. Most code throws an Error, but wrappers sometimes rethrow an unexpectedly empty value. Add a browser test proving the root error view survives both normal errors and malformed rethrows.

Start needs artifact checks beyond an exit code

TanStack Start uses the router as its base and adds server output, which creates a different failure class. Issue 8031 describes a Vite 8.2 and Nitro build that exited successfully but emitted an SSR module with an undeclared export. Every request then returned 500. The reporter found that an earlier Vite and Rolldown combination worked and added a post-build module check to CI.

Prerendering has a similar reported gap. Issue 8120 uses a 774-page site and shows a loader failure being logged, a promised retry never occurring, the page missing from output, and the build exiting 0. These are reports against specific package combinations, not proof that every Start build is broken. They do support two release checks: start the built server and request representative routes, then compare every expected static URL with the emitted files.

Current releases move several packages at once

The August 22, 2026 release published separate versions for Router, Start, plugins, clients, servers, and framework adapters. It included @tanstack/react-router 1.170.32 and @tanstack/router-core 1.171.27 rather than one repository-wide version. That package independence allows focused releases, while consumers must check which combinations their lockfile selected.

GitHub recorded a push on August 26, 2026, and listed 14,994 stars with 585 open issues and pull requests. Same-day issue updates show active investigation, and the latest release was four days earlier. TanStack Router is a credible choice for a TypeScript application with demanding URL state. The 13-second build is encouraging, but the 900-second incomplete validation run and Start reports make version pinning plus end-to-end route checks part of adoption.

Alternatives

ProjectWhat it isPick it when
React Router gh↗The widely used declarative router and framework foundation for React applications.pick this instead when ecosystem familiarity and conventional React routing matter more than TanStack's search-param typing.
WouterA small routing library for React and Preact with a compact API and bundle.pick this instead when the application needs a few routes and bundle size matters more than loaders, generated types, or validated search state.
Next.js gh↗A React framework with file routing, server rendering, data APIs, and deployment conventions.pick this instead when you want an established full-stack React framework and can accept its routing model.

What people are saying

  1. [velocity-scout] wang2122/sprix-sage-router
  2. [producthunt] Router by Ramp
  3. [techcrunch-ai] Ramp launches its own AI model router, called Router
  4. [velocity-scout] anonrig/router
  5. [github-trending] vllm-project/semantic-router
  6. [github-trending] TanStack/router

Sources

  1. TanStack Router repository and README
  2. TanStack Router August 22 release
  3. Repeated query parameter report
  4. Falsy error-boundary report
  5. SSR output failure report
  6. Prerender exit-code report
  7. Solid bundle-size report

More web reviews

dioramas · elpis · deepseek-whale-girl · floorplan-3d · taro · driver.js · the whole board →