0Pricing
React Academy · Lesson

Measuring Streaming Impact: FCP, TTI, and LCP

Benchmark the real-world performance difference of streaming SSR vs blocking SSR using Lighthouse and WebPageTest.

Measuring Streaming Impact: FCP, TTI, and LCP is a free React Academy lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the React Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

FCP: First Contentful Paint

FCP measures the time from navigation start to when the first piece of content (text, image, or background) is painted to the screen. Streaming improves FCP by sending the HTML shell immediately — the browser can paint the layout, navigation, and any above-fold text as soon as the first chunks arrive.

How Streaming Improves FCP

With synchronous SSR (renderToString), the browser receives no HTML until the entire render is complete. With streaming, the browser receives the HTML shell within milliseconds of the request — the layout and static content appear almost immediately, dramatically reducing FCP.

LCP: Largest Contentful Paint

LCP measures when the largest visible element in the viewport is painted — typically a hero image or a large heading. Streaming improves LCP if the LCP element is part of the shell (not inside a Suspense boundary), since the shell streams before any data-dependent sections.

Ensuring the LCP Element Is in the Shell

A key optimization is designing your page so the LCP element — the hero section, the main heading, the featured image — lives outside any Suspense boundary. If the LCP element is inside a Suspense boundary awaiting data, streaming cannot help LCP until that data resolves.

TTI: Time to Interactive

TTI measures when the page reliably responds to user input — no Long Tasks blocking the main thread. Streaming combined with selective hydration reduces TTI by spreading the hydration work over time rather than executing one large synchronous hydration task after all JavaScript downloads.

TTFB: What Streaming Doesn't Fix

Time to First Byte (TTFB) is determined by network latency and server processing time before the first byte is sent. Streaming doesn't change TTFB — that's where edge rendering helps. For streaming to improve FCP, you first need a low TTFB; otherwise you're just streaming from a slow origin.

WebPageTest for Streaming Analysis

WebPageTest's filmstrip view shows a sequence of screenshots taken every 100ms during page load. A streaming page shows the layout appearing early, then sections filling in progressively. A non-streaming page shows a blank screen followed by a sudden fully-rendered page — a clear visual difference.

Setting Up a Streaming Benchmark

A meaningful benchmark compares the same page rendered two ways: with Next.js RSC streaming enabled vs traditional synchronous SSR. Use WebPageTest with a fixed network condition (e.g., Fast 3G, 4x CPU slowdown) and compare FCP, LCP, and TTI metrics across 3 test runs for statistical confidence.

Network Throttling in DevTools

Chrome DevTools Network tab has a "Throttling" dropdown with presets like Fast 3G and Slow 4G. Fast 3G (1.6 Mbps, 150ms RTT) exaggerates the difference between streaming and non-streaming because it amplifies the download time for the full HTML document, making incremental streaming gains visible.

INP: The Metric That Matters Most

Interaction to Next Paint (INP) measures the time from any user interaction to the next paint. It replaced FID as a Core Web Vital in 2024. Streaming reduces INP by prioritizing the hydration of interactive components the user is likely to engage with first, reducing the blocking time before those components become responsive.

Combining Streaming with Edge Rendering

The highest-impact configuration combines edge rendering (low TTFB from a nearby PoP) with streaming (progressive HTML delivery) and selective hydration (progressive JS processing). Together, these three techniques minimize every major performance metric across the full loading lifecycle.

Which Metric Streaming Most Improves

Which performance metric does React streaming most directly improve for above-fold content?

Lesson Recap

Streaming most directly improves FCP by delivering the HTML shell immediately, and improves LCP when the LCP element is in the shell. TTI improves through selective hydration spreading JS work over time. TTFB is unchanged — address it with edge rendering. Use WebPageTest filmstrip and Chrome DevTools throttling to measure streaming impact, and optimize for INP as the primary interactivity metric in Core Web Vitals.

Frequently asked questions

Is the “Measuring Streaming Impact: FCP, TTI, and LCP” lesson free?

Yes — the full text of “Measuring Streaming Impact: FCP, TTI, and LCP” is free to read here on the web, and the React Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the React Academy course, upgrade to CoddyKit PRO.

What will I learn in “Measuring Streaming Impact: FCP, TTI, and LCP”?

Benchmark the real-world performance difference of streaming SSR vs blocking SSR using Lighthouse and WebPageTest. You practise React Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start React Academy?

No prior experience is required. React Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “Measuring Streaming Impact: FCP, TTI, and LCP” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this React Academy lesson?

Yes. Every React Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. React 18 Streaming: How renderToPipeableStream Works
  2. Suspense Boundaries and Streaming Priority
  3. Progressive Hydration with Selective Hydration
  4. Measuring Streaming Impact: FCP, TTI, and LCP
← Back to React Academy