fate 1.0: فریمورک داده برای React ناهمزمان
خلاصهٔ کاملتر
مشکل رایج در اپهای React اینه که کامپوننتها مستقل از هم داده میگیرن، ریکوئستها در سطوح مختلف درخت کامپوننت اتفاق میافتن، و نگه داشتن حالت کلاینت سازگار معمولاً نیاز به invalidation دستی کش یا منطق پیچیده mutation داره. fate برای حل همین مشکل طراحی شده: بهجای کش کردن ریکوئستها، آبجکتها رو نرمالسازی میکنه و نیازهای دادهی همه کامپوننتها رو در یه ریکوئست واحد در ریشه اپ ترکیب میکنه.
مفهوم اصلی fate مبتنی بر View هاست — هر کامپوننت یه View تعریف میکنه که مشخص میکنه به چه فیلدهایی از داده نیاز داره. این View ها قابل ترکیباند و در نهایت از طریق useRequest در ریشه اپ به یه ریکوئست واحد تبدیل میشن:
export const PostView = view<Post>()({
author: UserView,
content: true,
id: true,
title: true,
});برای mutation هم fate از useActionState خود React استفاده میکنه. یعنی هیچ hook اختصاصی برای mutation وجود نداره و بهجاش مستقیم با React Actions کار میکنی. این رویکرد امکان آپدیتهای optimistic رو هم با API سادهای فراهم میکنه.
یکی از بزرگترین ویژگیهای نسخه ۱.۰، Live Views از طریق SSE (Server-Sent Events) هست. با جایگزین کردن useView با useLiveView، کامپوننت بهصورت real-time آپدیت میشه — بدون هیچ تنظیم اضافهای. چون کش fate نرمالسازیشدهست، subscriptionها به آبجکتها وابستهان نه به ریکوئستها، پس فقط کامپوننتهایی که دادهشون واقعاً عوض شده re-render میشن.
نسخه ۱.۰ پشتیبانی از Drizzle رو هم اضافه کرده و دیگه لازم نیست حتماً از tRPC استفاده کنی — یه HTTP transport بومی هم در دسترسه. علاوه بر این، پلاگین Vite جایگزین codegen دستی شده و هر وقت تایپهای سرور عوض بشن، خودکار همه چیز رو آپدیت میکنه. Garbage collection کش هم از Relay الهام گرفته شده: دادهی ۱۰ ریکوئست آخر حفظ میشه تا navigation رفتوبرگشتی سریع باشه، و دادههای قدیمیتر از حافظه پاک میشن.
نکات کلیدی:
- fate آبجکتها رو نرمالسازی میکنه نه ریکوئستها، که مدیریت کش رو قابل پیشبینیتر میکنه
- View ها با کامپوننتها co-locate میشن و به یه ریکوئست واحد در ریشه ترکیب میشن
- نسخه ۱.۰ شامل Live Views از طریق SSE با حداقل تغییر در کد میشه
- پشتیبانی از Drizzle اضافه شد و وابستگی به tRPC برداشته شد
- پلاگین Vite جایگزین codegen دستی شده
- Garbage collection کش با الهام از Relay برای مدیریت حافظه اضافه شد
- برای شروع: vp create fate my-app با چند template آماده




