mrkeyoor.com_
Tue 01 Sept 17:44 UTC
Webevaluationupdated 26 Aug 2026

router review

Speedy Router is a from-scratch React router that copies the public names and generated route-tree shape of TanStack Router while replacing its hot path. It is for teams that already like TanStack's typed routes, loaders, search parameters, and nested layouts but want to test a more aggressive navigation and server-rendering implementation.

+5stars / 7d
Verdict

Our Speedy Router checkout installed 193 packages, built in 9 seconds, and passed its tests in 29 seconds, so it clears the first trial gate. Use it only after profiling shows routing cost matters and an application-level parity suite passes against your routes. TanStack Router remains the safer default while Speedy Router is at v0.1.25 and an open navigation PR documents behavior regressions alongside performance work.

We ran it

Lab card: what happened when we ran routerScreenshot of router (github.com/anonrig/router)
Install✓ · 11s193 packages · 214 MB
Build✓ · 9s
Tests✓ · 29sran, no count parsed
Repo460 files~116,506 lines of source · 3.8 MB · 3 CI workflows · tests dir

Answers from our run

Does router build from source?

Dependencies installed in 11 seconds (193 packages), and the build succeeded in 9 seconds. We cloned commit 99fc68a into a clean Debian container with 3 CPUs and no project-specific setup.

Do router's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use router?

React 18 or Node 22 production applications: the README deliberately supports React 19.2 and Node 24 only.

What are the alternatives to router?

TanStack Router, React Router, Wouter. Our Speedy Router checkout installed 193 packages, built in 9 seconds, and passed its tests in 29 seconds, so it clears the first trial gate.

Setup4/511-second install, 9-second build, and passing tests
Docs4/5Detailed migration, benchmark method, limits, and publishing notes
Community2/5151 stars and one open PR in a young project
Maturity2/5v0.1.25 with a partial compatibility matrix and active regressions

Who it’s for

React 19.2 teams with measured routing or SSR CPU pressure and time for compatibility testing.
TanStack Router users who can alias packages, run both suites, and roll back quickly.
Library engineers interested in router internals, streaming SSR, typed routes, and reproducible microbenchmarks.

Who it’s NOT for

React 18 or Node 22 production applications: the README deliberately supports React 19.2 and Node 24 only.
Teams assuming full TanStack parity: the project says it runs a modified subset of TanStack tests, not the full monorepo, end-to-end suite, or TypeScript-version matrix.
Apps depending on bot-tailored SSR by default: Speedy Router streams every request at shell readiness unless the caller explicitly marks a bot.
Risk-averse migrations using relative parameter links or navigation blockers: open pull request 156 describes regressions in those paths while restoring a faster default graph.

Setup reality

Our Node 22 sandbox installed 193 pnpm packages in 11 seconds and used 214 MB. The build passed in 9 seconds, and the available test command passed in 29 seconds. The 3.8 MB monorepo contained 460 files and about 116,506 source lines.

Published use needs React and React DOM 19.2 plus Node 24 according to the README. Migration aliases up to 4 TanStack package names to Speedy Router packages, while file-based routing also swaps the plugin. No credentials or external service are required.

The workspace has 3 CI workflows, a tests directory, and no Dockerfile. Our successful Node 22 checks do not override the declared Node 24 production requirement. Compatibility is intentionally narrower than TanStack's full test and TypeScript matrix.

Speedy Router trades compatibility breadth for a faster hot path

Speedy Router keeps the TanStack Router vocabulary: createRouter, Link, Outlet, loaders, typed parameters, nested routes, and generated route trees. The implementation is new rather than forked. Existing applications can alias TanStack package names to four Speedy packages, including the Vite plugin, which lowers the cost of a trial. It does not make the two projects interchangeable without testing.

The README sets hard floors at React 19.2 and Node 24. It also says the workspace runs first-party tests plus copied TanStack history, type, core, load, preload, SSR, and React-runtime cases. That list is substantial, but the authors explicitly exclude TanStack's full monorepo, end-to-end coverage, and TypeScript-version matrix. Teams with unusual blockers, masks, search middleware, or SSR adapters need their own parity suite.

Our 9-second build makes an application trial cheap

We cloned commit 99fc68a into a fresh unprivileged Debian container with 3 CPUs and 8 GB of RAM. Pnpm installed 193 packages in 11 seconds and used 214 MB on disk. The build succeeded in 9 seconds, and the available tests succeeded in 29 seconds. The 3.8 MB checkout contained 460 files and roughly 116,506 source lines.

