Separate server and client work

Keep data access and non-interactive rendering on the server, then add client components only where browser state or interaction requires them.

Protect the rendering path

Useful HTML, metadata, canonical URLs and internal links should be present without waiting for client JavaScript.

Avoid accidental waterfalls

Structure data requirements around route boundaries and parallel work so server rendering does not exchange JavaScript cost for request latency.

Migrate by route

Start with representative pages, measure bundle and response changes, and retain clear error and loading states throughout the transition.

Useful next step

Explore the capability