SvelteKit
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 | Size | Size (Prod Only) | Graph |
|---|---|---|---|---|
| 0 | 7 | 61.82MB | 0.02MB | View |
| Metric | Avg | Min | Max |
|---|---|---|---|
| Install | 1.61s | 1.56s | 1.65s |
| Cold Build | 4.08s | 3.91s | 4.35s |
| Warm Build | 3.94s | 3.85s | 4.08s |
Build output size: 1.29MB
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.416ms | 96.81kb | 1x |
| SvelteKit | 254 | 3.931ms | 183.55kb | 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