انتقل إلى المحتوى
uiify

أدلة التحقق

يمنع كل فحص أدناه الإصدار عند الإخلال بهدف الحجم أو السرعة أو إمكانية الوصول. ويأتي كل رقم في هذا الموقع من أحد هذه الفحوص.

شروط CI

الفحصالهدف
حجم الحزمة بعد ضغط gzipحدود لكل مكوّن في .size-limit.json
JavaScript على العميل في Tier 0صفر كيلوبايت — لا يُسمح باستدعاء أي Hook في React
مجموعة اختبارات تعطيل JavaScriptيجتازها Tier 0 كاملة؛ ويلتزم Tier 1/2 بعقد موثّق للسلوك المحدود
مخالفات Axeصفر في Chromium وFirefox وWebKit
حساب التخطيط القسري من المكتبةصفر مللي ثانية في تتبّع التفاعلات
زمن استجابة التفاعلمئتا مللي ثانية كحد أقصى مع إبطاء المعالج أربع مرات (Chromium)
عدد مرات العرضعمليتا تثبيت React كحد أقصى لكل تفاعل
Lighthouse (مسارات التوثيق)خمسة وتسعون جزءًا من مئة على الأقل للأداء، وواحد صحيح لإمكانية الوصول
Core Web VitalsLCP لا يتجاوز ألفين وخمسمئة مللي ثانية، وCLS لا يتجاوز عُشرًا، وTBT لا يتجاوز مئتي مللي ثانية

التحقق محليًا

npm run check:layout-reads    # banned geometry reads in packages
npm run checks                  # format, lint, typecheck, unit tests
npx playwright test --config=e2e/playwright-performance.config.ts
npm run bench                   # Radix comparison (local, not CI)

يجب أن تجتاز مكوّنات Tier 0 أيضًا مجموعة اختبارات تعطيل JavaScript (npm run test:no-js). انظر المستويات

إمكانية الوصول

  • axe-core — صفر مخالفات في Playwright عبر Chromium وFirefox وWebKit، على مسارات بيئة الاختبار المنسّقة وكل صفحة توثيق عامة.
  • التوافق مع APG — تتبع المكوّنات المركّبة ذات ARIA ممارسات التأليف لـ WAI-ARIA.

انظر إمكانية الوصول

تقرير مقارنة Radix

يُنشأ بأمر npm run bench من جذر المستودع. تشغّل نصوص التفاعل نفسها البيئتين؛ والأرقام المطلقة قياسات مخبرية فقط.

Performance Benchmark: uiify/components vs Radix UI

Methodology

  • Hardware: Apple M4 · darwin 25.5.0 · 16.0 GB RAM
  • Node: v24.18.0
  • uiify version: 0.0.0
  • Radix version: 2.3.7
  • Date: 2026-09-11
  • Warmup: 5 iterations (discarded)
  • Recorded: 50 iterations per metric
  • Trim: top/bottom 5%
  • Statistics: mean, stddev (median in results/*.json)
  • Hosts: uiify via apps/site /components/[slug]/test?profiler=true&controls=false (Next.js prod build); Radix via

benchmarks/app (Vite prod build, vite preview)

  • Headed Chromium, workers: 1, CPU throttle = 1 (raw rendering)

Results

React Commit Duration (ms) — lower is better

Componentuiify mean ± σRadix mean ± σΔ (uiify vs Radix)
select0.00 ± 0.000.00 ± 0.00—

Interaction FPS (fps) — higher is better

Componentuiify mean ± σRadix mean ± σΔ (uiify vs Radix)
select59.62 ± 4.1259.64 ± 2.92-0.0%

Forced Style/Layout (ms) — lower is better

Componentuiify mean ± σRadix mean ± σΔ (uiify vs Radix)
select0.00 ± 0.000.15 ± 0.03-100.0%

Heap After GC (MB) — lower is better

Componentuiify mean ± σRadix mean ± σΔ (uiify vs Radix)
select13.62 ± 3.1011.43 ± 3.10+19.2%

Bundle Size (kB, gzipped)

ComponentuiifyRadix
select0.0533.91

Notes

  • All measurements on headed Chrome (full GPU pipeline).
  • Variance reflects OS scheduler, GC, and browser internals.
  • The two hosts differ (Next.js SSR+hydration vs a standalone client app); both

are production builds driven by the same harness and BenchProfiler, but absolute numbers are lab-only and field behavior may differ.

  • Forced style/layout is measured in ms via the e2e CDP trace pipeline

(analyzeForcedLayout).