Vinext 1.0: Next.js روی Vite، مستقل از پلتفرم — بررسی عملی
نویسنده: آرش لطیفی
کلادفلر در سپتامبر ۲۰۲۶ نسخه ۱.۰ Vinext را منتشر کرد: فریمورکی سازگار با Next.js روی Vite که روی Workers، Netlify، AWS Lambda یا Node ساده دیپلوی میشود. چه چیزی را واقعاً ساپورت میکند، چطور سازگاری پروژهات را چک کنی و کِی ارزش تعویض دارد.
TL;DR — Vinext 1.0 (کلادفلر، سپتامبر ۲۰۲۶) فریمورکی سازگار با Next.js ساختهشده روی Vite است: هم App Router و هم Pages Router را با سازگاری تست بالای ۹۹٪ (روی فیچرهای پرتقاضا) اجرا میکند و روی Cloudflare Workers (حتی پلن رایگان)، Netlify، AWS Lambda یا Node دیپلوی میشود. با
npx vinext checkپروژهات را چک کن و باnpx vinext initمهاجرت کن.
اصلاً چرا یک «کلون» Next.js وجود دارد؟
Next.js به ران타یم خودش گره خورده. روی Vercel عالی است؛ هر جای دیگری — مخصوصاً رانتییمهای edge مثل Cloudflare Workers — همیشه با آداپتورها، APIهای جاافتاده و رفتار کشِ ناهماهنگ درگیر بودی. Vinext در فوریه ۲۰۲۶ به شکل یک آزمایش یکهفتهای با کمک AI شروع شد تا ببینند Next.js چقدر میشود را روی Vite بازسازی کرد. هفت ماه بعد، کلادفلر میگوید مشتریها آن را در پروดاکشن و روی اپلیکیشنهای پربازدید اجرا میکنند — برای همین به ۱.۰ رسید.
هدف اعلامشده هم portability است: هر اپ Next.js را بگیری — چه Pages Router چه App Router — و روی هر پلتفرمی دیپلوی کنی: Workers، Netlify، AWS Lambda یا Node ساده.
۱.۰ دقیقاً چه چیزهایی را ساپورت میکند
طبق اعلامیه رسمی کلادفلر:
- هر دو روتر، حتی اپهای ترکیبی — App Router و Pages Router، React Server Components، Server Actions، API routes، route handlers، middleware و ناوبری سمت کلاینت.
- چرخه کامل صفحه — رندر سمت سرور، pre-render در بیلد، استاتیک export و ISR سطح صفحه؛ با revalidation پسزمینه و on-demand که روی همه حالتهای خروجی کار میکند.
- کش — یک مجموعه توابع کش مشترک بین هر دو روتر و همه رانتییمها، بهعلاوه ساپورت Workers Cache کلادفلر.
- سازگاری تست بالای ۹۹٪ — بهجز cache components، روی فیچرهایی که مشتریها واقعاً خواسته بودند. کلادفلر همچنین هر شب سوئیت e2e خود Next.js را روی Vinext اجرا میکند تا رگرسیونها بلافاصله لو بروند.
درس سخت خود تیم هم آموزنده است: ساختن import { revalidatePath } با همین اسم ساده است؛ سختش این است که رفتار یکسان باشد — همان صفحات رندرشده، همان ورودیهای کش، و همان درخواستهای بعدی.
سازگاری پروژهات را با دو دستور چک کن
check اپت را اسکن میکند و میگوید چه فیچرهایی استفاده میکنی و Vinext از آنها ساپورت میکند یا نه. فقط بعد از اینکه گزارش برای فیچرهای وابستهات تمیز بود وارد مهاجرت شو — مخصوصاً اگر از فیچرهای خیلی جدید مثل cache components استفاده میکنی که صراحتاً بیرون از آن عدد ۹۹٪ هستند.
کجا به دردت میخورد، کجا نمیخورد
| موقعیت | توصیه |
| --- | --- |
| روی Vercel هستی، راضایی، از فیچرهای جدید استفاده میکنی | بمان رو Next.js — Vinext اینجا چیزی اضافه نمیکند |
| به دلایل زیرساختی داری هزینه Vercel میدی یا self-host میکنی | npx vinext check بزن؛ پلن رایگان Workers یا Lambda شاید هزینه را کم کند |
| اپت به فیچرهای برند Next.js وابسته است (مثل cache components) | صبر کن — سازگاری صراحتاً شاملشان نمیشود |
| اپ Pages Router داری وسط مهاجرت گیر کردهای | گزینه جالبی است: هر دو روتر و اپ hybrid را ساپورت میکند |
| نیازمندی edge داری (لاتنس کم، بدون سرور cold-start) | بهترین fit — خانه خودِ Vinext همینجاست |
قبل از تعویض، اینها را جدی بگیر
- تطابق رفتاری یعنی زمان. ۹۹٪ سازگاری یعنی ۱٪ باقیمانده ممکن است دقیقاً فیچر تو باشد. مسیرهای حیاتی (پرداخت، احراز هویت، revalidation) را قبل از مهاجرت تست کن.
- سمانتیک کش در هر رانتییم فرق میکند. اعلامیه روی ساپورت Workers Cache تأکید دارد؛ مطمئن شو ISR و on-demand revalidation روی پلتفرم هدف هم همانطور که انتظار داری رفتار میکنند.
- عقبماندن از نسخهها واقعی است. هر وقت Next.js تغییری میدهد، Vinext باید دنبالش برود — اجرای شبانه e2e ریسک را کم میکند ولی صفر نمیکند. حین مهاجرت نسخه Next.js را pin کن.
جمعبندی واقعبینانه: Vinext یک لایه portability است، نه جایگزین Next.js. اگر اپت قابلحمل است، آزادی دیپلوی هر جا میگیری. اگر به تازهترین فیچرهای انحصاری Next.js تکیه میکنی، خودت همان gap سازگاری خواهی بود.
Q: Vinext فقط برای کلادفلر است؟
نه. اعلامیه ۱.۰ صراحتاً دیپلوی همهجا را هدف گذاشته: Cloudflare Workers (شامل پلن رایگان)، Netlify، AWS Lambda و Node استاندارد. کلادفلر نگهداریاش میکند ولی lock-in به پلتفرم خودشان نداری.
Q: Pages Router را ساپورت میکند؟
بله — تمرکز آگاهانه نسخه ۱.۰ همین بود. کلادفلر میگوید خیلی از مشتریها کاربر قدیمی Pages Router هستند با اپهای بزرگ و پیچیده که مهاجرتشان سخت است؛ پس Vinext هر دو روتر و اپهای hybrid را ساپورت میکند.
Q: از کجا بفهمم اپ من سازگار است؟
npx vinext check را روی کد بیس واقعیات اجرا کن. گزارش سازگاری سطح-فیچر میدهد. هر چیزی در دستههای مستثنا (مخصوصاً cache components) را تا اعلام رسمی، ساپورتنشده فرض کن.