<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/different-hydration-and-rendering-strategies-uy1xqwg3n" -->

---
title: Different hydration and rendering strategies | daily.dev
description: A comprehensive walkthrough of every major web rendering and hydration strategy, from static generation and CSR through SSR, streaming SSR, islands...
canonical: https://daily.dev/posts/different-hydration-and-rendering-strategies-uy1xqwg3n
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Different hydration and rendering strategies | daily.dev
og:description: A comprehensive walkthrough of every major web rendering and hydration strategy, from static generation and CSR through SSR, streaming SSR, islands...
og:url: https://daily.dev/posts/different-hydration-and-rendering-strategies-uy1xqwg3n
og:image: https://api.daily.dev/og/posts/UY1XQWG3N.png
og:image:alt: Different hydration and rendering strategies
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Different hydration and rendering strategies

**[Neciu Dan](https://daily.dev/sources/neciudan)** · 29 min read · 46 upvotes · 4 comments

## Summary

A comprehensive walkthrough of every major web rendering and hydration strategy, from static generation and CSR through SSR, streaming SSR, islands architecture, React Server Components, TanStack Start's client-first RSC model, fine-grained reactivity (SolidJS, Svelte 5), and Qwik's resumability. Each approach is explained with code examples, trade-offs, and guidance on when to use it. The piece also covers Next.js 16.3's Cache Components and Partial Prefetching features that aim to give server-rendered apps SPA-like instant navigations. Concludes with practical decision guidance: static + islands for content sites, RSC-based frameworks for apps, and more exotic strategies only when a specific measured problem demands them.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://neciudan.dev/hydration-and-rendering-strategies>

## Questions this post answers

### What does the cacheComponents flag do in Next.js 16.3?

Enabling cacheComponents in next.config.ts makes every route dynamic by default with no implicit caching, and turns Partial Pre-Rendering into the default rendering behavior rather than an experimental opt-in. Developers then choose per data-fetch whether to stream it with Suspense, cache it with a 'use cache' directive, or explicitly block navigation by setting export const instant = false on a route.

_Teams weighing whether to adopt Next.js 16.3's new caching model can track real-world upgrade notes on daily.dev._

### What is CVE-2025-55182 in React Server Components?

CVE-2025-55182 is a serious deserialization vulnerability found in React Server Components that was actively exploited and required patches across several React and Next.js versions. It highlights that RSC's server-client serialization pipeline runs in a privileged place with access to databases and secrets, increasing the attack surface compared to purely client-rendered apps.

_Developers hardening RSC-based apps against supply-chain and deserialization risks follow security advisories like this on daily.dev._

### How much JavaScript did TanStack save by migrating their docs site to RSCs via TanStack Start?

Migrating the content-heavy blog and docs pages of the TanStack docs site to TanStack Start's client-first RSC model dropped roughly 153 KB gzipped from the client JS graph per page, and cut Total Blocking Time from about 1,200ms to 260ms. This was achieved without rewriting the existing client-side app architecture around a new server-first paradigm.

_Anyone deciding between Next.js and TanStack Start for RSC adoption can compare real migration numbers on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@neoscripter** · 4 upvotes

> Finally! A post that is not about AI! You're so unique nowadays....

**@allinonetools** · 3 upvotes

> A good reminder that there's no single "best" rendering strategy. I usually start with the simplest approach and only add complexity when real performance data shows it's needed.

**@khevlar** · 0 upvotes

> There are a lot of rendering models now, but most real-world apps still end up mixing 2 to 3 of them.

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#react](https://daily.dev/tags/react), [#astro](https://daily.dev/tags/astro)

[View this post on daily.dev](https://daily.dev/posts/different-hydration-and-rendering-strategies-uy1xqwg3n)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Different hydration and rendering strategies","url":"https://daily.dev/posts/different-hydration-and-rendering-strategies-uy1xqwg3n","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/different-hydration-and-rendering-strategies-uy1xqwg3n"},"datePublished":"2026-06-28T14:03:03.810Z","dateModified":"2026-09-13T20:26:51.170Z","description":"A comprehensive walkthrough of every major web rendering and hydration strategy, from static generation and CSR through SSR, streaming SSR, islands...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/071405e978d7695a3671f03f3433291b?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/071405e978d7695a3671f03f3433291b?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Neciu Dan","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Neciu Dan","logo":"https://media.daily.dev/image/upload/s--xeHLtkTA--/f_auto,q_auto/v1776585705/logos/neciudan","url":"https://daily.dev/sources/neciudan"},"commentCount":4,"discussionUrl":"https://daily.dev/posts/different-hydration-and-rendering-strategies-uy1xqwg3n","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":46},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":4}],"keywords":"webdev,react,astro","timeRequired":"PT29M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Neciu Dan","item":"https://daily.dev/sources/neciudan"},{"@type":"ListItem","position":3,"name":"Different hydration and rendering strategies"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/different-hydration-and-rendering-strategies-uy1xqwg3n","comment":[{"@type":"Comment","text":"Finally! A post that is not about AI! You’re so unique nowadays…","datePublished":"2026-06-30T00:36:14.019Z","url":"https://daily.dev/posts/UY1XQWG3N#c-bRWmzTzBr","author":{"@type":"Person","name":"Ilya Andreev","url":"https://daily.dev/neoscripter","image":"https://avatars.githubusercontent.com/u/140309026?v=4"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4}},{"@type":"Comment","text":"A good reminder that there’s no single “best” rendering strategy. I usually start with the simplest approach and only add complexity when real performance data shows it’s needed.","datePublished":"2026-06-30T03:05:22.601Z","url":"https://daily.dev/posts/UY1XQWG3N#c-OaWgoz6UZ","author":{"@type":"Person","name":"AllInOneTools","url":"https://daily.dev/allinonetools","image":"https://media.daily.dev/image/upload/s--4ZT8QlF0--/f_auto/v1769790028/avatars/avatar_igzBsWloJeaegzm9bQltZ?_a=BAMAMiiu0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3}},{"@type":"Comment","text":"There are a lot of rendering models now, but most real-world apps still end up mixing 2 to 3 of them.","datePublished":"2026-07-01T09:30:56.086Z","url":"https://daily.dev/posts/UY1XQWG3N#c-E63DdYTmW","author":{"@type":"Person","name":"Lesley Edinam","url":"https://daily.dev/khevlar","image":"https://media.daily.dev/image/upload/s--I4QFMNNF--/f_auto/v1753089440/avatars/avatar_xMSmIuOOXE5TqCI1OLs4c?_a=BAMClqZW0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/different-hydration-and-rendering-strategies-uy1xqwg3n#faq","mainEntity":[{"@type":"Question","name":"What does the cacheComponents flag do in Next.js 16.3?","acceptedAnswer":{"@type":"Answer","text":"Enabling cacheComponents in next.config.ts makes every route dynamic by default with no implicit caching, and turns Partial Pre-Rendering into the default rendering behavior rather than an experimental opt-in. Developers then choose per data-fetch whether to stream it with Suspense, cache it with a 'use cache' directive, or explicitly block navigation by setting export const instant = false on a route. Teams weighing whether to adopt Next.js 16.3's new caching model can track real-world upgrade notes on daily.dev."}},{"@type":"Question","name":"What is CVE-2025-55182 in React Server Components?","acceptedAnswer":{"@type":"Answer","text":"CVE-2025-55182 is a serious deserialization vulnerability found in React Server Components that was actively exploited and required patches across several React and Next.js versions. It highlights that RSC's server-client serialization pipeline runs in a privileged place with access to databases and secrets, increasing the attack surface compared to purely client-rendered apps. Developers hardening RSC-based apps against supply-chain and deserialization risks follow security advisories like this on daily.dev."}},{"@type":"Question","name":"How much JavaScript did TanStack save by migrating their docs site to RSCs via TanStack Start?","acceptedAnswer":{"@type":"Answer","text":"Migrating the content-heavy blog and docs pages of the TanStack docs site to TanStack Start's client-first RSC model dropped roughly 153 KB gzipped from the client JS graph per page, and cut Total Blocking Time from about 1,200ms to 260ms. This was achieved without rewriting the existing client-side app architecture around a new server-first paradigm. Anyone deciding between Next.js and TanStack Start for RSC adoption can compare real migration numbers on daily.dev."}}]}
```

