Log in to leave a comment
No posts yet
Usia teknologi seringkali lebih pendek dari yang kita bayangkan. Radix UI, yang mendominasi ekosistem React selama beberapa tahun terakhir, adalah contoh nyatanya. Hingga tahun 2026 ini, frekuensi commit di repositori Radix UI Primitives telah merosot hingga rata-rata kurang dari 0,5 kali per minggu. Secara teknis, ini sudah berada dalam kondisi "zombie". Sebaliknya, Base UI, yang diciptakan oleh para arsitek utamanya setelah bergabung dengan tim MUI, merilis lebih dari 25 pembaruan setiap harinya. Ini bukan sekadar tren, melainkan masalah kelangsungan hidup proyek Anda.
Dulu kita sangat menyukai pola asChild milik Radix. Namun dalam praktiknya, pola ini sering menjadi sumber masalah. Karena menggunakan cloneElement secara internal, tabrakan props (props collision) sering terjadi dan inferensi tipe TypeScript selalu tidak stabil.
Base UI mengatasi hal ini secara langsung dengan pola Render Props. Ini bukan sekadar perubahan sintaksis. Pendekatan ini mengoptimalkan performa dengan mengurangi overhead runtime dan memberikan kendali 100% kepada pengembang atas props yang diteruskan ke elemen anak.
Di Base UI, status internal komponen dapat diterima langsung sebagai argumen di dalam fungsi render. Anda tidak perlu lagi menghubungkan hook eksternal yang berantakan seperti pada Radix.
cloneElement yang kini mulai ditinggalkan oleh tim React.Undang-Undang Aksesibilitas Eropa (EAA) dan standar WCAG 2.2 yang mulai berlaku pada tahun 2026 kini menjadi kewajiban, bukan lagi pilihan. Base UI menjaga atribut ARIA tetap konsisten dalam lingkungan Server-Side Rendering (SSR). Hal ini mencegah layout shift selama proses hidrasi dan secara signifikan meningkatkan performa pemuatan awal (TTI).
Tugas paling menyakitkan di lingkungan enterprise adalah mengimplementasikan Multi-select atau Combobox. Radix kekurangan widget berperforma tinggi seperti ini, sehingga kita selalu harus menempelkan berbagai library eksternal tambahan.
Base UI mendukung fitur seleksi ganda secara native. Terutama, integrasinya dengan library virtualisasi seperti @tanstack/react-virtual sangatlah mulus. Nilai aslinya terlihat saat menangani data berskala besar.
Pola Function as ClassName dari Base UI sangat kuat ketika dipadukan dengan Tailwind CSS. Anda dapat mengelola gaya secara deklaratif alih-alih menggunakan operator ternary yang kompleks.
typescript <Select.Item className={(state) =>
flex items-center px-4 py-2 rounded-lg
${state.highlighted ? 'bg-indigo-50 text-indigo-900' : 'text-slate-700'}
${state.selected ? 'font-semibold bg-indigo-100' : 'font-normal'}
${state.disabled ? 'opacity-40 cursor-not-allowed' : 'cursor-pointer'}
`}
{item.label}
</Select.Item>
`
Merombak semua kode sekaligus adalah tindakan bunuh diri. Diperlukan pendekatan yang bertahap dan strategis.
Tahap 1: Masa Koeksistensi
Tetap pertahankan Radix UI yang ada sambil menjalankan npm install @base-ui-components/react secara berdampingan.
Tahap 2: Prioritaskan Fitur Baru
Terapkan Base UI terlebih dahulu pada modal atau formulir kompleks yang baru ditambahkan. Ini memberikan waktu bagi tim untuk terbiasa dengan pola Render Props.
Tahap 3: Penggantian Inti Design System
Ganti implementasi internal komponen umum pada design system dengan Base UI. Dengan menjaga antarmuka API eksternal tetap sama, Anda dapat memodernisasi arsitektur dasar tanpa mengganggu kode tim lain.
| Item Perbandingan | Radix UI | Base UI |
|---|---|---|
| Mekanisme Inti | Injeksi props cloneElement | Pemanggilan fungsi Render Props |
| Kontrol Props | Rendah (didikte library) | Tinggi (langsung oleh pengembang) |
| Akses Status | Membutuhkan hook eksternal | Injeksi langsung sebagai argumen fungsi render |
| Status Pemeliharaan | Praktis terhenti (per 2026) | Sangat aktif (dipimpin tim MUI) |
Pembaruan terbaru dari shadcn/ui sudah mulai mengadopsi Base UI sebagai komponen primitif dasarnya. Dominasi pasar telah sepenuhnya beralih. Utang teknis akan terus berbunga jika dibiarkan. Inovasi yang ditawarkan Radix UI kini telah berevolusi menjadi bentuk yang lebih matang dalam Base UI.
Kemampuan pemeliharaan dan kepatuhan terhadap standar aksesibilitas adalah daya saing inti pengembang frontend di tahun 2026. Inilah saatnya untuk beralih ke alat yang lebih jelas dan berorientasi pada performa. Proyek di tahun 2026 tidak boleh lagi terjebak dalam warisan masa lalu.