Dev Time Stats
Dev Time benchmarks use each meta-framework’s starter-* package.
Each starter follows its framework’s CLI or documented setup, with the selected options and adjustments recorded in the methodology.
See Default Benchmark Setup for the shared benchmark environment.
Dependency Counts
Section titled “Dependency Counts”Methodology: Dependency Counts.
Measuring a meta-framework’s dependencies isn’t as straightforward as you might think. You could:
- Measure just the meta-framework package itself
- Maybe a full project setup
Both approaches have flaws. Some meta-frameworks need many other packages to work. A full project setup can include more packages than necessary.
To provide a clearer picture, we run the dependency-count tests three times, starting small and expanding in scope. In this order, we:
- Start with the meta-framework package itself, for example,
@sveltejs/kit - We then expand this to the meta-framework and its first-party packages. Looking at
@sveltejs/kitagain, this means any package maintained by the meta-framework authors that’s needed to run a project, for example, thesveltepackage. - Finally, we count the dependencies for the entire
starter-*project. Their CLI or documentation recommends this setup by default, so this is the default most people will start with.
Core Package Dependencies
Section titled “Core Package Dependencies”The meta-framework package itself, for example, @sveltejs/kit.
| Framework | Deps | Dev | Prod | Graph |
|---|---|---|---|---|
| Astro | 77 | 25 | 52 | View |
| Next.js | 6 | 0 | 6 | View |
| Nuxt | 79 | 13 | 66 | View |
| Pracht | 5 | 2 | 3 | View |
| React Router | 47 | 24 | 23 | View |
| SolidStart | 29 | 4 | 25 | View |
| SvelteKit | 23 | 15 | 8 | View |
| TanStack Start | 23 | 14 | 9 | View |
| Framework | Dependency count |
|---|---|
| Pracht | 5 |
| Next.js | 6 |
| SvelteKit | 23 |
| TanStack Start | 23 |
| SolidStart | 29 |
| React Router | 47 |
| Astro | 77 |
| Nuxt | 79 |
The chart includes a dotted median reference line calculated from the visible framework values.
| Framework | Dependency count |
|---|---|
| Next.js | 0 |
| Pracht | 2 |
| SolidStart | 4 |
| Nuxt | 13 |
| TanStack Start | 14 |
| SvelteKit | 15 |
| React Router | 24 |
| Astro | 25 |
The chart includes a dotted median reference line calculated from the visible framework values.
| Framework | Dependency count |
|---|---|
| Pracht | 3 |
| Next.js | 6 |
| SvelteKit | 8 |
| TanStack Start | 9 |
| React Router | 23 |
| SolidStart | 25 |
| Astro | 52 |
| Nuxt | 66 |
The chart includes a dotted median reference line calculated from the visible framework values.
First-Party Package Dependencies
Section titled “First-Party Package Dependencies”Looking at a meta-framework’s first-party packages. For @sveltejs/kit, this means packages maintained by the meta-framework authors that are needed to run a project, for example, svelte.
| Framework | Deps Dev / Prod | All Deps | Dup. Deps | Graph |
|---|---|---|---|---|
| Astro | 1 / 1 | 335 | 16 | View |
| Next.js | 1 / 1 | 388 | 12 | View |
| Nuxt | 0 / 1 | 611 | 55 | View |
| Pracht | 2 / 2 | 218 | 4 | View |
| React Router | 1 / 3 | 223 | 5 | View |
| SolidStart | 0 / 4 | 210 | 4 | View |
| SvelteKit | 5 / 0 | 108 | 1 | View |
| TanStack Start | 1 / 7 | 195 | 3 | View |
| Framework | Dependency count |
|---|---|
| SvelteKit | 108 |
| TanStack Start | 195 |
| SolidStart | 210 |
| Pracht | 218 |
| React Router | 223 |
| Astro | 335 |
| Next.js | 388 |
| Nuxt | 611 |
The chart includes a dotted median reference line calculated from the visible framework values.
| Framework | Dependency count |
|---|---|
| Nuxt | 0 |
| SolidStart | 0 |
| Astro | 1 |
| Next.js | 1 |
| React Router | 1 |
| TanStack Start | 1 |
| Pracht | 2 |
| SvelteKit | 5 |
The chart includes a dotted median reference line calculated from the visible framework values.
| Framework | Dependency count |
|---|---|
| SvelteKit | 0 |
| Astro | 1 |
| Next.js | 1 |
| Nuxt | 1 |
| Pracht | 2 |
| React Router | 3 |
| SolidStart | 4 |
| TanStack Start | 7 |
The chart includes a dotted median reference line calculated from the visible framework values.
| Framework | Dependency count |
|---|---|
| SvelteKit | 1 |
| TanStack Start | 3 |
| Pracht | 4 |
| SolidStart | 4 |
| React Router | 5 |
| Next.js | 12 |
| Astro | 16 |
| Nuxt | 55 |
The chart includes a dotted median reference line calculated from the visible framework values.
Starter Project Dependencies
Section titled “Starter Project Dependencies”Finally, we look at the complete dependency footprint of the default starter project, including third-party packages selected by its CLI or documented setup.
| Framework | Deps Dev / Prod | All Deps | Dup. Deps | node_modules | Dep Install Size | Graph |
|---|---|---|---|---|---|---|
| Astro | 2 / 1 | 335 | 16 | 204.43MB | 172.24MB | View |
| Next.js | 6 / 3 | 424 | 12 | 463.61MB | 405.32MB | View |
| Nuxt | 3 / 3 | 611 | 55 | 222.79MB | 190.59MB | View |
| Pracht | 6 / 2 | 239 | 4 | 132.56MB | 109.29MB | View |
| React Router | 9 / 6 | 250 | 6 | 108.68MB | 102.51MB | View |
| SolidStart | 1 / 6 | 242 | 5 | 128.50MB | 104.51MB | View |
| SvelteKit | 8 / 0 | 108 | 1 | 88.32MB | 92.09MB | View |
| TanStack Start | 12 / 14 | 331 | 37 | 272.60MB | 228.67MB | View |
| Framework | Dependencies |
|---|---|
| SolidStart | 1 |
| Astro | 2 |
| Nuxt | 3 |
| Next.js | 6 |
| Pracht | 6 |
| SvelteKit | 8 |
| React Router | 9 |
| TanStack Start | 12 |
The chart includes a dotted median reference line calculated from the visible framework values.
| Framework | Dependencies |
|---|---|
| SvelteKit | 0 |
| Astro | 1 |
| Pracht | 2 |
| Next.js | 3 |
| Nuxt | 3 |
| React Router | 6 |
| SolidStart | 6 |
| TanStack Start | 14 |
The chart includes a dotted median reference line calculated from the visible framework values.
| Framework | Duplicates |
|---|---|
| SvelteKit | 1 |
| Pracht | 4 |
| SolidStart | 5 |
| React Router | 6 |
| Next.js | 12 |
| Astro | 16 |
| TanStack Start | 37 |
| Nuxt | 55 |
The chart includes a dotted median reference line calculated from the visible framework values.
Node Modules Size
Section titled “Node Modules Size”Methodology: Node Modules Size.
| Framework | MB |
|---|---|
| SvelteKit | 88.32 MB |
| React Router | 108.68 MB |
| SolidStart | 128.50 MB |
| Pracht | 132.56 MB |
| Astro | 204.43 MB |
| Nuxt | 222.79 MB |
| TanStack Start | 272.60 MB |
| Next.js | 463.61 MB |
The chart includes a dotted median reference line calculated from the visible framework values.
Build and Install Times
Section titled “Build and Install Times”Methodology: Build and Install Times.
| Framework | Median Install | Min Install | Max Install | Median Cold Build | Median Warm Build |
|---|---|---|---|---|---|
| Astro | 4.71s | 1.88s | 5.27s | 0.98s | 0.93s |
| Next.js | 6.66s | 3.00s | 6.70s | 6.77s | 2.56s |
| Nuxt | 4.83s | 2.79s | 5.48s | 3.97s | 3.75s |
| Pracht | 2.29s | 1.53s | 2.87s | 0.71s | 0.72s |
| React Router | 1.46s | 1.22s | 1.70s | 1.69s | 1.72s |
| SolidStart | 1.74s | 1.48s | 2.22s | 2.93s | 2.91s |
| SvelteKit | 1.48s | 1.35s | 1.56s | 1.90s | 1.77s |
| TanStack Start | 5.80s | 2.22s | 5.85s | 2.34s | 2.10s |
| Framework | Seconds |
|---|---|
| React Router | 1.46s |
| SvelteKit | 1.48s |
| SolidStart | 1.74s |
| Pracht | 2.29s |
| Astro | 4.71s |
| Nuxt | 4.83s |
| TanStack Start | 5.80s |
| Next.js | 6.66s |
The chart includes a dotted median reference line calculated from the visible framework values.
| Framework | Seconds |
|---|---|
| Pracht | 0.71s |
| Astro | 0.98s |
| React Router | 1.69s |
| SvelteKit | 1.90s |
| TanStack Start | 2.34s |
| SolidStart | 2.93s |
| Nuxt | 3.97s |
| Next.js | 6.77s |
The chart includes a dotted median reference line calculated from the visible framework values.
| Framework | Seconds |
|---|---|
| Pracht | 0.72s |
| Astro | 0.93s |
| React Router | 1.72s |
| SvelteKit | 1.77s |
| TanStack Start | 2.10s |
| Next.js | 2.56s |
| SolidStart | 2.91s |
| Nuxt | 3.75s |
The chart includes a dotted median reference line calculated from the visible framework values.
Dev Server Startup
Section titled “Dev Server Startup”Methodology: Dev Server Startup.
| Framework | Median Start | Min Start | Max Start |
|---|---|---|---|
| Astro | 1.41s | 1.38s | 1.43s |
| Next.js | 2.23s | 2.21s | 2.83s |
| Nuxt | 2.53s | 2.43s | 2.85s |
| Pracht | 0.86s | 0.83s | 1.11s |
| React Router | 0.96s | 0.94s | 1.01s |
| SolidStart | 2.55s | 2.52s | 2.72s |
| SvelteKit | 1.28s | 1.24s | 1.36s |
| TanStack Start | 2.14s | 2.07s | 2.19s |
| Framework | Seconds |
|---|---|
| Pracht | 0.86s |
| React Router | 0.96s |
| SvelteKit | 1.28s |
| Astro | 1.41s |
| TanStack Start | 2.14s |
| Next.js | 2.23s |
| Nuxt | 2.53s |
| SolidStart | 2.55s |
The chart includes a dotted median reference line calculated from the visible framework values.
Core-JS Polyfills
Section titled “Core-JS Polyfills”Methodology: Core-JS Polyfills.
| Framework | Core-JS detected | Matching JS files | Modules not needed by target browsers |
|---|---|---|---|
| Astro | No | — | — |
| Next.js | Yes | 110.0 KB | 302 |
| Nuxt | No | — | — |
| Pracht | No | — | — |
| React Router | No | — | — |
| SolidStart | No | — | — |
| SvelteKit | No | — | — |
| TanStack Start | No | — | — |
Browser Baseline
Section titled “Browser Baseline”Methodology: Browser Baseline.
| Framework | Baseline | Feature | Year | Features |
|---|---|---|---|---|
| Astro | — | — | — | 0 |
| Next.js | High | — | 2022 | 47 |
| Nuxt | High | — | 2023 | 42 |
| Pracht | High | — | 2020 | 37 |
| React Router | High | — | 2022 | 44 |
| SolidStart | High | — | 2020 | 33 |
| SvelteKit | Limited | temporal | — | 48 |
| TanStack Start | Limited | temporal | — | 49 |
Minimum Node Version
Section titled “Minimum Node Version”Methodology: Minimum Node Version.
| Framework | Min Node | Set by |
|---|---|---|
| Astro | v22.22.0 | @astrojs/prism, @astrojs/telemetry, astro |
| Next.js | v20.19.0 | eslint-visitor-keys |
| Nuxt | v22.22.3 | @nuxt/nitro-server, @nuxt/vite-builder, @nuxt/vite-server, cssnano, nuxt, postcss-calc |
| Pracht | v22.18.0 | @pracht/adapter-node, @pracht/capabilities, @pracht/cli, @pracht/core, @pracht/preact-ssr-precompile, @pracht/vite-plugin |
| React Router | v22.22.0 | @react-router/dev, @react-router/express, @react-router/node, @react-router/serve, react-router |
| SolidStart | v24.0.0 | @solidjs/start, starter-solid-start |
| SvelteKit | v22.17.0 | @sveltejs/kit |
| TanStack Start | v22.22.2 | @asamuzakjp/css-color, @asamuzakjp/dom-selector, jsdom, w3c-xmlserializer |