الكتابات/blog/2026/05
Blog24 مايو 2026·6 دقيقة

TanStack Start مقابل Next.js: قصة الهجرة في 2026

أصدر TanStack Start إصداره الأول في 2026، وقلصت فرق مثل Inngest زمن التطوير المحلي بنسبة 83٪. متى تنتقل من Next.js ومتى تبقى عليه؟

طوال معظم العقد الماضي، كان اختيار إطار عمل تفاعلي لمشاريع React يعني فعليًا اختيار Next.js. في عام 2026، يُطرح هذا الخيار الافتراضي للمساءلة لأول مرة بشكل جدي. أطلق TanStack Start إصداره الأول v1.0 في مارس، وأعلنت سلسلة من الفرق الإنتاجية — وأبرزها Inngest — هجرتها العلنية من Next.js مع توثيق المقايضات.

هذه ليست دورة ضجيج جديدة حول إطار عمل، بل نقاش معماري حقيقي حول التحكم الصريح مقابل سحر الإطار، حول Vite مقابل Webpack/Turbopack، وحول مقدار التعقيد الذي تستعد الفرق لتحمله مقابل الحصول على React Server Components.

لماذا تتجاوز الفرق Next.js؟

لا يزال Next.js 16 إطار React الأكثر انتشارًا في العالم. لديه أفضل قصة نشر (Vercel)، وأكبر بيئة عمل، وأنضج البنى الأساسية للتخزين المؤقت وتحسين الصور وإعادة التوليد التدريجي. لم يتغير شيء من هذا.

ما تغيّر هو تكلفة البقاء عليه.

نشر فريق هندسة Inngest تقريرًا تفصيليًا عن الهجرة بعد استبدال تطبيقَي Next.js — خادم التطوير ولوحة التحكم — بـ TanStack Start. الأرقام التي ذكروها مدهشة:

  • انخفض زمن تحميل الصفحات المحلية الأولي من 10–12 ثانية إلى 2–3 ثوانٍ — أي انخفاض بنسبة 83٪
  • بعد تحميل المسار الأول، أصبحت التنقلات اللاحقة فورية فعليًا
  • جرّب الفريق ترقية Next.js والانتقال إلى Turbopack مرتين؛ وفّرت كل محاولة نحو ثانيتين فقط ولم تكن كافية
  • لم يحتج الأمر سوى لاستعادة إنتاجية واحدة خلال الانتقال

كانت الشكاوى النوعية داخل قناة Slack الخاصة بهم بليغة بنفس القدر. وصف المهندسون الذين يرتدون أكثر من قبعة توجيهَي "use client" و "use server" بأنهما عبء معرفي يدفعونه في كل ملف. كانت بيئات التطوير المحلية تتصرف بشكل مختلف عن الإنتاج. وكانت حدود async داخل React Server Components تجعل آثار الاستدعاء تختفي.

اصطدمت Inference.net بجدران مماثلة. ذكر فريقها ثلاثة أسباب للانتقال: تحكم أكثر دقة في المعمارية، وأمان توجيه على مستوى الترجمة، ورغبة في تجنب الارتباط الأقوى بـ Vercel الذي يأتي مع الاستخدام المتعمق لـ Next.js.

ما هو TanStack Start فعلاً؟

TanStack Start هو إطار React متكامل (full-stack) مبني على TanStack Router وVite. إنه الرفيق الإنتاجي لموجِّه يستخدمه آلاف الفرق بالفعل للحصول على توجيه آمن من حيث الأنواع في تطبيقات SPA. مع الإصدار v1.0، أضاف TanStack دوال خادم isomorphic، ومسارات تعتمد على الملفات، وعرض من جهة الخادم (SSR) مع التدفق، وأساسيات URL-as-state مع تحقق وقت التشغيل.

العرض بسيط: احتفظ بأمان الأنواع والتحكم الصريح في TanStack Router، أضف بيئة تشغيل خادم حقيقية، وانشر دون أي قيود مزوّد.

