القرار · فصل ٤

التقييم من ١٠٠ — والقرار

Scoring Base UI vs React Aria vs Radix vs rc-* for a custom design system
🎯 الهدف: تقارن الأربعة بأرقام على ٧ معايير، وتطلع بقرار واضح حسب احتياجك.

الأربعة ينفعوا… بس المجهود مختلف

تقدر تطبّق الـ design system والـ animation بتاعتك على الأربعة. الفرق إن rc-* مش headless بجد: الـ animation ماشية بـ rc-motion اللي بيعتمد على classes بأسماء معينة (motionName)، وشكل الـ DOM ثابت، فانت بتعمل override بدل ما تبني من الأول.

جدول التقييم (من ١٠٠)

المعيارBase UIReact AriaRadixrc-*
حرية الـ styling والـ design system95959055
التحكم في الـ animation92888855
الـ Accessibility88988860
الـ RTL والـ i18n82977875
تغطية الـ components82907592
الـ DX وسهولة الاستخدام90728870
الـ ecosystem ومستقبل الصيانة90887070
الإجمالي88878060

تعليق على كل واحدة

Base UI — 88

أحسن توازن. API نضيف، و animation معمولة كويس (data-starting-style و --transform-origin)، ووراها فريق نشط و shadcn. ضعفها: لسه جديدة، وفيه components ناقصة أو أبسط من React Aria.

React Aria — 87

أقوى واحدة تقنيًا في الـ a11y والـ RTL والتواريخ والـ forms المعقدة. بتخسر في الـ DX لأنها verbose والـ learning curve عالي.

Radix — 80

ناضجة ومجرّبة في production. بس التطوير أبطأ لأن الصناع ركزوا على Base UI، والـ RTL أضعف. لمشروع جديد، مفيش سبب قوي تختارها بدل Base UI.

rc-* — 60

قوتها الوحيدة: components تقيلة جاهزة (TreeSelect، Cascader، virtual select). كأساس لـ design system خاص هتتعب، وهتفضل شبه antd.

القرار

خلّصت الفصل لما

🧠 اختبر نفسك
١) Base UI و React Aria قريبين جدًا في الإجمالي، إيه اللي يرجّح واحدة؟
لو العربي و RTL والتواريخ والـ a11y أولوية، React Aria. لو السرعة والـ DX والـ ecosystem أولوية، Base UI.
٢) المعيار الوحيد اللي rc-* كسبت فيه؟
تغطية الـ components (92)، لأن فيها components تقيلة جاهزة زي TreeSelect و Cascader.
٣) ليه Radix نزلت في "مستقبل الصيانة"؟
لأن نفس الصناع ركزوا على Base UI، فالتطوير في Radix بقى أبطأ.