The docs make it look easy. "Just move files to /app". In reality, it involves rethinking your entire data flow.
1. The "Client Component" Trap
You will find yourself putting `'use client'` at the top of everything initially. That's okay.
**The Trap:** If you import a Server Component into a Client Component, it becomes a Client Component download. Even if it's just text.
2. Fetching Data
**Old Way (useEffect):**
```javascript
useEffect(() => {
fetch('/api/user').then(d => setData(d));
}, []);
```
**RSC Way:**
```javascript
// This runs on the server. No bundle size cost.
const data = await db.query('SELECT * FROM users');
return <div>{data.name}</div>
```
This removal of the API layer for internal reads is the biggest win.
3. The Context Hell
Context only works in Client Components. If your layout relies heavily on `<ThemeContext>` wrapping the whole app, you need to isolate it.