Urgent.News

What's breaking now, across thousands of outlets.

Tech

Nuxt 4.5 SSR Streaming: The Route Rules That Disable It

Your team flips experimental.ssrStreaming: true in nuxt.config.ts , loads the homepage, and Time to First Byte drops from 1.8 seconds to 40 milliseconds. Everyone's thrilled. Someone ships it to every route in the app. Two days later, a teammate asks why the pricing page — behind a cache route rule, same layout, same components — didn't get any faster. Then a third teammate reports pages crashing…

When your team sets experimental.ssrStreaming: true in nuxt.config.ts and loads the homepage, the Time to First Byte (TTFB) improves dramatically from 1.8 seconds to just 40 milliseconds. This gain is impressive. However, when the same flag is applied to every route in the application, unexpected issues arise. Two days later, a teammate questions why the pricing page, behind a cache route rule, does not experience any improvement.

Soon after, a third teammate reports production pages crashing with an obscure error: ERR_HTTP_HEADERS_SENT. The source material explicitly states that this is not a Nuxt bug, but rather a result of six route rules quietly opting themselves out of streaming. This phenomenon occurs when a request interceptor sets a cookie, which cannot be altered after the initial response has been sent, a limitation inherent to streaming.

This article focuses on Nuxt 4.5 (the latest tag on npm, experimental.ssrStreaming implemented in version 4.5.0, released on July 18, 2026), noting that Nuxt 3 has reached end-of-life since July 31, 2026. The feature is still marked as experimental, with some options, like botRegex, still in the process of being renamed for clarity.

The piece will guide you through understanding what experimental.ssrStreaming actually changes in the response, why six specific route rules — redirect, cache, isr, swr, noScripts, and ssr: false — cause it to fall back to the traditional buffered renderer, and how to opt a route out of streaming using routeRules. It also explains Nuxt's protective measures for crawlers and the real failure mode when code attempts to modify the response after the shell has flushed.

Additionally, it connects this situation to existing rendering modes and route rules in Nuxt, targeting those who have deployed Nuxt apps, used routeRules, and understand the concept of rendering on the server before hydration on the client. The table of contents covers the problem of one flag affecting half the app, the mental model of committing now versus deciding and committing, how to turn it on, the six route rules that disable streaming, protections for crawlers, opting out, potential edge cases, best practices, frequently asked questions, and a cheat sheet of key takeaways.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Stop Hand-Rolling an Exclusive Accordion. `<details name>` Does It

You're building an FAQ page. Ten questions, each collapsed by default, and — this part's in every design spec — only one answer open at a time. Click a second question, the first one closes.

  • Native details and summary tags provide built-in accordion functionality.
  • name attribute enforces mutual exclusivity across multiple details elements.
  • Grouping related elements with the same name simplifies accordion implementation.

Benchmark Android User Journeys with Macrobenchmark

Unit tests can prove that a ViewModel returns the right state, but they cannot measure the latency and frame behavior a user experiences across a sequence of screens and a real application process.

  • Macrobenchmark simulates end-to-end user journeys from app launch to refreshed state.
  • Measure frame timings and milestones to detect performance issues missed by isolated tests.
  • Configure app for profile mode, build dedicated benchmark variant with .benchmark suffix.

I built my friend a voice-based recipe note-taking app

What I built Built a browser-based app which takes audio input from the microphone and transcribes it into recipe notes/memo. Building for a Friend Made it for my friend, Arnesh.

  • Browser-based app records audio and converts it into recipe notes.
  • Uses microphone APIs and Transformers.js with open Whisper-tiny model.
  • Structured code into modules for audio, transcription, parsing, storage, rendering.

More from Sunday 4 October →