VercelNext.jsReactTurborepoPrismaTailwindTypeScripttRPCBunDrizzleVercelNext.jsReactTurborepoPrismaTailwindTypeScripttRPCBunDrizzle
~/deploy$next build --profile

Next.js internals, from production.

Benchmark data, server component deep-dives, and ISR war stories pulled from real deploys. No opinions — only numbers and the post-mortems that explain them.

App RouterEdge MiddlewareISRHydrationBundle Analysis
Logo
Deploy
next.js internals blog
live
// builds analyzed
4,217
across 3 major versions
Avg TTFB
38ms
-42% vs v13
Bundle P95
94kb
-31% vs v13
Lighthouse
97
+12 vs v13
Build time
23s
-58% vs v13
01 /Benchmark Data

Real numbers from real deploys.

Click any row to read the post that produced this data. All metrics measured on identical hardware across 50 builds per configuration.

Metricv13v14v15
PagesAppPagesAppPagesApp
Time to First Byte
Network
89ms112ms61ms54ms44ms38ms
JS Bundle (P95)
Performance
187kb162kb141kb118kb108kb94kb
Cold Build Time
DX
78s94s52s58s31s23s
Lighthouse Score
Quality
82/10079/10088/10091/10093/10097/100
Hydration Time
Performance
340ms280ms220ms170ms140ms95ms
First Contentful Paint
Network
1.4s1.6s1.0s0.9s0.7s0.6s
Best in class
Acceptable
Needs attention
Click row to read source post
02 /Most Read This Week

What engineers are reading.

All posts →
Debug
48.2k views18 min

Debugging Hydration Mismatches at Scale: A Production Playbook

You've seen the error: "Hydration failed because the initial UI does not match." We traced 23 unique causes across 8 production apps. Here's the full taxonomy.

hydrationRSCdebugging
Feb 24, 2026
Internals
31.7k views14 min

ISR Cache Invalidation: The Complete Mental Model

revalidatePath, revalidateTag, and on-demand ISR — when each fires, what it invalidates, and the edge cases that will bite you at 3 AM.

ISRcachingApp Router
Feb 20, 2026
Migration
27.4k views22 min

CRA to Next.js 15: A 90-Day Migration Log

We migrated a 180k-line CRA codebase. Week-by-week notes, blockers, and the three decisions we'd make differently.

CRAmigrationApp Router
Feb 17, 2026
Edge
19.8k views11 min

Edge Middleware in Production: What No One Tells You

The 1MB limit, the Node.js API gaps, the cold start behavior — and why we still use it for auth.

middlewareedgeauth
Feb 14, 2026
Performance
16.3k views9 min

Server Actions vs API Routes: Benchmark Showdown

We measured latency, bundle impact, and DX across 12 mutation patterns. The answer depends on your data layer.

server actionsAPI routes
Feb 11, 2026
Performance
14.1k views13 min

Streaming Suspense Boundaries: Measuring the Real Gains

PPR and streaming promise faster perceived load. We measured LCP, TBT, and INP across 6 page architectures.

streamingsuspensePPR
Feb 8, 2026
03 /Before / After

CRA → Next.js 15.
The numbers don't lie.

A 180k-line SaaS dashboard migrated over 90 days. These are the production metrics, measured 30 days post-migration.

// case study
Linktree-scale SaaS
180k lines of TypeScript
240 routes, 14 API handlers
90-day migration window
Zero downtime deploy
Read the full case study →
Cold Build
CRA / v13
0s
Next.js 15
0s
76% faster
TTFB (P95)
CRA / v13
0ms
Next.js 15
0ms
88% faster
Bundle Size
CRA / v13
0kb
Next.js 15
0kb
67% faster
Lighthouse
CRA / v13
0/100
Next.js 15
0/100
37% better
FCP
CRA / v13
0s
Next.js 15
0s
71% faster
Hydration
CRA / v13
0ms
Next.js 15
0ms
80% faster
04 /Companion App

Every benchmark.
Searchable offline.

The Deploy app puts every migration guide, benchmark table, and code snippet in your pocket — no internet required.

Offline reading
Every post, cached and searchable without a connection.
Code snippet copy
One tap to copy any code block. Syntax highlighted.
Build-time alerts
Get notified when a new benchmark post drops.

Get the Companion App

Available on iOS, Android, and Desktop.

Deploy · App Store
search posts, benchmarks...
ISR Cache Invalidation
Internals
31.7k
Hydration Mismatches
Debug
48.2k
CRA Migration Log
Migration
27.4k
All posts available offline
Deploy for iPhone
Requires iOS 16+