- Mulai Juli 2026, shadcn/ui mengubah alur default untuk proyek baru dan dokumentasi menjadi berpusat pada Base UI, beralih dari default Radix yang digunakan sejak peluncurannya pada 2023
- Base UI telah mencapai versi stabil 1.6.0 dan lebih dari 6 juta unduhan per minggu, serta dipilih 2:1 lebih sering daripada Radix di proyek shadcn/create
- Radix tidak dihentikan dukungannya, aplikasi yang ada dapat tetap digunakan apa adanya, dan selain komponen yang hanya ada di Base UI, pembaruan dan komponen baru akan terus disediakan
- Migrasi disediakan bukan sebagai codemod melainkan sebagai skill agen, yang memindahkan komponen yang dimodifikasi beserta lokasi penggunaannya secara bertahap per komponen, sambil meninggalkan laporan
.migration/dan commit git - Komponen UI chat, registry berbasis repositori GitHub,
shadcn eject, hingga style baru Rhea ikut ditambahkan, memperluas cakupan shadcn/ui ke distribusi komponen dan penyusunan UI produk secara menyeluruh
Base UI menjadi pustaka komponen default
- Mulai Juli 2026, Base UI ditetapkan sebagai pustaka komponen default shadcn/ui
- Saat diluncurkan pada Januari 2023, shadcn/ui dibangun di atas Radix, yang saat itu merupakan pilihan dengan komponen headless tanpa style, API, aksesibilitas, dan pengalaman penggunaan di aplikasi nyata
- Base UI adalah pustaka baru yang sedang dibuat oleh tim yang juga membuat Radix, dan shadcn/ui membangun ulang semua komponen untuk Base UI sambil mempertahankan abstraksi yang ada
- Pada Desember 2025,
npx shadcn createsudah memungkinkan pemilihan kedua pustaka, dan pada Januari 2026 dokumentasi Base UI diselesaikan
Alasan default diubah
-
Stabilitas dan alur penggunaan Base UI
- Versi Base UI adalah 1.6.0
- Unduhan mingguan mencapai lebih dari 6 juta kali
- Tim Base UI secara rutin merilis komponen baru yang berguna
- Proyek baru shadcn/ui sudah menggunakan Base UI
- Proyek yang dibuat dengan shadcn/create memilih Base UI 2:1 dibandingkan Radix
- shadcn/ui kini menjadikan kecenderungan pilihan ini sebagai default resmi
Perubahan pada proyek baru dan dokumentasi
- Menjalankan
npx shadcn initpada proyek baru akan menjadikan Base UI sebagai pilihan default - shadcn/create akan menampilkan Base UI lebih dulu
- Halaman komponen di dokumentasi akan terbuka dengan tab Base UI sebagai default, dan dokumentasi Radix tetap bisa diakses dengan satu klik
Hal yang perlu diketahui pengguna Radix
-
Radix tetap didukung
- shadcn/ui tetap mempertahankan dukungan untuk Radix
- Selain komponen yang hanya ada di Base UI, semua pembaruan dan komponen baru akan disediakan untuk kedua pustaka
- Aplikasi yang sudah ada tidak perlu dimigrasikan
- Radix adalah pustaka yang matang dan telah teruji
- shadcn/ui juga masih menggunakan Radix di production, dan proyek internalnya pun tidak dimigrasikan
- Jika Anda lebih memilih Radix untuk proyek baru, Anda dapat menggunakan flag
- Jika skrip atau CI yang menjalankan
shadcn initsecara non-interaktif mengharapkan Radix, tambahkan-b radixuntuk mempertahankan alur lama - Saat membuat registry, jika ingin mengunci ke pustaka tertentu, Anda dapat menyediakan konfigurasi
registry:base - Item tanpa konfigurasi tersebut kini akan diinisialisasi dengan Base UI
- Base UI direkomendasikan untuk proyek baru
Cara migrasi ke Base UI
- Migrasi tidak wajib, tetapi jika diinginkan Anda dapat menggunakan skill
- Anda dapat meminta ke agen coding seperti ini
migrate accordion to base-ui
- Pendekatan default adalah migrasi bertahap
- Komponen dan lokasi penggunaannya dipindahkan satu per satu
- Proyek tetap dalam keadaan green dan siap deploy sepanjang proses
- Selama pekerjaan berlangsung, kedua pustaka bisa hidup berdampingan
- Proses dapat dihentikan di tengah lalu dilanjutkan nanti
- Jika diinginkan, seluruh proyek juga bisa diminta sekaligus
Mengapa memilih skill alih-alih codemod
- Komponen shadcn/ui adalah kode yang dimiliki dan dimodifikasi pengguna, sehingga codemod mungkin cocok untuk komponen yang belum diubah, tetapi bisa rusak pada komponen yang sudah dimodifikasi
- Skill memuat perubahan nama, perubahan prop, dan perbedaan perilaku yang telah ditinjau manual berdasarkan kedua pustaka
- Agen akan memahami perubahan yang dibuat pengguna dan menerapkannya juga pada target migrasi
- Perubahan yang bisa diproses secara mekanis akan diperbarui di seluruh proyek
- Contoh:
asChilddiubah menjadirender
- Contoh:
- Perubahan perilaku tidak akan ditambal diam-diam, melainkan ditandai, dan keputusan akhir tetap ada pada pengguna
Hasil yang ditinggalkan proses migrasi
- Setiap eksekusi meninggalkan tiga hasil
- Kode yang berfungsi: typecheck dan build dijalankan sebelum keberhasilan dilaporkan
- Laporan per komponen: perubahan, bagian yang dibiarkan apa adanya, dan checklist pemeriksaan manual ditinggalkan di
.migration/pada root proyek - Riwayat git yang bersih: satu commit per komponen ditinggalkan di branch, dan rollback cukup dengan menghapus branch
- Contoh laporan adalah
.migration/accordion.md, yang mencakup bagian berikutChangedLeft aloneBehavior changesVerify by hand
- Karena progres tersimpan di file dan riwayat git tanpa status tersembunyi, pekerjaan dapat dilanjutkan dari agen atau sesi mana pun
- Berjalan di Claude Code, Cursor, dan agen yang mendukung skill
- Dalam pengujian pada proyek nyata, dari lebih dari 60 komponen, 36 di antaranya memakai Radix; migrasi penuh memakan waktu sekitar 25 menit, dengan sekitar 10 ribu token per komponen
- Build lulus dengan bersih dan kustomisasi tetap dipertahankan
Penambahan komponen untuk antarmuka chat
- Pada Juni 2026, komponen baru untuk membangun antarmuka chat ditambahkan
- Tahap pertama ini mencakup bagian inti yang menyusun lapisan percakapan
- scroll
- baris pesan
- bubble
- lampiran
- marker
- MessageScroller adalah kontainer scroll untuk percakapan
- anchored turns
- streamed replies
- saved thread restore
- prepended history
- jump-to-message
- scroll controls
- visibility tracking
- MessageScroller tidak memiliki pesan, status AI, pengiriman, penyimpanan, atau status model; renderer konten disediakan oleh pengguna
- MessageScroller juga tersedia sebagai komponen headless tanpa style di
@shadcn/react
Peran Message, Bubble, Attachment, dan Marker
Messagemenata satu baris percakapan- avatar
- alignment
- header
- content
- footer
- menangani grouped messages
Bubblemerender permukaan pesan- variants
- alignment
- reactions
- links
- buttons
- mendukung collapsible content
Attachmentmerender file dan gambar- media
- metadata
- upload state
- actions
- menyediakan full-card trigger sambil tetap mempertahankan action terpisah yang bisa diklik
Markermerender pembaruan status, catatan sistem, baris pembatas, dan pemisah label- digunakan untuk hal seperti streaming state, tool activity, dan date breaks
- Komponen-komponen ini dirancang kecil agar bisa dikombinasikan untuk AI chat, support inbox, team thread, group chat, dan UI percakapan khusus produk
Utilitas CSS untuk UI chat dan @shadcn/react
- Dua utilitas CSS baru ditambahkan
scroll-fade: menambahkan fade indikator scroll di tepi kontainer scrollshimmer: menambahkan shimmer ke teks status live seperti"Thinking…","Generating response…", eksekusi tool, dan marker streaming
- Kedua utilitas ini termasuk dalam
shadcn/tailwind.css- Proyek yang diinisialisasi dengan
npx shadcn@latest initsudah menyertakannya
- Proyek yang diinisialisasi dengan
- @shadcn/react adalah paket baru untuk komponen React headless tanpa style
- Primitive pertamanya adalah
@shadcn/react/message-scroller - Komponen registry membungkusnya dengan style shadcn/ui, tetapi perilaku scroll seperti anchoring, auto-follow, prepend preservation, scroll commands, dan visibility ada di dalam paket
- Primitive pertamanya adalah
- Pendekatan ini menyediakan perilaku tanpa terikat pada style visual, serta memungkinkan logika interaksi yang sulit diuji di satu tempat
- Dapat digunakan baik dengan Radix maupun Base UI
Hubungannya dengan AI Elements
- Komponen chat baru ini tidak menggantikan AI Elements
- Komponen dan pola antarmuka AI dari AI Elements tetap dapat digunakan
- Rilis ini berfokus pada membawa bagian inti chat ke shadcn/ui satu per satu
- Jika Anda sudah menggunakan komponen AI Elements, tidak perlu menulis ulang aplikasi
- Jika membutuhkan abstraksi yang lebih baru, style yang diperbarui, dan dukungan untuk Radix maupun Base UI, Anda dapat mencoba versi shadcn/ui
Menggunakan repositori GitHub sebagai registry
- Mulai Juni 2026, repositori GitHub publik dapat digunakan sebagai registry
- Tambahkan
registry.jsondi root repositori dan definisikan item yang akan didistribusikan, maka pengguna dapat menginstalnya langsung dari GitHub dengan CLIshadcn - GitHub registry adalah source registry
- Tidak perlu menjalankan
shadcn build - Tidak perlu mem-publish file JSON item yang dihasilkan
- Tidak perlu menyiapkan server registry
- Tidak perlu menjalankan
- CLI akan membaca
registry.jsondi root, menafsirkan iteminclude, menemukan item yang diminta, lalu memasang file terkait - Item registry tidak terbatas pada komponen
- components
- hooks
- utilities
- design tokens
- feature kits
- project conventions
- agent instructions
- testing setup
- CI workflows
- release workflows
- templates
- codemods
- migration kits
- dan file proyek lainnya dapat didistribusikan
- Alamat GitHub registry bekerja dalam perintah yang sama seperti alamat registry yang ada
- list
- search
- view
- install
shadcn eject dan shadcn/tailwind.css
- Dengan dukungan untuk Radix dan Base UI sekaligus, dibutuhkan tempat untuk meletakkan utilitas Tailwind bersama yang dipakai kedua pustaka
- Contoh: custom variant seperti
data-open:dandata-closed: - Contoh: utilitas seperti
no-scrollbar
- Contoh: custom variant seperti
- Beberapa bug selama pengerjaan dukungan RTL juga lebih mudah diperbaiki di satu tempat daripada menerapkannya berulang ke semua komponen
- Untuk itu dibuat
shadcn/tailwind.css- Saat menjalankan
init,@import "shadcn/tailwind.css"akan ditambahkan ke file CSS global - Ini bekerja seperti import CSS semacam
tw-animate-css - Ini adalah dependensi kecil yang di-tree-shake di production dan di-resolve saat build
- Saat menjalankan
- Jika tidak ingin dependensi CSS pada paket
shadcn, Anda dapat menggunakanshadcn ejectshadcn/tailwind.cssakan di-inline ke file CSS global- Dependensi
shadcnakan dihapus dari proyek
- Dalam monorepo, perintah harus dijalankan di workspace yang memiliki
components.jsondan file CSS global
Style baru Rhea
- Pada Mei 2026, style baru shadcn/ui Rhea ditambahkan
- Rhea adalah Luma yang lebih compact, dengan spacing lebih kecil dan surface lebih rapat, dibuat untuk antarmuka produk yang fokus
- Rhea mempertahankan kelembutan dan bentuk Luma sambil menata tombol, input, menu, kartu, dan daftar dengan lebih rapat
- Pendekatan mengubah
--spacingmilik Luma tidak dipilih- Karena
--spacingadalah multiplier, mengubahnya akan mengubah arti utilitas Tailwind yang sudah familier sepertip-2,w-4, danm-16di seluruh aplikasi
- Karena
- Rhea disediakan sebagai style terpisah sehingga ukuran komponen, gap, dan densitas dapat disesuaikan langsung, sementara skala utilitas dasarnya tetap mudah diprediksi
- Rhea dapat digunakan di shadcn/create untuk Radix maupun Base UI
1 komentar
Pendapat di Hacker News
Di tulisan ini, gaya khas Claude terasa cukup jelas, jadi sekarang rasanya agak melelahkan dan terasa berjarak
Kalau bahkan tulisan peluncuran produk yang penting pun tidak cukup layak untuk benar-benar diperhatikan manusia, saya tidak tahu harus menarik garis di mana
Kalau ditulis dengan AI sehingga mereka bisa memakai lebih banyak waktu untuk mengembangkan perangkat lunak open source yang hebat ini, menurut saya itu justru hal yang baik
Saat saya memakai “gaya referensi MSDN era CD dan blog Raymond Chen” sebagai prompt awal, kemampuan saya mencerna rencana yang dibuat AI meningkat besar; gayanya rendah hati, berwawasan, dan menghormati pembaca, jadi sangat saya rekomendasikan
Akan agak lucu kalau seseorang dari tim muncul dan mengatakan bahwa itu ditulis manusia
Saya tidak mengerti kenapa setiap kali AI membantu pekerjaan, orang merasa perlu “membongkarnya”; ini bukan perusahaan F500, melainkan proyek open source. Sumber dayanya juga terbatas, dan bahasa Inggris mungkin bukan bahasa ibu mereka
Saya percaya budaya kolaborasi membutuhkan kepercayaan dan kebenaran, dan saya tidak ingin tulisan di mana AI berbohong dengan mengatakan “saya melakukan/mengatakan” sesuatu
Misalnya jika tulisan ini benar-benar ditulis Claude, saya bertanya-tanya kenapa ia berpura-pura seolah seseorang dari tim berbicara langsung dengan ungkapan seperti “I said”, “I meant it”. Itu penyamaran identitas dan menipu. Dalam budaya yang menjaga kolaborasi dan kejujuran, seharusnya ia mengatakan “manusia saya berkata”, atau setidaknya diberi label dengan benar sebagai AI yang bertindak mewakili manusia
Untuk aplikasi yang membosankan, saya penasaran apakah orang lebih menyukai pendekatan salin-tempel shadcn dibanding library UI tradisional seperti Mantine
Pendekatan salin-tempel memang mudah dimodifikasi, tetapi juga menimbulkan masalah baru. Hal yang biasanya cukup dengan menaikkan nomor versi kini jadi membutuhkan agen AI untuk upgrade
Di aplikasi yang sangat besar, bukan aplikasi membosankan, setiap pembaruan versi mayor membalik API secara besar-besaran sehingga membutuhkan migrasi yang membosankan. Setelah pindah ke shadcn, semuanya jadi lebih mudah karena bisa meng-upgrade satu komponen saja dan menambahkan komponen baru dengan bebas. Di Material UI, untuk memakai fitur baru di mana pun, semuanya harus diubah agar sesuai dengan API baru, sedangkan di shadcn bisa dilakukan secara selektif
Tapi kalau orang menikmatinya, silakan saja; salah satu kelebihan AI adalah HN tidak lagi sesesak dulu dengan pembahasan framework JavaScript
Mengambil library UI siap pakai memang mudah dalam jangka pendek, tetapi biasanya terlalu kompleks, mengimplementasikan fitur yang tidak dipakai, sulit dimodifikasi ketika ingin membedakan diri dari banyak aplikasi lain yang memakai library yang sama, dan modifikasi itu sering rusak secara halus saat upgrade. Menurut saya pendekatan terbaik adalah membuat library UI sendiri. Anda memilikinya sendiri, bisa menggunakannya ulang di beberapa proyek, mempertahankan gaya visual yang sama jika mau, dan menambahkan hanya fitur yang dibutuhkan
Ada kurva belajar, tetapi menurut saya tidak sampai sangat besar
Dalam praktiknya, sering kali komponen tidak sepenuhnya menyediakan perilaku yang dibutuhkan, dan orang sering menambahkan CSS ekstra ke komponen. Kalau alternatifnya adalah pekerjaan beberapa jam, dua baris CSS sangat menggoda, tetapi dua baris itu pun harus diverifikasi terhadap setiap fitur baru di library komponen. Jika tambalan CSS semacam ini bertambah banyak, upgrade berubah menjadi satu proyek tersendiri
Saya terganggu karena toolkit UI populer seperti ini merender div secara berlebihan
Melihat Base UI, hampir semua komponennya seperti “merender sebuah elemen”, padahal untuk akordeon ada elemen native seperti details/summary yang bisa melakukan hal yang sama. Saya bukan penginjil web native, dan menurut saya API web, terutama HTML, juga punya banyak kekurangan, tetapi penyalahgunaan div juga salah
Saya pernah memakai Shadcn dan secara umum menyukainya, tetapi radio button berbasis Radix terasa agak berlebihan. Ada juga opsi pilihan yang memakai solusi serupa yang terlalu membengkak
https://news.ycombinator.com/item?id=46688971
Saya sedang mencoba Ark UI di proyek sampingan, dan ada komponen yang benar-benar berguna seperti input tag: https://ark-ui.com/docs/components/tags-input
Komponen tab/“segment group” memiliki indikator aktif beranimasi yang tampaknya cukup sulit diimplementasikan: https://ark-ui.com/docs/components/segment-group
Namun ada juga tombol “klik untuk menyalin” yang terlalu rumit dan reimplementasi lain, dan semuanya merender sup div dengan markup bertele-tele: https://ark-ui.com/docs/components/clipboard, https://ark-ui.com/docs/components/collapsible
Menarik melihat alur pekerjaan migrasi bergeser dari codemod ke LLM
Meski codemod memang lebih deterministik, saya penasaran apakah eranya mulai berakhir
Lalu jalankan codemod itu, tambahkan pengaman deterministik lain, ulangi prosesnya, dan masukkan kembali hasilnya ke LLM untuk memperbaiki codemod
Yang dibutuhkan seharusnya bukan file skill untuk LLM, melainkan dokumentasi untuk manusia. Cukup tulis panduan migrasi untuk manusia. Pada akhirnya akan butuh waktu untuk menyadari bahwa file skill dan dokumentasi seharusnya adalah hal yang sama
Untuk aturan yang lunak saya tetap memakai file AGENTS.md, dan untuk aturan yang keras saya memakai aturan linter kustom; menurut saya ini cara mengambil kelebihan dari dua dunia sekaligus
Saya ingin memakai shad-CN, tetapi setiap kali pada akhirnya selalu kembali ke Mantine
Jauh lebih cepat daripada mengingat konteks apa saja yang harus dihubungkan
Saya penasaran apakah perubahan ini memberi hasil yang lebih baik bagi pengguna, seperti ukuran bundle yang lebih kecil
Atau apakah ini lebih merupakan perubahan yang meningkatkan kualitas hidup para maintainer Shadcn
Saya penasaran apa padanan shadcn/ui di Angular
PrimeNG baru-baru ini mengubah lisensinya, jadi saya sedang mencari alternatif yang cocok untuk proyek baru
PrimeNG, PrimeReact, dan PrimeVue semuanya beralih menjadi closed source sepenuhnya, dan mulai 2027 lisensi penggunaan berkelanjutan menjadi 800 dolar per kursi developer[2]. Repositori lama diarsipkan[3]. PrimeFaces tetap open source, tetapi kini dikembangkan dan dipelihara oleh developer sukarelawan independen yang bukan karyawan PrimeTek
[1]: https://hn.algolia.com/?q=The+Next+Chapter+of+PrimeTek
[2]: https://primeui.dev/nextchapter
[3]: https://github.com/primefaces/primeng
Namun ada satu grup yang telah mem-fork PrimeNG dan berencana memeliharanya. Nama barunya belum diputuskan
https://github.com/openng-org/open-prime
Semuanya gratis dan open source, dan jika Anda mengirim masukan atau saran, itu bisa ditambahkan dengan mudah ke Lily
https://lilydesignsystem.github.io
Saya rindu panduan gaya skeuomorphic ala lama
Sepertinya yang terakhir adalah Blueprint
URL-nya seharusnya https://ui.shadcn.com/docs/changelog/2026-07-base-ui-default