پرش به محتویات

ابزارها و Dependencyهای Frontend

این جدول Baseline نصب‌شده را ثبت می‌کند. package.json و Lockfile منبع حقیقت نسخه دقیق هستند و ارتقا باید در Pull Request مستقل با Changelog، Advisory، Test و Build بررسی شود.

Runtime و UI

نیاز انتخاب نسخه Baseline دلیل
Runtime Node.js 24.18.0 خط پشتیبانی‌شده و Pinشده Image
Package Manager npm 11.16.0 Lockfile استاندارد Repository
Framework Next.js 16.3.0 App Router، Server Component و Standalone Output
UI Runtime React / React DOM 19.2.8 نسخه سازگار Pinشده با Framework
Language TypeScript 5.9.3 Strict Types و Contractهای داخلی
Styling Tailwind CSS 4.3.3 Utility CSS و Design Token قابل کنترل
Server State TanStack Query 5.101.4 Cache، Query Key، Cancellation و Mutation Lifecycle
Client State Zustand 5.0.14 Store کوچک و Selectorمحور برای UI State مشترک

Redux انتخاب نشده است، چون Baseline فعلی Server State را به TanStack Query می‌سپارد و نیاز Client State محدود است. اگر Workflow پیچیده، Event Trace یا State Machine بزرگ این فرض را نقض کند، مقایسه جدید با Metric و ADR انجام می‌شود.

کیفیت و Test

نیاز انتخاب
Lint ESLint 9 و eslint-config-next
Unit/Component Test Vitest 4 و Testing Library
Coverage V8 Coverage Provider
Compiler React Compiler Plugin
CI/CD GitHub Actions با Actionهای SHA-pinشده
Container Next.js Standalone روی Node Bookworm Slim Pinشده

ابزارهای مشروط

  • motion یا Framer Motion فقط برای نیاز UX تاییدشده و پس از بررسی Bundle و Reduced Motion؛
  • Schema Validator Runtime فقط وقتی Contract Boundary بدون آن امن و خوانا نیست؛
  • E2E Framework هم‌زمان با نخستین Flow حیاتی واقعی و با CI پایدار؛
  • Observability SDK پس از تصمیم Privacy، Sampling، Data Residency و Cost.

Dependency احتمالی پیش از مصرف واقعی نصب نمی‌شود.

سیاست Dependency

پیش از افزودن Package، Standard API یا کد کوچک داخلی، License، Maintenance، Advisory، Bundle Size، Runtime Cost، Tree Shaking، Type Quality و Lock-in مقایسه می‌شوند. نسخه latest یا Range شناور در Runtime Dependency مجاز نیست.

ابزارهای نامناسب به‌عنوان پیش‌فرض

  • Redux در کنار Zustand بدون نیاز اثبات‌شده؛
  • Axios وقتی fetch استاندارد نیاز را پوشش می‌دهد؛
  • UI Kit بزرگ پیش از Design System واقعی؛
  • Persistence عمومی Query یا Store؛
  • Local Storage برای Token؛
  • GraphQL، Micro-frontend و Client-side SPA کامل بدون ADR.