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