← Back to blog

Adaptive Hydration: Why Hydrating Everything Is a Mistake

2 min read

In my previous article about perceived performance, I focused on how UI and UX can make an app feel faster.
This is the architectural continuation of that idea.

We are no longer forced to render and hydrate the entire app at once.
The future is partial, adaptive, and priority-based rendering.

The Problem with Traditional Rendering

SSR plus hydration is often treated as the default path to speed.
But SSR + hydration ≠ instant interactivity.

We still:

  • Render more than the user needs right now
  • Hydrate parts the user has not interacted with

The result:

  • Long TTI
  • A busy main thread
  • A UI that looks ready but does not respond

The page looks ready long before it actually is.

What Is Modular Rendering?

Modular rendering means breaking UI into independent pieces.

Each module:

  • Renders on its own
  • Loads when needed
  • Hydrates and activates independently

Examples:

  • Header → immediately
  • Content → on scroll
  • Sidebar → on interaction
  • Heavy widgets → later, or never

This is not just a trick. It is a shift in how we think about UI delivery.

Adaptive Hydration Explained

Hydration should be conditional, not automatic.

Common strategies:

  • hydrate-on-interaction (click, hover, focus)
  • hydrate-on-visible (intersection observer, scroll)
  • hydrate-on-idle (when the main thread is free)

You can see these principles in real tools:

  • React selective hydration
  • Islands architecture (Astro)
  • Partial hydration (Qwik, Marko)

This is not about which framework is right.
It is about when a component deserves CPU time.

Why This Matters for UX & Perceived Performance

This connects directly to perceived performance:

Users can:

  • Click earlier
  • Scroll without stutters
  • Feel in control sooner

Perceived performance goes up even if raw metrics do not change.

Interactivity is more important than completeness.

DX Tradeoffs (Important)

Modular rendering introduces real costs:

  • More architectural complexity
  • Stricter boundaries between modules
  • Harder debugging when hydration timing is dynamic

If DX suffers, teams tend to disable these optimizations.

Performance techniques that hurt DX rarely survive long-term.

Conclusion

Modular rendering is not about frameworks.
It is about respecting user attention and browser limits.