اگر توسعهدهنده فرونت-اند هستید و از قطعات آماده برای سرعت بخشیدن به پروژه استفاده میکنید، ابزاری که استاندارد کپی-پیست در صنعت است، تغییر مسیر داد. shadcn/ui از ژوئیه ۲۰۲۶، کتابخانه Base UI را به عنوان زیرساخت پیشفرض برای تمامی پروژههای جدید معرفی کرد.
این تغییر یک چرخش معماری برای ابزاری است که تجربه توسعه مدرن را بازتعریف کرد. سالها بود که shadcn/ui برای مدیریت منطق بدون استایل (Headless) و دسترسپذیری، به Radix UI تکیه میکرد. طبق مستندات رسمی، در ژانویه ۲۰۲۳، رادیکس به دلیل APIهای قوی و تستشده در میلیونها اپلیکیشن، انتخاب اول بود. اما تیم سازنده رادیکس، با استفاده از تجربیات نسل اول، Base UI را خلق کرد تا بهینهتر باشد.
همانطور که در تحلیلهای پیشین ما دربارهی تکامل سیستمهای طراحی (Design Systems) اشاره کردیم، جداسازی منطق از ظاهر، کلید مقیاسپذیری است. برای shadcn/ui، این تغییر از پیش تست شده بود؛ به گونهای که پروژههای ساخته شده با دستور shadcn create پیش از این هم با نسبت ۲ به ۱، Base UI را به رادیکس ترجیح میدادند.
به نقل از گزارش تغییرات در وبسایت ui.shadcn.com، این انتقال بهگونهای طراحی شده که باعث اختلال در پروژههای جاری نشود. نسخه ۱.۶.۰ از Base UI اکنون با بیش از ۶ میلیون دانلود هفتگی، وضعیت پایدار (Stable) دارد. پروژههای جدید که با npx shadcn init ساخته میشوند، بهطور پیشفرض از Base UI استفاده میکنند و مستندات نیز بر این اساس بهروز شدهاند.
رادیکس بازنشسته نشده است. طبق اعلام تیم توسعه، هر قطعه جدید برای هر دو کتابخانه منتشر میشود، مگر آنکه ویژگی خاصی فقط در Base UI موجود باشد. توصیه صریح این است که اگر اپلیکیشن شما در محیط عملیاتی (Production) پایدار است، نیازی به مهاجرت نیست؛ زیرا بدترین اتفاق برای یک اپلیکیشن فعال، تغییر ناگهانی کتابخانه قطعات است. برای کسانی که همچنان رادیکس را میخواهند، پرچم -b radix در دستورات init مسیر قدیمی را حفظ میکند.
برای کسانی که قصد مهاجرت دارند، shadcn/ui از روشهای سنتی تغییر کد (Codemod) دوری کرده است. تیم توسعه استدلال میکند که کدمدها در مواجهه با تغییرات دستی توسعهدهندگان در کلاسها یا ویژگیها، شکست میخورند. بهجای آن، آنها یک «مهارت» (Skill) برای عاملهای کدنویسی (AI Coding Agents) مثل Claude Code یا Cursor تعریف کردهاند.
این مهاجرت عاملمحور، بهصورت تدریجی پیش میرود. توسعهدهنده میتواند از عامل خود بخواهد: «قطعه Accordion را به base-ui منتقل کن». در این حالت، هر دو کتابخانه همزمان در پروژه حضور دارند و توسعهدهنده میتواند در هر لحظه متوقف شود و هفته بعد دوباره ادامه دهد. این سیستم تغییرات مکانیکی — مثل تبدیل asChild به render — را مدیریت میکند و تغییرات رفتاری را برای تصمیمگیری دستی علامتگذاری میکند.
هر مرحله از این انتقال، گزارشی دقیق در پوشه .migration/ ایجاد میکند که شامل موارد زیر است:
- تاریخ و استراتژی: زمان انتقال و حکم نهایی.
- تغییرات: لیست تمام فایلهای دستخورده و دلیل تغییر.
- موارد نادیدهگرفتهشده: فایلهایی که مرتبط به نظر میرسیدند اما تغییر نکردند.
- تغییرات رفتاری: تفاوتهایی که کد را نمیشکنند اما رفتار برنامه را تغییر میدهند.
- تأیید دستی: چکلیستی کوتاه (مثل کلیک یا تب زدن) که معمولاً یک دقیقه زمان میبرد.
در تستهای داخلی روی پروژههایی با بیش از ۶۰ قطعه، یک مهاجرت کامل حدود ۲۵ دقیقه زمان برد و برای هر قطعه حدود ۱۰ هزار توکن (Token) — تکههای کوچکی از متن که مدل میخورد — مصرف شد، بدون اینکه شخصیسازیهای قبلی از بین بروند.
در ژوئن ۲۰۲۶، این پلتفرم با معرفی مجموعهای از ابزارهای اولیه (Primitives) برای رابطهای چت، وارد دنیای تعاملات پیچیده هوش مصنوعی شد. هدف این است که توسعهدهندگان بتوانند هر بخش را بهطور مستقل جایگزین یا ترکیب کنند.
ابزارهای اولیه گفتگو:
- MessageScroller: ظرف اصلی اسکرول که منطقهای پیچیدهای مثل پاسخهای جریانی (Streamed)، بازیابی تاریخچه و ردیابی دید را مدیریت میکند. این بخش فقط رفتار را مدیریت میکند و صاحب وضعیت مدل یا دادهها نیست.
- Message: مدیریت چیدمان ردیف گفتگو شامل آواتار، ترازبندی و محتوا.
- Bubble: رندر کردن سطح پیام با پشتیبانی از واکنشها، لینکها و محتوای جمعشونده.
- Attachment: نمایش فایلها و تصاویر با وضعیت آپلود و متاداده.
- Marker: نمایش یادداشتهای سیستمی، بهروزرسانیهای وضعیت و جداکنندههای تاریخ.
این قطعات بهدلیل کوچک بودن، برای کاربردهای متنوعی از چتهای AI گرفته تا اینباکسهای پشتیبانی کاربرد دارند. برای پشتیبانی از این ساختار، بسته جدید @shadcn/react ایجاد شد تا قطعات بدون استایل و Headless را جای دهد. این بسته برای هر دو زیرساخت رادیکس و Base UI در دسترس است.
علاوه بر این، دو ابزار CSS جدید به shadcn/tailwind.css اضافه شد:
scroll-fade: ایجاد محوی در لبههای ظرفهای اسکرول برای اشاره به وجود محتوای بیشتر.shimmer: ایجاد درخشش متنی برای وضعیتهای فعال مثل «در حال تفکر...» یا «در حال تولید پاسخ».
فراتر از قطعات، shadcn/ui در حال تمرکززدایی از نحوه اشتراکگذاری است. اکنون هر مخزن عمومی گیتهاب میتواند با اضافه کردن یک فایل registry.json به یک رجیستری تبدیل شود. این یعنی دیگر نیازی به اجرای shadcn build یا راه اندازی سرور رجیستری نیست؛ CLI مستقیماً فایل JSON ریشه را میخواند و نصب میکند.
رجیستریهای گیتهاب فقط برای UI نیستند و میتوانند موارد زیر را توزیع کنند:
- هوکها (Hooks)، توابع کمکی و توکنهای طراحی.
- کیتهای ویژگی و قراردادهای پروژه (مثل
.editorconfigیا دستورالعملهای Agentها). - گردشکارهای CI/CD و قالبهای انتشار.
- کیتهای مهاجرت و کدمدها.
در نهایت، دستور shadcn eject در می ۲۰۲۶ معرفی شد. این دستور برای مدیریت یوتیلیتیهای مشترک Tailwind و پشتیبانی از راستبه-چپ (RTL) است. دستور eject تمام CSSهای مورد نیاز را مستقیماً در فایل global پروژه مینویسد و وابستگی به shadcn را بهطور کامل حذف میکند که برای مونو-ریپوهای بزرگ بسیار کاربردی است.
برای تکمیل این تغییرات فنی، استایل جدیدی به نام Rhea در می ۲۰۲۶ عرضه شد. Rhea در واقع نسخه متراکمترِ استایل Luma است. تیم توسعه میخواست نرمی Luma را حفظ کند اما تراکم اطلاعات را بالا ببرد. آنها بهجای تغییر متغیر --spacing که باعث میشد معنای p-2 یا w-4 در کل اپلیکیشن عوض شود و توسعهدهنده را گیج کند، استایل Rhea را به عنوان یک موجودیت مجزا تعریف کردند تا دکمهها و منوها فضای کمتری بگیرند و برای رابطهای متمرکز محصولی (Product Interfaces) ایدهآل باشند.
این تکامل نشان میدهد که shadcn/ui از یک مجموعه سادهی قطعات به یک چارچوب جامع سیستم طراحی تبدیل شده است. با جداسازی منطق (@shadcn/react)، توزیع (GitHub Registries) و ظاهر (Rhea/Luma)، این ابزار خود را برای عصری آماده میکند که عاملهای هوش مصنوعی بخش بزرگی از پیادهسازی را بر عهده میگیرند و توسعهدهندگان تنها روی ارکستراسیون سطح بالا تمرکز میکنند.
گام بعدی شما
- اگر پروژه فعلی شما پایدار است، طبق توصیه تیم، فعلاً مهاجرت نکنید؛ اما برای پروژههای جدید حتماً از Base UI استفاده کنید.
- برای پروژههای بزرگ، بهجای تغییر دستی، از Cursor یا Claude Code برای انتقال تدریجی قطعات (Component-by-component) استفاده کنید.
- اگر کتابخانه داخلی یا استانداردهای تیمی دارید، یک
registry.jsonدر گیتهاب بسازید تا توزیع ابزارها را ساده کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو