โ All frameworks Dev Time Performance
Measured using pnpm on GitHub Actions (ubuntu-latest, Node 24) based on the
starter project set up by each framework's CLI.
| Prod Deps | Dev Deps | Dup. Deps | Size | Size (Prod Only) | Graph |
| 13 | 11 | 14 | 234.77MB | 201.88MB | View |
| Metric | Avg | Min | Max |
| Install | 2.55s | 2.41s | 2.74s |
| Cold Build | 8.55s | 8.13s | 9.89s |
| Warm Build | 8.19s | 8.13s | 8.26s |
Build output size: 2.05MB
Duplicate Dependencies
14 duplicate dependencies
detected across this starter's node_modules.
View 14 duplicate dependencies
- lru-cache
[duplicate dependency] lru-cache has 2 installed versions:
11.2.6 via the following 4 package(s) unstorage@2.0.0-alpha.5, @asamuzakjp/dom-selector@6.8.1, @asamuzakjp/css-color@4.1.2, cssstyle@5.3.7
5.1.1 via the following 1 package(s) @babel/helper-compilation-targets@7.28.6
๐ก Suggestions
- Consider standardizing on version 11.2.6 as this version is the most commonly used.
- Consider upgrading consuming packages as this may resolve this duplicate version.
- @babel/code-frame
[duplicate dependency] @babel/code-frame has 2 installed versions:
7.27.1 via the following 1 package(s) @tanstack/start-plugin-core@1.145.3
7.29.0 via the following 4 package(s) @babel/core@7.29.0, @babel/traverse@7.29.0, @babel/template@7.28.6, @testing-library/dom@10.4.1
๐ก Suggestions
- Consider standardizing on version 7.29.0 as this version is the most commonly used.
- Consider upgrading consuming packages as this may resolve this duplicate version.
- js-tokens
[duplicate dependency] js-tokens has 2 installed versions:
4.0.0 via the following 2 package(s) @babel/code-frame@7.29.0, @babel/code-frame@7.27.1
9.0.1 via the following 1 package(s) strip-literal@3.1.0
๐ก Suggestions
- Consider standardizing on version 4.0.0 as this version is the most commonly used.
- Consider upgrading consuming packages as this may resolve this duplicate version.
- @tanstack/devtools-client
[duplicate dependency] @tanstack/devtools-client has 2 installed versions:
0.0.3 via the following 1 package(s) @tanstack/devtools@0.7.0
0.0.5 via the following 1 package(s) @tanstack/devtools-vite@0.3.12
๐ก Suggestions
- Consider upgrading consuming packages as this may resolve this duplicate version.
- @tanstack/devtools-event-client
[duplicate dependency] @tanstack/devtools-event-client has 2 installed versions:
0.3.5 via the following 1 package(s) @tanstack/devtools-client@0.0.3
0.4.0 via the following 1 package(s) @tanstack/devtools-client@0.0.5
๐ก Suggestions
- Consider upgrading consuming packages as this may resolve this duplicate version.
- picomatch
[duplicate dependency] picomatch has 2 installed versions:
4.0.3 via the following 6 package(s) fdir@6.5.0, vite@7.3.0, tinyglobby@0.2.15, unplugin@2.3.11, @tanstack/devtools-vite@0.3.12, vitest@3.2.4
2.3.1 via the following 2 package(s) anymatch@3.1.3, readdirp@3.6.0
๐ก Suggestions
- Consider standardizing on version 4.0.3 as this version is the most commonly used.
- Consider upgrading consuming packages as this may resolve this duplicate version.
- @tanstack/router-utils
[duplicate dependency] @tanstack/router-utils has 2 installed versions:
1.158.0 via the following 1 package(s) @tanstack/react-start@1.145.3
1.143.11 via the following 3 package(s) @tanstack/router-generator@1.145.2, @tanstack/router-plugin@1.145.2, @tanstack/start-plugin-core@1.145.3
๐ก Suggestions
- Consider standardizing on version 1.143.11 as this version is the most commonly used.
- Consider upgrading consuming packages as this may resolve this duplicate version.
- source-map
[duplicate dependency] source-map has 2 installed versions:
0.7.6 via the following 1 package(s) @tanstack/router-generator@1.145.2
0.6.1 via the following 1 package(s) recast@0.23.11
๐ก Suggestions
- Consider upgrading consuming packages as this may resolve this duplicate version.
- @rolldown/pluginutils
[duplicate dependency] @rolldown/pluginutils has 2 installed versions:
1.0.0-beta.40 via the following 1 package(s) @tanstack/start-plugin-core@1.145.3
1.0.0-beta.53 via the following 1 package(s) @vitejs/plugin-react@5.1.2
๐ก Suggestions
- Consider upgrading consuming packages as this may resolve this duplicate version.
- srvx
[duplicate dependency] srvx has 2 installed versions:
0.10.1 via the following 3 package(s) @tanstack/start-plugin-core@1.145.3, crossws@0.4.4, nitro@3.0.1-alpha.2
0.11.4 via the following 1 package(s) h3@2.0.1-rc.14
๐ก Suggestions
- Consider standardizing on version 0.10.1 as this version is the most commonly used.
- Consider upgrading consuming packages as this may resolve this duplicate version.
- parse5
[duplicate dependency] parse5 has 2 installed versions:
7.3.0 via the following 3 package(s) cheerio@1.2.0, parse5-htmlparser2-tree-adapter@7.1.0, parse5-parser-stream@7.1.2
8.0.0 via the following 1 package(s) jsdom@27.4.0
๐ก Suggestions
- Consider standardizing on version 7.3.0 as this version is the most commonly used.
- Consider upgrading consuming packages as this may resolve this duplicate version.
- whatwg-mimetype
[duplicate dependency] whatwg-mimetype has 2 installed versions:
4.0.0 via the following 2 package(s) cheerio@1.2.0, jsdom@27.4.0
5.0.0 via the following 1 package(s) data-urls@6.0.1
๐ก Suggestions
- Consider standardizing on version 4.0.0 as this version is the most commonly used.
- Consider upgrading consuming packages as this may resolve this duplicate version.
- entities
[duplicate dependency] entities has 3 installed versions:
4.5.0 via the following 1 package(s) dom-serializer@2.0.0
7.0.1 via the following 1 package(s) htmlparser2@10.1.0
6.0.1 via the following 2 package(s) parse5@7.3.0, parse5@8.0.0
๐ก Suggestions
- Consider standardizing on version 6.0.1 as this version is the most commonly used.
- Consider upgrading consuming packages as this may resolve this duplicate version.
- h3
[duplicate dependency] h3 has 2 installed versions:
2.0.1-rc.14 via the following 1 package(s) nitro@3.0.1-alpha.2
2.0.1-rc.7 via the following 0 package(s)
๐ก Suggestions
- Consider upgrading consuming packages as this may resolve this duplicate version.
Runtime Performance
SSR Performance
Measured on GitHub Actions (ubuntu-latest, Node 24) using custom SSR
benchmark apps.
| Framework | Ops/sec | Avg Latency | Body Size | Duplication |
| Baseline HTML | 706 | 1.417ms | 96.81kb | 1x |
| TanStack Start | 185 | 5.395ms | 193.53kb | 2x |
Methodology
- Each framework renders a table of 1000 rows with two UUID columns
-
Mock HTTP requests bypass TCP overhead for accurate rendering measurement
- Data is loaded asynchronously to simulate real-world data fetching
-
Duplication factor indicates how many times each UUID appears in the
response (1x = optimal, 2x = includes hydration payload)
-
Benchmarks run for 10 seconds using tinybench
-
Astro, Nuxt, and SvelteKit handle Node.js HTTP requests natively. React
Router, SolidStart, and TanStack Start use Web APIs internally, so
benchmarks include the cost of their Node.js adapter layers (
@react-router/node, h3, and srvx respectively)
-
Next.js defaults to React Server Components (RSC), a different rendering
model than traditional SSR. To keep the comparison fair, Next.js uses
"use client" to opt out of RSC and use traditional SSR + hydration like most of the other
frameworks
-
Inspired by eknkc/ssr-benchmark