ما يمنحه لك ولا يوفره Next.js:

  • أمان أنواع شامل للمسارات ومعاملات البحث ومحمّلات البيانات ودوال الخادم
  • خادم تطوير مدعوم بـ Vite مع HMR شبه فوري
  • تحكم صريح في SSR لكل مسار بدلًا من حدود "use client" / "use server" الضمنية
  • انشر في أي مكان — لا بيئة تشغيل edge متعصبة، ولا ارتباط بمزوّد
  • تكامل عميق مع TanStack Query للجلب المسبق والترطيب

ما لا يمنحه لك بعد:

  • دعم React Server Components لا يزال يصل كإضافة v1.x غير كاسرة
  • مُحسِّن صور مدمج (تستخدم الفرق @unpic/react أو شبكة CDN)
  • صقل النشر الذي تتمتع به Next.js على Vercel
  • نفس عمق الدروس المجتمعية وإجابات Stack Overflow وبيانات تدريب أدوات الذكاء الاصطناعي

الأداء: تحقق من الواقع

وضع معيار شائع لعام 2026 من BeyondIT الإطارين جنبًا إلى جنب على تطبيق مماثل. الأرقام لا تتوّج فائزًا بقدر ما تكشف عن مقايضة:

المقياسNext.js 16 (RSC)TanStack Start v1
حجم الحزمة (gzipped)150–176 ك.ب100–120 ك.ب
First Contentful Paintنحو 1050 م.ثنحو 1100 م.ث
Time to Interactiveنحو 1200 م.ثنحو 1600 م.ث
بدء خادم التطوير من الصفر10–12 ثانية (تطبيقات كبيرة)2–3 ثوانٍ
HMR بعد التعديل0.8–2 ثأقل من 200 م.ث

اقرأ بعناية: يمكن أن يفوز Next.js في مقاييس الإنتاج التي يراها المستخدم لأن الترطيب الجزئي يشحن JavaScript أقل للأجزاء التفاعلية. يفوز TanStack Start في تجربة المطور وحجم الحزمة وضمانات أمان الأنواع. إذا كان فريقك صغيرًا ويُصدر بانتظام، فإن مكسب حلقة التطوير يتراكم يوميًا. إذا كنت تخدم ملايين المستخدمين على أجهزة بطيئة، فإن وفورات الترطيب في RSC لا تزال مهمة.

كيف تبدو الهجرة فعليًا؟

يتقاطع الدليل الرسمي للهجرة من Next.js إلى TanStack Start ودراسة حالة Inngest على نفس النمط. التوجيه يخرّط واحد إلى واحد تقريبًا:

Next.jsTanStack Start
src/app/layout.tsxsrc/app/__root.tsx
src/app/page.tsxsrc/app/index.tsx
src/app/posts/[slug]/page.tsxsrc/app/posts/$slug.tsx
src/app/posts/[...slug]/page.tsxsrc/app/posts/$.tsx
src/app/api/hello/route.tssrc/app/api/hello.ts

تتحول Server Components إلى دوال loader على المسار. وتتحول Server Actions إلى createServerFn. ويصبح next/image هو @unpic/react. وتحلّ دالة head() في تعريف المسار محل تصدير metadata.

يبدو مسار TanStack Start النموذجي هكذا:

import { createFileRoute } from '@tanstack/react-router'
import { createServerFn } from '@tanstack/react-start'
import { z } from 'zod'
 
const getPost = createServerFn({ method: 'GET' })
  .inputValidator(z.object({ slug: z.string() }))
  .handler(async ({ data }) => {
    return db.posts.findUnique({ where: { slug: data.slug } })
  })
 
export const Route = createFileRoute('/posts/$slug')({
  loader: ({ params }) => getPost({ data: { slug: params.slug } }),
  component: PostPage,
})
 
function PostPage() {
  const post = Route.useLoaderData()
  return <article>{post.body}</article>
}

كل جزء من هذا — المعاملات، نوع الإرجاع للمحمّل، مدخلات دالة الخادم — مكتوب بأنواعه من البداية إلى النهاية. أعد تسمية معامل وسيُدرج TypeScript كل استدعاء معطّل.

