مهاجرت Lovable از Next.js به TanStack Start
خلاصهٔ کاملتر
Lovable.dev یه سایت پرترافیکه: بالای ۴۲ میلیون بازدیدکنندهی یکتا در ماه، نزدیک ۴۰۰ تا route و بیش از ۹۱۰ هزار خط کد. تا قبل از این، این سایت با Next.js و روی Vercel هاست میشد، ولی تیم Lovable تصمیم گرفت اونو هم مثل بقیهی اپهای کاربراش، رو زیرساخت خودشون (Cloudflare Workers) سرو کنن. دلیل اصلیش داگفودینگ بود: میخواستن همون دردسرهایی که کاربرهاشون تجربه میکنن رو خودشون هم لمس کنن و تجربهی اسکیل کردن یه اپ بزرگ رو یاد بگیرن.
برای اینکه مهاجرت بدون قطعی جلو بره، هر دو فریمورک رو همزمان نگه داشتن و یه proxy تصمیم میگرفت کدوم route با کدوم فریمورک جواب داده بشه. چون رد شدن از یه فریمورک به فریمورک دیگه یعنی لود کامل صفحه (بهجای soft navigation)، از قابلیت View Transitions مرورگر استفاده کردن تا این جابهجایی به چشم نیاد:
@view-transition { navigation: auto; }همین یه خط باعث شد کارمندای خودشون دیگه متوجه رد شدن بین دو فریمورک نشن.
بخش بزرگی از جابهجایی کد رو هم agentهای هوش مصنوعی انجام دادن، نه تیمهای مختلف؛ چون خروجی agentها اونقدر خوب بود که یه نفر میتونست خودش ریویو و مرج کنه. برای این کار یه پوشهی مشترک (#shared/) درست کردن که هر دو فریمورک بهش دسترسی داشته باشن، با adapterهایی مثل usePathname که پشت یه اینترفیس مشترک، پیادهسازی مخصوص هر فریمورک رو قایم میکرد. در نهایت فقط ۳ درصد از کد وابسته به Next.js باقی موند.
تو مسیر رولاوت هم همهچی صاف نبود: یه بار وقتی درصد رولاوت داشبورد رو رسوندن به ۲۰٪، نرخ خطا از ۰.۱٪ ظرف چند دقیقه رسید به حدود ۵۰٪ و همهی آلارمها زده شد. علتش این بود که حافظهی V8 isolateها از حد مجاز (۱۲۸ مگابایت) رد شده بود؛ یه تغییر کوچیک و بیربط تو یه فایل JSON استاتیک، آخرین قطرهای بود که ظرف رو لبریز کرد. این قطعی ۱۱ دقیقه طول کشید تا با رولبک حل بشه، و بعدش با کارهایی مثل نخوندن JSONهای حجیم در سطح ماژول و حذف کدهای سمت کلاینت از باندل سرور، مصرف حافظه رو تا ۱۲ برابر تو بعضی روتها کم کردن.
نتیجهی نهایی: زمان پاسخدهی میانه (TTFB) ۴۹٪ کم شد، زمان build از حدود ۱۲ دقیقه به ۶ تا ۹ دقیقه رسید، و تجربهی توسعهی لوکال هم بهتر شد (استارت ۱۰ ثانیهای و ۱.۵ گیگ رم در TanStack در مقابل ۷۰ ثانیه و ۸ گیگ رم در Next.js). نویسنده میگه agentهای هوش مصنوعی هم روی TanStack Start که فریمورک جدیدتریه، عملکرد بهتری دارن، چون دیتای آموزشیش کمتر دچار تناقض نسخهبهنسخهست.
نکات کلیدی:
- سایت Lovable با ۴۲ میلیون+ بازدید ماهانه از Next.js/Vercel به TanStack Start روی Cloudflare Workers منتقل شد
- مهاجرت حدود دو ماه طول کشید و با اجرای موازی هر دو فریمورک و View Transitions API انجام شد
- بخش زیادی از جابهجایی کد رو agentهای هوش مصنوعی انجام دادن، نه تیمهای جداگانه
- یه قطعی ۱۱ دقیقهای بهخاطر پر شدن حافظهی V8 isolate (سقف ۱۲۸ مگابایت) رخ داد
- نتیجه: کاهش ۴۹٪ در TTFB میانه و کاهش زمان build از ۱۲ به ۶ تا ۹ دقیقه




