Conversation
⚡ Flight Protocol BenchmarkCommit: Serialization (
|
| Scenario | @lazarv/rsc | webpack | vs webpack |
|---|---|---|---|
| react: minimal element | 223.3K | 32.5K | 🟢 +586.8% |
| react: shallow wide (1000) | 2.2K | 352 | 🟢 +524.4% |
| react: deep nested (100) | 17.3K | 5.9K | 🟢 +190.4% |
| react: product list (50) | 6.7K | 2.1K | 🟢 +224.1% |
| react: large table (500x10) | 262 | 85 | 🟢 +206.9% |
| data: primitives | 178.5K | 42.7K | 🟢 +318.4% |
| data: large string (100KB) | 6.7K | 6.7K | ⚪ +0.1% |
| data: nested objects (20) | 61.0K | 27.9K | 🟢 +118.6% |
| data: large array (10K) | 128 | 128 | ⚪ +0.0% |
| data: Map & Set | 12.0K | 5.9K | 🟢 +104.0% |
| data: Date/BigInt/Symbol | 165.8K | 45.2K | 🟢 +267.1% |
| data: typed arrays | 37.2K | 13.2K | 🟢 +181.5% |
| data: mixed payload | 9.2K | 4.3K | 🟢 +114.2% |
Prerender (prerender)
| Scenario | @lazarv/rsc ops/s | mean |
|---|---|---|
| react: minimal element | 229.5K | 4.4 µs |
| react: shallow wide (1000) | 2.0K | 493.7 µs |
| react: deep nested (100) | 15.9K | 62.8 µs |
| react: product list (50) | 5.9K | 169.8 µs |
| react: large table (500x10) | 265 | 3.78 ms |
| data: primitives | 177.8K | 5.6 µs |
| data: large string (100KB) | 660 | 1.51 ms |
| data: nested objects (20) | 61.6K | 16.2 µs |
| data: large array (10K) | 124 | 8.09 ms |
| data: Map & Set | 12.3K | 81.5 µs |
| data: Date/BigInt/Symbol | 180.2K | 5.6 µs |
| data: typed arrays | 624 | 1.60 ms |
| data: mixed payload | 8.2K | 122.6 µs |
Deserialization (createFromReadableStream)
| Scenario | @lazarv/rsc | webpack | vs webpack |
|---|---|---|---|
| react: minimal element | 170.6K | 147.7K | 🟢 +15.5% |
| react: shallow wide (1000) | 22.6K | 2.0K | 🟢 +1008.4% |
| react: deep nested (100) | 99.4K | 19.7K | 🟢 +404.5% |
| react: product list (50) | 50.5K | 14.5K | 🟢 +248.2% |
| react: large table (500x10) | 3.8K | 1.9K | 🟢 +95.6% |
| data: primitives | 136.6K | 134.1K | 🟢 +1.9% |
| data: large string (100KB) | 42.3K | 36.8K | 🟢 +14.8% |
| data: nested objects (20) | 80.8K | 70.8K | 🟢 +14.1% |
| data: large array (10K) | 251 | 237 | 🟢 +5.7% |
| data: Map & Set | 16.5K | 15.0K | 🟢 +9.7% |
| data: Date/BigInt/Symbol | 141.2K | 121.1K | 🟢 +16.6% |
| data: typed arrays | 61.1K | 45.5K | 🟢 +34.5% |
| data: mixed payload | 24.7K | 14.4K | 🟢 +71.4% |
Roundtrip (serialize + deserialize)
| Scenario | @lazarv/rsc | webpack | vs webpack |
|---|---|---|---|
| react: minimal element | 117.2K | 28.8K | 🟢 +306.8% |
| react: shallow wide (1000) | 1.8K | 282 | 🟢 +538.8% |
| react: deep nested (100) | 15.0K | 4.7K | 🟢 +216.7% |
| react: product list (50) | 5.7K | 1.7K | 🟢 +240.0% |
| react: large table (500x10) | 259 | 90 | 🟢 +189.4% |
| data: primitives | 94.8K | 35.0K | 🟢 +170.9% |
| data: large string (100KB) | 6.6K | 6.5K | 🟢 +1.9% |
| data: nested objects (20) | 38.3K | 21.1K | 🟢 +81.5% |
| data: large array (10K) | 83 | 81 | 🟢 +3.4% |
| data: Map & Set | 6.9K | 4.4K | 🟢 +58.3% |
| data: Date/BigInt/Symbol | 92.4K | 32.2K | 🟢 +187.2% |
| data: typed arrays | 28.3K | 12.3K | 🟢 +129.2% |
| data: mixed payload | 6.7K | 3.3K | 🟢 +99.0% |
Legend & methodology
Indicators: 🟢 > 1% faster | 🔴 > 1% slower | ⚪ within noise margin
vs webpack: compares @lazarv/rsc against react-server-dom-webpack within the same run.
vs baseline: compares @lazarv/rsc against the previous main branch run.
Values shown are operations/second (higher is better). Each scenario runs for at least 100 iterations with warmup.
Benchmarks run on GitHub Actions runners (shared infrastructure) — expect ~5% variance between runs. Consistent directional changes across multiple scenarios are more meaningful than any single number.
⚡ Benchmark Results
Legend🟢 > 1% improvement | 🔴 > 1% regression | ⚪ within noise margin Benchmarks run on GitHub Actions runners (shared infrastructure) — expect ~5% variance between runs. Consistent directional changes across multiple routes are more meaningful than any single number. |
Automated daily upgrade of Vite, Rolldown, and/or Vitest to the latest available versions.
Rolldown:
1.0.0-rc.15→1.0.0-rc.16Updated locations
packages/react-server/package.json—vite,rolldowntest/package.json—vite,rolldown,vitest,@vitest/uipackages/rsc/package.json—vitest,@vitest/*packages/create-react-server/test/package.json—vitestpackage.json— allpnpm.overridesfor Vitepnpm-lock.yamlSmoke test
hello worldtest passed ✅hello worldtest passed ✅