Shadcn/UI ने डिफ़ॉल्ट रूप से Radix की जगह Base UI अपनाया
(ui.shadcn.com)- shadcn/ui जुलाई 2026 से नए प्रोजेक्ट्स और docs के डिफ़ॉल्ट flow को Base UI-केंद्रित बना रहा है, और 2023 में लॉन्च के बाद से चले आ रहे Radix डिफ़ॉल्ट से दिशा बदल रहा है
- Base UI ने 1.6.0 stable version और साप्ताहिक 60 लाख से अधिक downloads हासिल किए हैं, और shadcn/create प्रोजेक्ट्स में भी इसे Radix की तुलना में 2:1 अनुपात में अधिक चुना जा रहा है
- Radix को बंद नहीं किया जा रहा है, मौजूदा apps जैसे हैं वैसे रखे जा सकते हैं, और Base UI-केवल components को छोड़कर updates और नए components मिलते रहेंगे
- migration codemod की बजाय agent skill के रूप में दिया जा रहा है, ताकि बदले हुए components और उनके usages को component-दर-component धीरे-धीरे migrate किया जा सके, और
.migration/report तथा git commit छोड़े जाएँ - chat UI components, GitHub repository-आधारित registry,
shadcn eject, और नया style Rhea जुड़ने के साथ shadcn/ui का दायरा component वितरण और product UI निर्माण के पूरे क्षेत्र तक फैल रहा है
Base UI अब डिफ़ॉल्ट component library है
- जुलाई 2026 से Base UI को shadcn/ui की डिफ़ॉल्ट component library के रूप में निर्धारित किया गया है
- shadcn/ui जब जनवरी 2023 में लॉन्च हुआ था, तब यह Radix-आधारित था, और उस समय Radix unstyled headless components, API, accessibility, और real app उपयोग अनुभव वाला विकल्प था
- Base UI उसी टीम द्वारा बनाई जा रही नई library है जिसने Radix बनाया था, और shadcn/ui ने अपनी मौजूदा abstraction बनाए रखते हुए सभी components को Base UI के लिए फिर से बनाया है
- दिसंबर 2025 में
npx shadcn createमें दोनों libraries को चुनने की सुविधा दी गई थी, और जनवरी 2026 में Base UI docs पूरे किए गए
डिफ़ॉल्ट बदलने की वजह
-
Base UI की स्थिरता और उपयोग प्रवाह
- Base UI version 1.6.0 है
- साप्ताहिक downloads 60 लाख से अधिक हैं
- Base UI टीम नियमित रूप से नए और उपयोगी components जारी करती है
- shadcn/ui के नए projects Base UI का उपयोग कर रहे हैं
- shadcn/create से बनने वाले projects में Base UI को Radix से 2:1 अनुपात में अधिक चुना जा रहा है
- shadcn/ui इस चयन प्रवाह को आधिकारिक डिफ़ॉल्ट के रूप में अपना रहा है
नए projects और docs में क्या बदलेगा
- नए project में
npx shadcn initचलाने पर Base UI डिफ़ॉल्ट विकल्प होगा - shadcn/create पहले Base UI दिखाएगा
- docs के component pages Base UI tab को डिफ़ॉल्ट रूप से खोलेंगे, और Radix docs एक क्लिक में उपलब्ध रहेंगे
Radix उपयोगकर्ताओं को क्या जानना चाहिए
-
Radix का समर्थन जारी रहेगा
- shadcn/ui Radix support बनाए रखेगा
- Base UI में ही मौजूद components को छोड़कर सभी updates और नए components दोनों libraries में दिए जाएँगे
- मौजूदा apps को migrate करने की ज़रूरत नहीं है
- Radix एक mature और tested library है
- shadcn/ui खुद भी production में Radix का उपयोग जारी रखे हुए है, और अपने internal projects को भी migrate नहीं कर रहा है
- अगर नए project में Radix पसंद हो, तो flag का उपयोग किया जा सकता है
- अगर
shadcn initको non-interactive script या CI में चलाया जाता है और Radix अपेक्षित है, तो पुराने path को बनाए रखने के लिए-b radixजोड़ना होगा - registry बनाते समय किसी खास library पर fix करना हो, तो
registry:basesetting दी जा सकती है - जिन items में यह setting नहीं है, वे अब Base UI से initialize होंगे
- नए projects के लिए Base UI की सिफारिश की जाती है
Base UI में migration कैसे होगा
- migration अनिवार्य नहीं है, लेकिन चाहें तो skill का उपयोग किया जा सकता है
- coding agent से इस तरह अनुरोध किया जा सकता है
migrate accordion to base-ui
- डिफ़ॉल्ट तरीका gradual migration है
- components और usages को एक-एक करके migrate किया जाता है
- project लगातार green और deployable स्थिति में बना रहता है
- काम के दौरान दोनों libraries साथ मौजूद रह सकती हैं
- बीच में रुककर बाद में फिर से जारी किया जा सकता है
- चाहें तो पूरे project को एक बार में migrate करने के लिए भी कहा जा सकता है
codemod की जगह skill क्यों चुना गया
- shadcn/ui components ऐसा code हैं जिनके मालिक उपयोगकर्ता खुद होते हैं और जिन्हें वे modify करते हैं, इसलिए codemod unmodified components पर तो ठीक हो सकता है, लेकिन बदले हुए components पर टूट सकता है
- skill में name changes, prop changes, और behavior differences दोनों libraries के आधार पर manually reviewed रूप में शामिल हैं
- agent उपयोगकर्ता द्वारा किए गए बदलावों को पहचानकर उन्हें migration target में भी लागू करता है
- जो बदलाव mechanically किए जा सकते हैं, वे पूरे codebase में बदले जाते हैं
- उदाहरण:
asChildकोrenderमें बदला जाता है
- उदाहरण:
- behavior changes को चुपचाप patch नहीं किया जाता, बल्कि दिखाया जाता है, और अंतिम निर्णय उपयोगकर्ता का होता है
migration से क्या artifacts मिलते हैं
- हर run तीन तरह के परिणाम छोड़ता है
- काम करने वाला code: success report से पहले typecheck और build चलाए जाते हैं
- component-wise report: project root के
.migration/में changes, वैसे ही छोड़े गए हिस्से, और manual verification checklist छोड़ी जाती है - साफ़ git history: branch पर हर component के लिए एक commit छोड़ा जाता है, और rollback के लिए branch हटाना काफी है
- report का उदाहरण
.migration/accordion.mdहै, जिसमें ये sections होते हैंChangedLeft aloneBehavior changesVerify by hand
- बिना किसी hidden state के प्रगति files और git history में दर्ज रहती है, इसलिए किसी भी agent या session से काम आगे बढ़ाया जा सकता है
- यह Claude Code, Cursor, और skill-supporting agents में काम करता है
- एक वास्तविक project test में 60 से अधिक components में 36 Radix थे, पूरा migration लगभग 25 मिनट में हुआ, और प्रति component लगभग 10 हज़ार tokens लगे
- build साफ़ तौर पर pass हुआ और customization बरकरार रहे
chat interface के लिए components जोड़े गए
- जून 2026 में chat interface बनाने के लिए नए components जोड़े गए
- पहला चरण conversation layer बनाने के मुख्य हिस्सों पर केंद्रित है
- scroll
- message rows
- bubbles
- attachments
- markers
- MessageScroller बातचीत के लिए scroll container है
- anchored turns
- streamed replies
- saved thread restore
- prepended history
- jump-to-message
- scroll controls
- visibility tracking को संभालता है
- MessageScroller messages, AI state, sending, saving, या model state का मालिक नहीं होता, और content renderer उपयोगकर्ता देता है
- MessageScroller,
@shadcn/reactके unstyled headless component के रूप में भी उपलब्ध है
Message, Bubble, Attachment, Marker की भूमिकाएँ
Messageबातचीत की एक row को व्यवस्थित करता है- avatar
- alignment
- header
- content
- footer
- grouped messages को संभालता है
Bubblemessage surface render करता है- variants
- alignment
- reactions
- links
- buttons
- collapsible content को support करता है
Attachmentfiles और images render करता है- media
- metadata
- upload state
- actions
- अलग से clickable action बनाए रखते हुए full-card trigger देता है
Markerstatus updates, system notes, bordered rows, और labeled dividers render करता है- streaming state
- tool activity
- date breaks जैसे उपयोगों के लिए इस्तेमाल होता है
- ये components छोटे आकार में डिज़ाइन किए गए हैं ताकि AI chat, support inbox, team thread, group chat, और product-specific conversation UI में मिलाकर उपयोग किए जा सकें
chat UI के लिए CSS utilities और @shadcn/react
- दो नई CSS utilities जोड़ी गईं
scroll-fade: scroll container के किनारों पर scroll-awareness fade जोड़ता हैshimmer:"Thinking…","Generating response…", tool execution, और streaming marker जैसे live-state text में shimmer जोड़ता है
- दोनों utilities
shadcn/tailwind.cssमें शामिल हैंnpx shadcn@latest initसे initialize किए गए projects में ये पहले से शामिल हैं
- @shadcn/react unstyled headless React components के लिए नया package है
- इसका पहला primitive
@shadcn/react/message-scrollerहै - registry components इसे shadcn/ui style में wrap करते हैं, लेकिन anchoring, auto-follow, prepend preservation, scroll commands, और visibility जैसे scroll behaviors package के भीतर रहते हैं
- इसका पहला primitive
- यह तरीका visual style से बँधे बिना behavior देता है, और कठिन interaction logic को एक ही जगह test करने देता है
- यह Radix और Base UI दोनों में इस्तेमाल किया जा सकता है
AI Elements के साथ संबंध
- नए chat components, AI Elements का स्थानापन्न नहीं हैं
- AI Elements के AI interface components और patterns का उपयोग जारी रखा जा सकता है
- इस release का फोकस chat के core pieces को एक-एक कर shadcn/ui में लाना है
- अगर आप पहले से AI Elements components उपयोग कर रहे हैं, तो app को फिर से लिखने की ज़रूरत नहीं है
- अगर आपको नई abstraction, updated styles, और Radix तथा Base UI दोनों का support चाहिए, तो shadcn/ui version आज़माया जा सकता है
GitHub repository को registry की तरह उपयोग करना
- जून 2026 से public GitHub repository को registry की तरह उपयोग किया जा सकता है
- repository root में
registry.jsonजोड़कर और वितरित किए जाने वाले items define करके, उपयोगकर्ताshadcnCLI से सीधे GitHub से install कर सकते हैं - GitHub registry एक source registry है
shadcn buildचलाने की ज़रूरत नहीं है- generated item JSON files publish करने की ज़रूरत नहीं है
- registry server सेट करने की ज़रूरत नहीं है
- CLI root में मौजूद
registry.jsonपढ़ता है,includeitems को resolve करता है, और अनुरोधित item ढूँढकर संबंधित files install करता है - registry items केवल components तक सीमित नहीं हैं
- components
- hooks
- utilities
- design tokens
- feature kits
- project conventions
- agent instructions
- testing setup
- CI workflows
- release workflows
- templates
- codemods
- migration kits
- और अन्य project files वितरित किए जा सकते हैं
- GitHub registry addresses वही commands में काम करते हैं जो मौजूदा registry addresses के लिए हैं
- list
- search
- view
- install
shadcn eject और shadcn/tailwind.css
- Radix और Base UI दोनों को support करते हुए, उन shared Tailwind utilities के लिए एक जगह चाहिए थी जिन पर दोनों libraries निर्भर हैं
- उदाहरण:
data-open:,data-closed:जैसे custom variants - उदाहरण:
no-scrollbarजैसी utility
- उदाहरण:
- RTL support के दौरान कुछ bugs भी हर component में दोहराकर लागू करने के बजाय एक जगह ठीक करना आसान था
- इसी के लिए
shadcn/tailwind.cssबनाया गयाinitचलाने पर global CSS file में@import "shadcn/tailwind.css"जोड़ दिया जाता है- यह
tw-animate-cssजैसे CSS import की तरह काम करता है - production में यह tree-shaken हो जाता है और build के समय resolve होने वाली छोटी dependency है
- अगर
shadcnpackage की CSS dependency नहीं चाहिए, तोshadcn ejectका उपयोग किया जा सकता है- यह
shadcn/tailwind.cssको global CSS file में inline कर देता है - project से
shadcndependency हटा देता है
- यह
- monorepo में command उसी workspace से चलानी होगी जहाँ
components.jsonऔर global CSS file मौजूद हों
नया style Rhea
- मई 2026 में नया shadcn/ui style Rhea जोड़ा गया
- Rhea, Luma का अधिक compact रूप है, जिसमें spacing कम है और surfaces अधिक dense हैं, और इसे focused product interface के लिए बनाया गया है
- Rhea, Luma की softness और shape बनाए रखते हुए buttons, inputs, menus, cards, और lists को अधिक कसाव के साथ व्यवस्थित करता है
- Luma के
--spacingको बदलने वाला तरीका नहीं चुना गया--spacingएक multiplier है, इसलिए इसे बदलने पर पूरे app मेंp-2,w-4,m-16जैसे परिचित Tailwind utilities का अर्थ बदल जाता
- Rhea अलग style के रूप में दिया गया है, ताकि component size, gap, और density को सीधे समायोजित किया जा सके, जबकि underlying utility scale पूर्वानुमेय बना रहे
- Rhea, shadcn/create में Radix और Base UI दोनों के लिए उपलब्ध है
1 टिप्पणियां
Hacker News की रायें
इस लेख में Claude वाली खास लेखन शैली काफी साफ दिखी, इसलिए अब यह थोड़ा थकाऊ और दूर-सा लगने लगा है
अगर किसी महत्वपूर्ण product launch पोस्ट तक को इंसान के पूरी तरह ध्यान देने लायक नहीं माना जाता, तो समझ नहीं आता कि सीमा कहां खींची जाए
अगर AI से लिखवाकर इस बेहतरीन open source software के विकास पर ज्यादा समय दिया जा सका, तो मैं इसे उल्टा अच्छी बात मानता हूं
“CD युग के MSDN reference और Raymond Chen blog style” को शुरुआती prompt बनाने से AI द्वारा बनाए गए plans को समझने की क्षमता काफी बढ़ गई; यह विनम्र, सूझ-बूझ वाला और पाठक का सम्मान करने वाला style है, इसलिए जोरदार सिफारिश करूंगा
अगर team का कोई व्यक्ति सामने आकर कहे कि इसे इंसान ने लिखा है, तो थोड़ा मजेदार होगा
AI जब भी काम में मदद करे, तो लोग उसे “पकड़ने” की कोशिश क्यों करते हैं, यह समझ नहीं आता; और यह कोई F500 कंपनी नहीं बल्कि open source project है। संसाधन भी सीमित होंगे और अंग्रेजी शायद उनकी मातृभाषा न हो
मेरा मानना है कि सहयोग की संस्कृति में भरोसा और सच्चाई जरूरी हैं, और मैं ऐसे लेख नहीं चाहता जहां AI झूठ बोले कि “मैंने किया/मैंने कहा”
उदाहरण के लिए, अगर यह लेख वाकई Claude ने लिखा है, तो “I said”, “I meant it” जैसे वाक्यों से ऐसा दिखाने की जरूरत क्या है कि team का कोई इंसान सीधे बोल रहा है? यह impersonation है और भ्रामक है। अगर सहयोग और ईमानदारी की संस्कृति बचानी है, तो उसे “मेरे इंसान ने कहा” कहना चाहिए, या कम से कम यह ठीक से बताना चाहिए कि यह इंसान की ओर से काम कर रहा AI है
उबाऊ applications में लोग Mantine जैसी पारंपरिक UI libraries की बजाय shadcn के copy-paste तरीके को पसंद करते हैं या नहीं, यह जानने की उत्सुकता है
copy-paste तरीका बदलने में आसान है, लेकिन नई समस्याएं भी लाता है। जिस काम के लिए बस version number बढ़ा देना चाहिए था, अब उसके लिए upgrade AI agent चाहिए हो जाता है
किसी उबाऊ app में नहीं, बल्कि एक बहुत बड़े app में, हर major version update पर API को काफी उलट-पुलट कर दिया जाता था, जिससे उबाऊ migrations करनी पड़ती थीं। shadcn पर आने के बाद single component upgrade करना और नए components आजादी से जोड़ना आसान हो गया। Material UI में कहीं भी नया feature इस्तेमाल करने के लिए पूरे को नए API के हिसाब से बदलना पड़ता था, लेकिन shadcn में यह चुनिंदा रूप से किया जा सकता है
फिर भी अगर लोग इसका मजे से इस्तेमाल करते हैं तो ठीक है; AI का एक फायदा यह है कि HN अब पहले जितना JavaScript frameworks की बातों से अटका नहीं रहता
बनी-बनाई UI library लाना short term में आसान होता है, लेकिन वे आम तौर पर जरूरत से ज्यादा जटिल होती हैं, उनमें वे features भी लागू होते हैं जिनका आप इस्तेमाल नहीं करते, उसी library का इस्तेमाल करने वाले अनगिनत apps से अलग दिखने की कोशिश में उन्हें बदलना मुश्किल होता है, और upgrade करते समय वे बदलाव सूक्ष्म तरीके से टूट जाते हैं। मेरे हिसाब से सबसे अच्छा तरीका अपनी UI library बनाना है। उसे खुद own करें, कई projects में reuse करें, चाहें तो वही visual style बनाए रखें, और सिर्फ जरूरी features जोड़ें
learning curve है, लेकिन मुझे नहीं लगता कि वह बहुत बड़ा है
व्यवहार में अक्सर component पूरी तरह जरूरी behavior नहीं देता, और लोग component पर extra CSS अक्सर जोड़ देते हैं। अगर विकल्प कई घंटों का काम हो, तो CSS की दो lines बहुत आकर्षक लगती हैं, लेकिन उन दो lines को भी component library के हर नए feature के साथ verify करना पड़ता है। ऐसे CSS patchwork ज्यादा हो जाएं तो upgrade अपने-आप में एक project बन जाता है
इन popular UI toolkits में div को जरूरत से ज्यादा render करना खटकता है
Base UI को देखने पर लगता है कि लगभग हर component “एक element render करता है” वाली शैली में है, जबकि accordion के लिए details/summary जैसे native elements हैं जो वही काम कर सकते हैं। मैं कोई native web evangelist नहीं हूं और मानता हूं कि web APIs, खासकर HTML, में भी काफी गलतियां हैं, लेकिन div का दुरुपयोग भी गलत है
मैंने Shadcn इस्तेमाल किया है और कुल मिलाकर पसंद है, लेकिन Radix आधारित radio buttons कुछ ज्यादा ही थे। इसी तरह जरूरत से ज्यादा फूला हुआ solution इस्तेमाल करने वाले select options भी हैं
https://news.ycombinator.com/item?id=46688971
एक side project में Ark UI आजमा रहा हूं, और tag input जैसे सचमुच उपयोगी components भी हैं: https://ark-ui.com/docs/components/tags-input
tabs/“segment group” component में animated active indicator है, जिसे implement करना काफी मुश्किल हो सकता है: https://ark-ui.com/docs/components/segment-group
लेकिन इसके साथ जरूरत से ज्यादा जटिल “click to copy” buttons या reimplementations भी हैं, और ये सभी verbose markup के साथ div soup render करते हैं: https://ark-ui.com/docs/components/clipboard, https://ark-ui.com/docs/components/collapsible
माइग्रेशन का काम codemod से LLM की ओर शिफ्ट होता दिख रहा है, यह दिलचस्प है
codemod ज़्यादा deterministic तो होता है, लेकिन सोच रहा हूँ कि क्या उसका दौर खत्म होने लगा है
फिर codemod चलाकर और दूसरे deterministic safety guards जोड़कर इसे दोहराया जा सकता है, और नतीजों को फिर से LLM में डालकर codemod को बेहतर किया जा सकता है
जरूरत LLM के लिए skill file की नहीं, बल्कि इंसानों के लिए documentation की होनी चाहिए। इंसानों के लिए migration guide लिखनी चाहिए। आखिरकार यह समझने में थोड़ा समय लगेगा कि skill file और documentation एक ही चीज होनी चाहिए
soft rules के लिए AGENTS.md file इस्तेमाल करते रहेंगे, और strong rules के लिए custom linter rules, मेरे हिसाब से यह दोनों worlds की खूबियाँ लेने का तरीका है
shad-CN इस्तेमाल करना चाहता हूँ, लेकिन हर बार अंत में Mantine पर ही लौट आता हूँ
कौन-सा context जोड़ना है यह याद रखने से यह कहीं ज्यादा तेज है
सोच रहा हूँ कि क्या यह बदलाव users को bundle size कम होने जैसे बेहतर नतीजे देता है
या यह Shadcn maintainers की quality of life बेहतर करने वाला बदलाव ज्यादा है
Angular में shadcn/ui के equivalent के तौर पर क्या है, यह जानना चाहूँगा
PrimeNG ने हाल ही में license बदला है, इसलिए नए project के लिए सही alternative ढूँढ रहा हूँ
PrimeNG, PrimeReact, PrimeVue सभी पूरी तरह closed source में बदल रहे हैं, और 2027 से लगातार इस्तेमाल के license की कीमत प्रति developer seat 800 डॉलर होगी[2]। मौजूदा repositories archive कर दी गई हैं[3]। PrimeFaces open source बना रहेगा, लेकिन अब इसे PrimeTek employees नहीं, बल्कि independent volunteer developers develop और maintain करेंगे
[1]: https://hn.algolia.com/?q=The+Next+Chapter+of+PrimeTek
[2]: https://primeui.dev/nextchapter
[3]: https://github.com/primefaces/primeng
हालांकि एक group ने PrimeNG को fork किया है और उसे maintain करने की योजना है। नया नाम अभी तय नहीं है
https://github.com/openng-org/open-prime
यह पूरा free open source है, और feedback या suggestions भेजें तो उन्हें Lily में आसानी से जोड़ा जा सकता है
https://lilydesignsystem.github.io
पुराने skeuomorphic style guides की याद आती है
शायद आखिरी Blueprint था
URL https://ui.shadcn.com/docs/changelog/2026-07-base-ui-default होना चाहिए