Components

Zero-build components can still feel modern

Shadow DOM, custom properties, and fragment navigation cover a lot.

A custom element is a good boundary for behavior, and you do not need a bundler to reach for one. The platform already ships the parts that used to require a framework.

First paint, then behavior

Declarative Shadow DOM lets the server send the first paint without waiting for JavaScript. The client helper then hydrates the same shadow root, preserving the initial layout while adding interaction.

Custom properties carry the theme across the boundary, so a component can stay encapsulated and still match the page it lives on.

Modern is not a build size. It is the experience the reader gets on the first byte.

Fragment navigation ties it together: links swap document fragments in place, so a multi-page site reads like an app without a single-page runtime underneath it.