
React 19 có gì mới
React 19 là bản phát hành chính thức đầu tiên sau hơn hai năm chỉ có bản canary, ra mắt ngày 5/12/2024. Bản này mang tới Actions, các hook mới và React Compiler, giúp lập trình viên viết form, cập nhật dữ liệu và tối ưu hiệu năng đơn giản hơn nhiều. Nếu bạn đang dùng React 18, đây là những thay đổi đáng chú ý nhất.
Actions: quản lý form và dữ liệu theo cách mới
Actions cho phép truyền hàm async trực tiếp vào thuộc tính action của thẻ form hoặc formAction của input và button. React tự quản lý trạng thái pending, xử lý lỗi, cập nhật lạc quan và xếp hàng các request tuần tự. Khi Action thành công, React tự động reset form cho các thành phần không kiểm soát. Bạn không còn phải tự viết state loading và xử lý lỗi thủ công như trước.
Ví dụ cú pháp Actions
<form action={async (formData) => {
const name = formData.get("name");
await saveUser(name);
}}>
<input name="name" />
<button type="submit">Lưu</button>
</form>
Các hook mới trong React 19
useActionState
Hook useActionState nhận hàm Action và trạng thái khởi tạo, trả về state hiện tại, hàm dispatch và cờ isPending. Đây là cách chuẩn để đọc kết quả cuối cùng của Action theo kiểu reducer, thay thế tên cũ useFormState thời canary.
useOptimistic
Hook useOptimistic giúp hiển thị ngay giá trị lạc quan trong lúc request đang chạy, ví dụ thêm bình luận tạm thời rồi thay bằng dữ liệu thật khi server phản hồi. Nếu request thất bại, React tự khôi phục trạng thái cũ.
useFormStatus
Hook useFormStatus nằm trong react-dom, đọc trạng thái của form cha giống Context mà không cần truyền props xuống. Component thư viện có thể đọc cờ pending để hiển thị spinner mà không biết form cha là ai.
Hook use
Hook use đọc Promise hoặc Context ngay trong lúc render; React tự Suspend tới khi Promise hoàn tất. Khác với hook thường, use có thể gọi trong câu lệnh điều kiện sau early return, giúp code linh hoạt hơn.
React Compiler
React Compiler phiên bản 1.0 ổn định ra mắt ngày 7/10/2025, tự động memoize component ở mức build-time, giúp bạn bỏ dần useMemo, useCallback và React.memo. Compiler hoạt động cho cả React và React Native, từ năm 2025 được bật mặc định trong Expo SDK 54 và có sẵn dưới dạng tùy chọn trong create-vite và create-next-app. Đây là bước tiến lớn giúp code gọn hơn mà hiệu năng vẫn được đảm bảo.
Server Components và Server Actions
React Server Components chính thức ổn định trong React 19, cho phép render phía server ở build-time hoặc theo từng request. Server Actions cho phép Client Component gọi hàm async chạy phía server, kết hợp với metadata tự động: thẻ title, meta và link được hoist lên head mà không cần thư viện ngoài. React 19 cũng hỗ trợ đầy đủ Custom Elements, vượt qua toàn bộ bộ test Custom Elements Everywhere.
Các cải tiến trong React 19.1 và 19.2
Sau bản 19.0, React tiếp tục phát hành 19.1 vào tháng 6/2025 và 19.2 vào tháng 10/2025. Phiên bản 19.2 giới thiệu component Activity dùng để ưu tiên render, hook useEffectEvent giúp tách effect khỏi event, cơ chế cacheSignal và Partial Pre-rendering cho phép render một phần trang trước khi dữ liệu sẵn sàng. Các bản này chủ yếu cải thiện hiệu năng và trải nghiệm phát triển, không phá vỡ API của 19.0, vì vậy việc nâng cấp trong chuỗi 19.x diễn ra khá nhẹ nhàng. Hiện phiên bản npm mới nhất của React là 19.2.8, và nhóm phát triển vẫn tiếp tục ra các bản vá trong chuỗi này.
Nâng cấp lên React 19 cần lưu ý
- Thư viện ngoài phải tương thích: một số package dùng componentWillMount hoặc findDOMNode cần nâng cấp phiên bản mới.
- useRef giờ yêu cầu truyền đối số, các trường hợp dùng ref không hợp lệ sẽ báo lỗi rõ ràng hơn.
- ReactDOM.render đã bị xóa, chuyển hoàn toàn sang createRoot.
- String refs và ReactDOM.findDOMNode không còn được hỗ trợ.
Kết luận
React 19 cùng React Compiler đánh dấu bước chuyển từ việc lập trình viên tự tối ưu thủ công sang framework tự tối ưu. Actions và các hook mới giúp xử lý form gọn gàng, Server Components mở ra kiến trúc mới cho ứng dụng full-stack. Nếu dự án đang dùng React 18, hãy lên kế hoạch nâng cấp để tận dụng các tính năng này, đồng thời kiểm tra toàn bộ dependency trước khi chuyển đổi.
Tham khảo thêm
React v19 – Blog chính thức | React 19.2 – Blog chính thức | React Compiler 1.0 | Tài liệu useActionState | The New Stack: tranh luận về Server Components
