The days of megabyte-sized JavaScript bundles are over. In 2026, the goal is simple: ship no client JavaScript for content that does not need it.
Rise of Server Components
With RSC, we can fetch data, render comprehensive layouts, and stream the HTML result to the client without ever sending hydration code.
- Hydration: Only interactive "Islands" (e.g., a search button, carousel) wake up.
- Payload: The initial page load is pure HTML and CSS.
This pattern is especially valuable for service pages, articles, tutorials, and case studies. Those pages need fast, readable HTML, optimized images, and crawlable links. They do not need a full client app just to show text.
The New Bundlers
Tools like Turbopack, Rspack, and others have revolutionized how we bundle. They are:
- Tree-Shaking: Incredible precision.
- Granular Splitting: Smartly splits chunks based on usage patterns.
Bundlers help, but they cannot rescue a page that imports unnecessary client components. Start by removing the work. Then let the bundler optimize what remains.
Why This Matters
User experience (UX) is king. The fastest websites convert the best. By eliminating the "heavy lift" of parsing and executing JS on the main thread, we unlock:
- Instant Interaction: INP (Interaction to Next Paint) scores plummet.
- Mobile First: Low-end devices don't choke on your marketing page.
- Cleaner Crawl Paths: Google can reach useful HTML and internal links without waiting for client rendering.
What to Remove First
The easiest wins usually come from content pages:
- Replace decorative client carousels with static editorial cards.
- Move formatting and filtering to the server when it does not need user state.
- Use the image pipeline for responsive sizes instead of shipping originals.
- Keep analytics events focused on real business actions.
- Split interactive tools away from indexable article content.
- Verify mobile layout after removing JavaScript-driven sizing.
Zero-bundle thinking is not anti-interaction. It is about making every script justify its cost.
When Zero JavaScript Is Realistic
Zero or near-zero client JavaScript is realistic for:
- article pages
- service landing pages
- documentation
- case studies
- static comparison guides
- server-rendered category pages
It is less realistic for calculators, dashboards, editors, maps, configurators, and checkout flows. For those, the better target is not zero JavaScript; it is isolated JavaScript. Keep the interactive surface small, lazy-load what can wait, and preserve useful HTML around the tool so the page still has a clear crawlable purpose.
How to Audit a Page
Start with a production build, not a dev server. Open the route on a mid-range mobile profile and compare three signals: transferred JavaScript, main-thread time, and whether the page is useful before hydration finishes.
If removing a client component changes only decoration, remove or server-render it. If it changes a business action, isolate it behind a small client boundary. If it changes analytics, make sure the event still measures a meaningful action such as a quote start, checkout step, or project inquiry.
The best zero-bundle wins are usually boring: fewer global providers, fewer animation wrappers around static cards, fewer client imports in article shells, and fewer "just in case" UI libraries on pages that only need content.
Keep the Thread Going
- Service path: Custom Web Development
- Related read: Next.js 16 and the Post-RSC Era of App Architecture
- Sustainability angle: Green Web Development for Faster, Leaner Sites
- Related public work: Aerconic
- Ready to scope your own version? Start a project



