Server-Side Rendering
Expo Router supports server-side rendering (SSR) and static site generation (SSG) for web applications, enabling better performance and SEO.Server rendering features require
@expo/server and a compatible server environment.Rendering Modes
Client-Side Rendering (CSR)
Default mode - all rendering happens in the browser:app/index.tsx
Server-Side Rendering (SSR)
Render on the server for each request:app/blog/[slug].tsx
Static Site Generation (SSG)
Pre-render at build time:app/blog/[slug].tsx
CLAUDE.md:20-24:
Data Loading
Loader Function
Fetch data on the server:app/profile/[id].tsx
hooks.ts:356-372):
Type-Safe Loaders
app/posts/[id].tsx
Static Generation
generateStaticParams
Generate static paths at build time:app/products/[id].tsx
CLAUDE.md:20-24:
Incremental Static Regeneration
Revalidate static pages:app/blog/[slug].tsx
React Server Components
Use React Server Components for server-only code:app/dashboard.tsx
Client Components
Mark client-only components:components/InteractiveChart.tsx
Server Configuration
Next.js Adapter
Deploy with Next.js:next.config.js
Custom Server
Create a custom server:server.ts
SEO Optimization
Meta Tags
Set meta tags for SEO:app/blog/[slug].tsx
Sitemap Generation
Generate sitemap.xml:app/sitemap.xml+api.ts
Performance Optimization
Data Caching
Streaming
Stream data to the client:app/feed.tsx
Environment Variables
Access server-side environment variables:app/api/config+api.ts
Error Handling
Custom Error Pages
app/+error.tsx
Loader Error Handling
Testing
Test Loaders
__tests__/loaders/user.test.ts
Best Practices
Minimize Client Bundle
Prefetch Data
Cache Responses
Next Steps
API Routes
Create server-side API endpoints
Typed Routes
Type-safe server routes
Deep Linking
Server-rendered deep links
Navigation
Client-side navigation