What Changed in React 19
React 19 is not a minor 업데이트 but a paradigm shift. Stable 서버 Components, new hooks, and the React Compiler fundamentally change how developers write applications.
Stable 서버 Components
React 서버 Components (RSC) are now production-ready. By rendering on the 서버 and sending HTML to the client, they reduce bundle size significantly.
// app/page.jsx — Server Component (default)
export default async function Home() {
const posts = await db.query('SELECT * FROM posts');
return (
<ul>
{posts.map(post => (
<li key={post.id}>{post.title}</li>
))}
</ul>
);
}
Components using useState or useEffect must declare “use client” at the top.
The use() Hook
The most notable new 기능 is the use() hook, which lets you resolve promises directly inside components.
function Comments({ commentsPromise }) {
const comments = use(commentsPromise);
return comments.map(c => <p key={c.id}>{c.text}</p>);
}
Unlike traditional hooks, use() works inside conditionals and loops.
서버 Actions for Forms
서버 Actions let you handle form submissions without writing client JavaScript.
export default function CreatePost() {
async function handleSubmit(formData) {
'use server';
const title = formData.get('title');
await db.execute('INSERT INTO posts (title) VALUES (?)', [title]);
revalidatePath('/');
}
return (
<form action={handleSubmit}>
<input name="title" required />
<button type="submit">Create</button>
</form>
);
}
React Compiler
The React Compiler (formerly React Forget) automatically inserts useMemo and useCallback calls. Manual 최적화 hooks are no longer necessary in v19-compatible codebases.
Deprecated APIs
- Legacy lifecycle methods like componentWillMount are fully removed
- ReactDOM.render() is replaced entirely by createRoot()
- PropTypes official support ends
Migration from React 18 typically takes one day to one week depending on project size.