نمط الهجرة "بالقوة الغاشمة"

كان القرار الأكثر مفاجأة لـ Inngest هو الهجرة دفعة واحدة بدلًا من التدرج. منطقهم:

  1. الموجِّه وأساسيات SSR مختلفان بما يكفي لخلق نظامَي توجيه متنافسَين داخل التطبيق نفسه عند الهجرة التدريجية
  2. كانت وكلاء البرمجة بالذكاء الاصطناعي قادرة على إنجاز التحويل الميكانيكي في أيام
  3. كانت اختبارات قبول المستخدم واستعادة إنتاجية واحدة أرخص من أسابيع من الصيانة المزدوجة

بالنسبة للوحة التحكم، أنجز مهندس واحد بمساعدة الذكاء الاصطناعي الهجرة في نحو أسبوعين. وحُجبت تطوير الميزات لمدة يومين إلى ثلاثة أيام فقط أثناء الدمج النهائي.

متى تهاجر — ومتى لا تفعل؟

انتقل إلى TanStack Start إذا:

  • كان فريقك صغيرًا وكان احتكاك حلقة التطوير هو الشكوى الرئيسية
  • كنت تعتمد بشكل كبير على توجيه آمن من حيث الأنواع ومعاملات بحث مكتوبة
  • احتجت إلى النشر خارج Vercel دون محاربة افتراضيات الإطار
  • كانت معظم مساراتك تفاعلية (لوحات تحكم، أدوات داخلية، تطبيقات SaaS)
  • كنت تبدأ مشروعًا جديدًا وتريد تحكمًا صريحًا منذ اليوم الأول

ابقَ على Next.js إذا:

  • كنت تعتمد على React Server Components في الإنتاج اليوم
  • كانت طبيعة حركتك تكافئ حمولات الترطيب الأصغر على أجهزة الهاتف البطيئة
  • كنت تنشر على Vercel وتستخدم ISR و edge middleware و next/image بكثافة
  • كان فريقك كبيرًا بما يكفي ليكون التوظيف من خزّان مواهب Next.js مهمًا
  • كان لديك منطق تخزين مؤقت وإعادة تحقق عامل لا ترغب في إعادة تنفيذه

لا توجد إجابة صحيحة على مستوى الإطار، بل إجابة صحيحة فقط لقاعدة الكود الخاصة بك ولقيود فريقك.

ماذا يعني هذا لفرق منطقة MENA؟

بالنسبة للفرق في تونس والمملكة العربية السعودية ومنطقة الشرق الأوسط وشمال إفريقيا الأوسع التي تبني منتجات SaaS ومنصات داخلية، يكون الحساب غالبًا أقرب إلى Inngest منه إلى تطبيق استهلاكي أمريكي ضخم. تستفيد الفرق الصغيرة التي تشحن لوحات تحكم وأدوات إدارة بشكل غير متناسب من حلقات تطوير أسرع وضمانات أنواع أقوى. تكلفة منحنى تعلم أطول حقيقية، لكنها تكلفة لمرة واحدة تُدفع مقابل سنوات من السرعة المتراكمة.

الحركة العملية لمعظم الفرق: أبقِ الإنتاج على Next.js، ابدأ الأداة الداخلية أو لوحة الإدارة التالية على TanStack Start، ودع التجربة المُعاشة — لا معايير تويتر — تقرر التبني الأوسع.

الخلاصة

TanStack Start ليس قاتل Next.js. إنه أول بديل موثوق منذ Remix يجمع بين فلسفة متماسكة وبيئة عمل بجودة الإنتاج. حقيقة أن فرق الهندسة مستعدة لاستثمار أسبوعين من جهد الهجرة مقابل تحسن 83٪ في زمن التطوير تخبرك بشيء مهم: نقاش أطر React مفتوح مجددًا، وهذا أمر صحي للبيئة.

إذا لم تختبر على الأقل مسارًا واحدًا في TanStack Start، فأنت تعمل بمعلومات قديمة عن شكل مشهد أطر React في 2026.


قراءات ذات صلة على noqta.tn: