19.0.0 (5 Desember 2024)
Fitur baru
React
- Actions:
startTransition kini dapat menerima fungsi asinkron. Fungsi-fungsi ini disebut "Actions" dan memperbarui state di latar belakang serta melakukan commit UI sekaligus. Actions dapat menjalankan efek samping seperti permintaan asinkron, dan menunggu pekerjaan selesai sebelum Transition berakhir.
useActionState: Hook baru untuk mengurutkan Actions dan mengakses state di dalam Transition. Menerima state awal dan reducer.
useOptimistic: Hook baru untuk memperbarui state saat Transition sedang berlangsung. Ketika Transition selesai, state diperbarui ke nilai baru.
use: API baru untuk membaca resource saat rendering. Menerima Promise atau Context, dan jika Promise diberikan, akan melakukan suspend hingga nilainya terselesaikan.
- Menggunakan
ref sebagai prop: ref kini dapat digunakan sebagai prop tanpa memerlukan forwardRef.
- Prewarming sibling Suspense: Saat komponen melakukan suspend, React segera melakukan commit fallback dari boundary Suspense terdekat.
React DOM client
- Prop
action pada <form>: Form Actions secara otomatis mengelola form dan terintegrasi dengan useFormStatus. Form juga otomatis di-reset saat berhasil.
- Dukungan metadata dokumen: Tag metadata dokumen kini bisa dirender secara native dari komponen.
- Dukungan stylesheet: Menyisipkan stylesheet ke
<head> klien sebelum menampilkan konten dari boundary Suspense.
- Dukungan script asinkron: Dapat merender script asinkron dari mana saja di dalam tree komponen.
React DOM server
- Penambahan API
prerender dan prerenderToNodeStream: API untuk pembuatan situs statis, dirancang agar bekerja di lingkungan streaming seperti stream Node.js dan web stream.
React server components
- Fitur RSC: directives, server components, dan server functions kini telah stabil. Library yang menyertakan server components sekarang dapat menargetkan React 19 sebagai peer dependency.
Akan dihentikan
- Akses
element.ref: Akses element.ref dihentikan dan disarankan menggunakan element.props.ref.
react-test-renderer: Di React 19, react-test-renderer akan mencatat peringatan penghentian dan beralih ke concurrent rendering untuk penggunaan web.
Perubahan utama
React
- Transformasi JSX baru wajib: Transformasi JSX baru diperlukan untuk meningkatkan ukuran bundle dan memungkinkan penggunaan JSX tanpa mengimpor React.
- Error rendering tidak dilempar ulang: Jika error tidak ditangkap oleh Error Boundary, error akan dilaporkan ke
window.reportError.
- Penghapusan
propTypes: Penggunaan propTypes akan diabaikan secara diam-diam. Migrasi ke TypeScript direkomendasikan.
- Penghapusan
defaultProps pada fungsi: Dapat menggunakan parameter default ES6 sebagai gantinya.
- Penghapusan string refs: Penggunaan string refs harus dimigrasikan ke callback ref.
React DOM
- Penghapusan
react-dom/test-utils: act dipindahkan dari react-dom/test-utils ke react. Utility lainnya dihapus.
- Penghapusan
ReactDOM.render, ReactDOM.hydrate: Digantikan oleh ReactDOM.createRoot dan ReactDOM.hydrateRoot untuk concurrent rendering.
Perubahan yang patut diperhatikan
React
- Menggunakan
<Context> sebagai provider: Kini dapat merender <Context> sebagai provider alih-alih <Context.Provider>.
- Dukungan custom element: React 19 lulus semua pengujian custom element.
- Perubahan StrictMode:
useMemo dan useCallback menggunakan kembali hasil memoization dari rendering pertama.
React DOM
- Perbedaan untuk error hydration: Jika terjadi ketidakcocokan, React 19 mencatat satu error yang mencakup perbedaan pada konten yang tidak cocok.
Perubahan TypeScript
- Larangan implicit return: refs kini hanya menerima fungsi cleanup. Implicit return akan memicu error.
- Argumen awal
useRef wajib: Argumen awal sekarang wajib.
- Pengetikan
ReactElement lebih ketat: props pada elemen React kini menggunakan default unknown alih-alih any.
1 komentar
Opini Hacker News
Ada pendapat bahwa membangun aplikasi yang skalabel dengan React itu memungkinkan dan menyenangkan
Ada pandangan positif terhadap rilis baru React, namun juga kekhawatiran bahwa pemula mungkin akan kesulitan untuk mulai menggunakannya
Ada pendapat bahwa kompleksitas framework sisi klien terus meningkat
Penambahan fitur
ref as a proppada rilis baru dinilai positif karena membuatforwardReftidak lagi diperlukanMenyebut Jotai, klon Recoil, sebagai pengganti Redux, dan menyatakan bahwa Jotai kompatibel dengan React 19
Ada pendapat yang berharap nama API
usediubahMenilai positif keputusan menunda rilis demi menyelesaikan masalah parallel suspense
Ada pertanyaan apakah hook
useActionStatebisa dibangun berdasarkan hook bawaan yang sudah adaMenilai positif penambahan fitur yang mendorong penggunaan teknologi web standar serta fitur yang meningkatkan quality of life