Our image used Node 22 even though the package documentation requires Node 24. Install, build, and tests still completed, which is useful evidence about the measured commands but not a support promise. Production should follow the declared engine until maintainers say otherwise. The monorepo has 3 CI workflows and a tests directory, with no Dockerfile because this is a package family rather than a standalone service.

What happened when we ran it

Our sandbox completed all three measured steps in 49 seconds combined. Installation succeeded, compilation succeeded, and the test command returned success. The supplied measurement does not include a parsed test count, browser test result, benchmark run, audit result, or bundle measurement. We therefore cannot use it to confirm the README's performance table or compatibility beyond the commands that passed.

That distinction matters because a router can compile while changing navigation semantics. Before an alias switch, run the same application tests against TanStack and Speedy Router. Cover direct loads, back and forward navigation, blocked transitions, stale loaders, search serialization, relative links, hydration, streaming, error boundaries, and route generation. Our 29-second test result is a good invitation to evaluate, not a substitute for that application work.

The published benchmark is reproducible but still a microbenchmark

The README reports same-machine Node loops and provides pnpm bench:compare. Its headline compares Speedy Router with published TanStack packages under matching loader-call counts and default staleTime: 0. It also spells out what is absent: no browser, React render, HTTP server, HTML, lazy component, or loader I/O. That disclosure makes the numbers more useful because readers can see the boundary.

It also shows a tradeoff. The README's size table says Speedy Router's initial React and core graphs are larger after gzip than TanStack's comparison graphs. Some coordinator and SSR code arrives through dynamic imports, and optional features can tree-shake away, but the baseline is not a bundle-size win. Profile the application metric you care about. Faster in-memory matching is valuable only when routing owns enough of the request or interaction budget.

Open PR 156 describes real navigation regressions

The only open item returned by GitHub was pull request 156. Its description says an earlier default-graph change slowed typed navigation and caused relative links to leave $postId in URLs. It also reports StrictMode transition wrapping and blocker behavior problems. The proposed fix restores fast paths while accepting a large-route-tree matching regression. That is precisely the kind of performance versus behavior exchange a router maintainer must handle carefully.

The pull request was still open when fetched, so its fixes are not part of the reviewed default branch merely because the discussion is detailed. Applications using relative destinations, parameters, React StrictMode, or navigation blockers should create regression cases before adoption. A library can pass its selected upstream tests while missing a combination exercised by a real route graph. Here, the open work supplies a useful checklist.

Streaming SSR makes the crawler policy your responsibility

Speedy Router flushes every SSR stream at React's shell-ready event by default and does not inspect the user agent. TanStack can wait for complete output for crawlers. Speedy Router instead asks callers to pass isBot: true or a predicate when they want buffered HTML. That removes user-agent parsing from every request, but the application must correctly identify whichever crawlers require complete output.

This is neither universally better nor automatically safe. Shell streaming can improve first-byte behavior, while incomplete initial HTML can affect crawlers, link unfurlers, or systems that do not execute the rest of the stream as expected. Test the actual HTML received by search bots and social preview clients. The route library has intentionally moved that policy decision into your server adapter.

v0.1.25 is suitable for a measured canary

Release v0.1.25 was published on August 21, 2026, the same date as the last repository push. GitHub showed 151 stars and 1 open issue or pull request, which was pull request 156. The release changed default-graph modules to reduce unused client code. Frequent performance-oriented releases are encouraging for experimenters, though a v0.1 series should be pinned and tested before every upgrade.

Speedy Router has done more homework than most replacement routers: its limitations are written down, benchmarks are runnable, and our install, build, and tests all passed. The narrow platform target and open navigation regressions keep TanStack Router as our default recommendation. Put Speedy behind a canary or an alias branch, measure real navigation and SSR, and keep rollback to the upstream packages boring.

Alternatives

ProjectWhat it isPick it when
TanStack Router gh↗The original type-safe router whose API and generated files Speedy Router targets.pick this instead when ecosystem support and full upstream behavior matter more than the reported hot-path gains.
React Router gh↗The established declarative React router with framework and data-routing modes.pick this instead when team familiarity, documentation, and broad production history outweigh type-level TanStack compatibility.
WouterA small React and Preact router focused on a minimal client bundle.pick this instead when route needs are simple and bundle size matters more than loaders, generated trees, or SSR machinery.

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. Speedy Router README
  2. Speedy Router v0.1.25
  3. Default-graph navigation restoration PR

More web reviews

axios · super-productivity · Graphite · fastify · tabler · go-zero · the whole board →