Waku به نسخهٔ ۱.۰-RC رسید
خلاصهٔ کاملتر
Waku نسخهٔ 1.0-RC رو منتشر کرد؛ فریمورکی مینیمال روی ریاکت که از روز اول حول React Server Components (یعنی کامپوننتهایی که سمت سرور رندر میشن و خروجیشون به مرورگر استریم میشه) طراحی شده. به گفتهٔ Sophia Andren، نویسندهٔ اعلامیه، با این نسخه APIهای عمومی تثبیت شدن و هر API ناپایداری هم صریحاً علامت خورده. تو مقاله اومده که این آخرین فرصت برای بازخوردیه که هنوز میتونه نسخهٔ ۱ رو عوض کنه.
شاخصترین قابلیت جدید، ناوبری type-safeه: هر API ناوبری حالا یه مقصد تایپدار میگیره، نه یه رشتهٔ خام.
router.push({ to: '/posts/[slug]', params: { slug } });الگوی مسیر از روی روتهای خودت autocomplete میشه و params هم از همون الگو تایپ میگیره. یعنی اگه اسم یه روت رو عوض کنی یا یه slug جا بندازی، همون موقع کامپایل خطا میگیری، نه اینکه بعداً کاربر به یه لینک خراب بخوره. همین مقصدها با replace و prefetch هم کار میکنن، search paramها از طریق یه codec برای هر روت تایپ میشن و APIهای رشتهای قدیمی هم هنوز کار میکنن.
قابلیت دوم ناوبری فوریه. Waku بخشهای ثابت هر مسیر رو همینطور که یادشون میگیره کش میکنه و کامپوننت Link میتونه یه مسیر رو قبل از کلیک کاربر گرم کنه. وقتی پوستهٔ یه مسیر کش شد، قابلیت آزمایشی unstable_instant بلافاصله همون رو نقاشی میکنه، حتی fallbackهای Suspense، و بعد بخشهای داینامیک رو استریم میکنه. برای کاربر یعنی صفحه انگار بیدرنگ عوض میشه.
بزرگترین تغییر شکستنی سراغ کانتکست رفته: کانتکست Waku حالا فقط به یه درخواست تعلق داره و تو روتر زندگی میکنه. unstable_getContext() و unstable_getContextData() از waku/server حذف شدن و جاشون unstable_getRequest()، unstable_getHeaders() و unstable_setNonce() از waku/router/server اومده؛ برای دادهٔ کانتکست باید AsyncLocalStorage خودت رو بیاری. میدلور Hono هم دیگه کانتکست Waku رو نمیبینه و برای کد داخل scope رندر باید با createInterceptor یه interceptor ثبت کنی.
جدا از اینها مدیریت درخواست سختگیرانهتر شده: بررسی origin برای جلوگیری از CSRF، اعتبارسنجی دقیقتر درخواستهای server action و یه محدودیت قابل تنظیم روی حجم body. حالا میشه کاربر رو به یه سایت بیرونی هم فرستاد. رفع اشکال هم روی مسیردهی مجدد، صفحههای پیدانشده، hash targetها و version skew انجام شده.
نکات کلیدی:
- تو 1.0-RC همهٔ APIهای عمومی تثبیت شدن و APIهای ناپایدار صریحاً علامت خوردن.
- router.push، replace و prefetch مقصد تایپدار میگیرن؛ اسم اشتباه روت خطای کامپایل میده.
- unstable_instant پوستهٔ کششدهٔ مسیر رو فوری نشون میده و بخش داینامیک رو بعدش استریم میکنه.
- unstable_getContext() از waku/server حذف شده و جاش unstable_getRequest() اومده.
- میدلور Hono دیگه کانتکست Waku رو نمیخونه و نمینویسه؛ جایگزینش createInterceptor هست.




