Back to TechSheets
WebPerfFrontendSignalsJavaScriptPerformance

Master the Shift: From VDOM Hydration to Signals and Resumability

Thanga MariappanSenior Architect
6 min read
Apr 5, 2026
Master the Shift: From VDOM Hydration to Signals and Resumability

Beyond the Virtual DOM: Why Signals and Resumability are the Future of Web Performance

Stop punishing your users with "The Tantalizing Tap." You know the feeling: the page looks ready, but clicking a button does absolutely nothing because the main thread is locked in a massive hydration cycle.

For the last decade, the Virtual DOM (VDOM) was the gold standard for building modern web applications. React, Vue, and early Angular all relied on it. But as applications grow in complexity, the "Hydration Tax" has become a bottleneck for Core Web Vitals. Today, we are seeing a massive shift toward finer-grained reactivity via Signals and the elimination of hydration altogether through Resumability.

In this deep-dive, we will explore why the industry is moving away from the VDOM and how these new patterns work under the hood.

1. The Problem: The Hydration Gap

Traditional Server-Side Rendering (SSR) works by sending a static HTML snapshot to the browser. While this is great for First Contentful Paint (FCP), the page is non-interactive until the JavaScript bundle downloads, executes, and attaches event listeners to every single element. This process is called Hydration.

In a VDOM-based framework, the hydration process requires the framework to:

  1. Download the entire component code.
  2. Re-run the application logic to build a Virtual DOM tree.
  3. Reconcile the VDOM with the existing HTML to attach event listeners.

This is "All-or-Nothing." Even if a user only needs to click one menu button, the browser must hydrate the entire page. This leads to a high Interaction to Next Paint (INP) score, frustrating users on slower devices.

2. The Signal Revolution: Granular Reactivity

Frameworks like SolidJS and the latest versions of Angular have turned to Signals to solve the inefficiency of the VDOM. Unlike the VDOM, which re-renders entire component trees when data changes, Signals allow the framework to update only the specific DOM node tied to a variable.

How Signals Work

A Signal is essentially a wrapper around a value that tracks its subscribers. When the value changes, it notifies only the DOM nodes that use it directly.

// A conceptual look at Signals
const [count, setCount] = createSignal(0);

// This effect only runs once to setup the link
createEffect(() => {
  document.getElementById('counter-val').textContent = count();
});

// Updating the value does NOT re-run the entire component logic
setCount(count() + 1);

By avoiding the VDOM reconciliation step, frameworks can maintain a much smaller memory footprint and execute updates in constant time, regardless of how deep the component tree is.

3. Resumability: Hydration's Final Boss

If Signals solve the "update" problem, Resumability (pioneered by Qwik) solves the "startup" problem.

Resumability allows an application to resume execution on the client exactly where it left off on the server, without needing to download or execute all the JavaScript upfront. It avoids hydration entirely by serializing the application state—including event listeners—directly into the HTML.

Comparison: Hydration vs. Resumability

  • Hydration: Browser needs to download Button.js, run Button(), then add onClick listener.
  • Resumability: The HTML contains a pointer to the event handler: <button on:click="/chunk_abc.js#handleBtnClick">. The browser downloads the small handler code only when the user clicks the button.

4. Real-World Implementation: Signals in Practice

Let's look at a practical example of how Signals optimize a dashboard component compared to a traditional React-style re-render.

The VDOM Way (React)

In a React component, if a single userStatus variable changes in the parent, the entire dashboard and all its children (graphs, tables, sidebars) might re-evaluate unless heavily optimized with memo.

The Signal Way (SolidJS/Angular)

In a Signal-based architecture, the data binding is direct.

@Component({
  template: `
    <div>
      <h1>Welcome, {{ user().name }}</h1>
      <p>Status: {{ userStatus() }}</p>
    </div>
  `
})
export class Dashboard {
  user = signal({ name: 'Alex' });
  userStatus = signal('Online');

  updateStatus() {
    // Only the <p> tag above is updated in the DOM.
    // The <h1> and the component logic do not re-execute.
    this.userStatus.set('Busy');
  }
}

5. Measuring the Impact on Core Web Vitals

Moving away from traditional hydration directly impacts three key metrics:

  1. INP (Interaction to Next Paint): By reducing main-thread blocking during startup, interactions are handled instantly.
  2. LCP (Largest Contentful Paint): Since Resumability allows for smaller initial bundles, images and text can be discovered and rendered faster.
  3. TBT (Total Blocking Time): Signals eliminate the need for heavy VDOM diffing, keeping the main thread free for user input.

Key Takeaways

  • Hydration is a bottleneck: Traditional SSR requires re-running code on the client to make the page interactive.
  • Signals provide surgical updates: They bypass the VDOM, updating only the specific DOM nodes that need to change.
  • Resumability eliminates the Hydration Tax: Frameworks like Qwik allow apps to start instantly by fetching only the code required for a specific user interaction.
  • Frameworks are converging: Angular and Vue are adopting Signal patterns, and even React is experimenting with the React Forget compiler to optimize re-renders.

How You Can Use This

  1. Audit your TBT: Use Chrome DevTools Lighthouse to see if your hydration time is hurting your performance.
  2. Experiment with Signals: If you are an Angular developer, start using computed and effect signals. If you are starting a new performance-critical project, explore SolidJS or Qwik.
  3. Code Splitting: If you stay with React, use dynamic imports and React.lazy to minimize the amount of code the browser has to hydrate at once.

Internal Linking Suggestions

  • [Link to: Mastering Core Web Vitals in 2024]
  • [Link to: The Architect's Guide to Micro-Frontends]
  • [Link to: Why INP is the most important metric for SEO]

Social Captions

LinkedIn: Is the Virtual DOM becoming a legacy pattern? 🚀 Modern frontend architecture is shifting away from heavy hydration towards Signals and Resumability. My latest deep-dive explores how frameworks like Qwik and SolidJS are redefining performance by eliminating the "Hydration Tax." Read the full technical breakdown here! #WebPerf #Frontend #SoftwareArchitecture #JavaScript

Medium: Stop punishing your users with slow hydration. Learn why Signals and Resumability are the secret weapons for achieving a perfect 100 Lighthouse score and superior Core Web Vitals. #Programming #React #Angular #WebDevelopment

0Likes
Share this techsheet
Share TechSheet

Discussion

0 characters