SSR generates HTML on the server for each request. Provides better initial page load and SEO. Next.js handles SSR automatically. Combines with client-side hydration for interactivity.
Server Components run only on server, reduce client-side JavaScript. Support async data fetching. Cannot use client-side hooks or browser APIs. Improve performance and bundle size.
Use async Server Components or getServerSideProps. Data available during render. Support server-only operations. Handle loading states.
Better SEO, faster initial page load, improved performance on slow devices. Support social media previews. Handle browser without JavaScript. Improve accessibility.
Streaming SSR progressively sends HTML chunks as they're generated. Uses <Suspense> boundaries. Improves Time To First Byte (TTFB). Supports progressive rendering.
Use 'use server' directive or .server.js files. Handle sensitive operations. Access server-side APIs. Support secure data handling.
SSR cache stores rendered pages on server. Improves performance for subsequent requests. Supports cache invalidation. Handle cache strategies.
SSR generates HTML per request, SSG at build time. SSR better for dynamic content, SSG for static. Trade-off between freshness and performance.
Create middleware for request processing. Handle request transformation. Support middleware chain. Implement custom logic.
Create server-side rendering tests. Handle integration testing. Support unit testing. Implement test utilities.