| Rendering Location |
Browser |
Server per request |
Build time |
Build + runtime |
| HTML Delivery |
Minimal HTML, JS bundle |
Fully rendered HTML |
Fully rendered static HTML |
Fully rendered static HTML, revalidated periodically |
| Data Fetching |
Browser fetches API after page load |
Server fetches API per request |
During build only |
During build + background regeneration |
| Initial Load Speed |
Slow first paint |
Fast first paint (depends on server) |
Very fast (CDN served) |
Very fast (CDN served) |
| Subsequent Navigation |
Fast (SPA behavior) |
Fast (with caching) |
Fast (static pages) |
Fast (static pages) |
| SEO |
Poor (bots see empty HTML unless hydrated) |
Excellent |
Excellent |
Excellent |
| Server Load |
Low |
High (each request rendered) |
Low |
Medium (regeneration triggered by request) |
| Hydration Needed |
Yes |
Yes |
Optional |
Optional |
| Content Freshness |
Real-time |
Real-time |
Static, updates require rebuild |
Near real-time (depends on revalidate interval) |
| Rebuild Requirement |
None |
None |
Full rebuild for content change |
Only updated pages regenerated automatically |
| Cost |
Low (CDN + simple server) |
Higher (server per request) |
Very low (CDN hosting) |
Medium (CDN + background regeneration) |
| Security |
JS-heavy, exposes API endpoints |
Server-controlled |
Static, highly secure |
Static + server regeneration |
| Scalability |
High (mostly CDN & client load) |
Moderate (server can bottleneck) |
Very high (CDN only) |
High (depends on regeneration frequency) |
| Caching |
Browser cache only |
Possible server & CDN caching |
CDN cache |
CDN cache + regeneration |
| Best Use Cases |
Dashboards, Admin panels, Internal tools, Auth apps |
Dynamic pages, Personalized content, SEO-critical pages |
Blogs, Docs, Marketing landing pages |
News sites, Product catalogs, Content with periodic updates |