Loading blog posts...
Loading blog posts...
جاري التحميل...

أهم إعلان صدر عن Node.js في 2026 لا يحمل أي مخطط أداء. ففي مارس، أكد المشروع أنه بدءاً من Node.js 27، ستحصل كل نسخة رئيسية على دعم طويل الأمد (LTS) - تغيير في الجدولة، لا ميزة جديدة. وفي عام يواصل فيه Bun وDeno إطلاق بيئات تشغيل أسرع، قد يكون هذا التغيير "الممل" في الجدولة أقوى خطوة تنافسية قامت بها أي بيئة تشغيل JavaScript على الإطلاق.
يتخلى Node.js عن نموذجه القديم القائم منذ عقد: "النسخ الفردية تموت مبكراً". فبدءاً من Node.js 27، ستنتقل كل نسخة رئيسية إلى مرحلة LTS بعد مرحلتها الحالية (Current)، مع دعم يمتد نحو 30 شهراً، وفق إعلان تطوير جدول الإصدارات الرسمي. السبب المعلن صريح: النسخ ذات الأرقام الفردية شهدت اعتماداً ضعيفاً لأن المؤسسات ببساطة كانت تنتظر LTS. صحيح أن تجربة المسارين المزدوجين عملت كأرض تدريب - إذ اختُبرت Temporal وترقيات V8 وتحديثات Undici وإزالة بعض واجهات API على المسار الحالي قبل وصولها لمستخدمي الإنتاج - لكن النسخ الفردية "المؤقتة" أنتجت إصدارات لم ينشرها أحد فعلياً.
التشكيلة الحالية حتى يوليو 2026، بحسب صفحة إصدارات Node.js الرسمية:
| النسخة | الاسم الرمزي | الحالة | التاريخ المهم |
|---|---|---|---|
| Node 26 | - | حالية (Current) | تدخل LTS في أكتوبر 2026 |
| Node 24 | Krypton | LTS نشطة | أحدث LTS، تصحيحات حتى 24.16 |
| Node 22 | Jod | LTS في مرحلة الصيانة | تتجه نحو نهايتها |
| Node 20 | Iron | نهاية العمر | انتهى دعمها في 24 مارس 2026 |
لماذا هذا مهم: أخبر Node للتو كل فريق منصات على وجه الأرض: "يمكنك التخطيط لترقيات بيئة التشغيل للسنوات الخمس القادمة على تقويم واضح"، ولا تستطيع أي بيئة تشغيل منافسة قول الشيء نفسه بمصداقية.
لحروب بيئات التشغيل لوحة نتائج، وهي غير متكافئة أبداً. يضع استطلاع State of JavaScript 2025 نسبة مستخدمي Node.js عند نحو 90% من المشاركين (10,062 من أصل 11,141)، مقابل نحو 21% لـ Bun و11% لـ Deno. أما استطلاع Stack Overflow لعام 2025 فيُظهر تصدّر Node.js لفئة تقنيات الويب بأكملها بنسبة 49.1%، متقدماً على React التي حصلت على 46.9%.
ما يغيب عن كثيرين: أرقام Bun وDeno تميل بشدة نحو الاستخدام في التطوير والأدوات، لا في حركة الإنتاج الفعلية. نمو Bun حقيقي حيث يهم الأداء وتوحيد الأدوات - مشغّلات الاختبارات، والتجميع (bundling)، وخوادم التطوير المحلية - لكن المؤسسات لا تزال حذرة تجاه واجهاته سريعة التغير ونظامه البيئي الأصغر.
القراءة المخالفة للسائد: هذا ليس فوزاً لـ Node بالجدارة وحدها. إنه فوز بتكاليف التحول مضافاً إليها القدرة على التنبؤ. فعندما تأتي بيئة التشغيل مع عقد دعم مدته 30 شهراً، يصبح "أبطأ قليلاً من Bun" خطأ تقريب أمام "لا نعيد كتابة إجراءات التشغيل كل ربع سنة".
لماذا هذا مهم: قرار اختيار بيئة التشغيل في 2026 هو قرار متعلق بالمخاطر التشغيلية، وقد صوّت 90% من السوق بالفعل على نوع المخاطر الذي سيقبلونه.

Node 24 "Krypton" هي أول نسخة LTS منذ عدة دورات تعيد فيها التغييرات على مستوى اللغة تشكيل الشيفرة اليومية. العنوان الأبرز هو await using، أي الإدارة الصريحة للموارد التي تضع منطق التنظيف مباشرة في اللغة:
javascript// Before: manual cleanup, easy to leak on early return or throw async function query(pool, sql) { const conn = await pool.acquire; try { return await conn.query(sql); } finally { await conn.release; } } // Node 24: the connection disposes itself when scope exits async function query(pool, sql) { await using conn = await pool.acquire; return await conn.query(sql); }
يستدعي تعريف await using دالة [Symbol.asyncDispose] الخاصة بالكائن تلقائياً عند الخروج من النطاق - بما في ذلك حالات الاستثناءات والإرجاع المبكر. نمط try/finally الذي يحل محله هو بالضبط مصدر تسريبات الاتصالات في الشيفرات الحقيقية: يضيف أحدهم مسار إرجاع ثانياً، وينسى التأكد من أن كتلة finally تغطيه، فينضب مجمّع الاتصالات تحت الضغط بعد ثلاثة أسابيع. نقل التخلص من الموارد إلى اللغة يزيل فئة الخطأ بأكملها، لا الخطأ الفردي فحسب.
يأتي Node 24 أيضاً بواجهة URLPattern مدمجة، تُنهي عصر التوجيه اليدوي بالتعبيرات النمطية (regex) الذي أنتج ثغرات اجتياز المسارات (path traversal) وهجمات ReDoS في وسيطات Express وFastify لسنوات. أضف إلى ذلك V8 13.6 وnpm 11 وUndici 7 وتحسينات نموذج الأذونات (Permission Model) وفق ملاحظات إصدار Node.js 24.0.0، وستجد أن الإصدار "المحافظ" يحمل مضموناً حقيقياً.
لماذا هذا مهم: تصل ميزات Node عبر بوابات إصدار محافظة لا عبر تغيير مستمر، فيحصل فريقك على await using وURLPattern مع عقد توافق مرفق بهما.
يستطيع Node الآن تشغيل ملفات TypeScript مباشرة. أصبح تجريد الأنواع (type stripping) - أي تنفيذ ملفات .ts بحذف تعليقات الأنواع دون تحويل (transpilation) - مستقراً في الإصدارين v25.2.0 وv24.12.0، مع إزالة التحذيرات التجريبية منذ v24.3.0 وv22.18.0، وفق التوثيق الرسمي لـ TypeScript.
bash# No flags, no loaders, no ts-node. Just: node app.ts
كانت هذه الفكرة التأسيسية لـ Deno وواحدة من أقوى حجج Bun في سهولة الاستخدام. استوعبها Node بطريقته الخاصة: ببطء، خلف أعلام تجريبية، عبر ثلاث نسخ رئيسية، حتى استقرت الدلالات. ومع تحسّن التوافق بين CommonJS وESM، تفقد حجة "إعداد Node مزعج" آخر أنيابها.
جدير بالذكر ما لا يفعله تجريد الأنواع عمداً: فحص الأنواع. الأنواع تُحذف ولا تُتحقق، لذا لا تزال بحاجة إلى tsc --noEmit في CI. وإن كنت تقيّم سلسلة الأدوات الكاملة، فسرعة المترجم مهمة أيضاً - اطلع على كيف يغيّر تسريع الترجمة 11.9 مرة في TypeScript 7.0 استراتيجية البناء لترى النصف الآخر من المعادلة.
لماذا هذا مهم: كل ميزة سهولة استخدام امتلكها Bun وDeno يجري استيعابها في Node دون كسر مشروع واحد قائم، وهذا هو جوهر أطروحة LTS في صورة مصغّرة.

جلب فبراير 2026 متطلبات جديدة للإبلاغ الأمني إلى جانب إصداري v24.14 LTS وv25.7.0. وخلف ذلك عام كامل من العمل الهيكلي الموثق في التقرير الأمني السنوي لـ OpenJS لعام 2025: هيئة ترقيم ثغرات CVE تابعة لـ OpenJS، وأتمتة لسير عمل الإصدارات الأمنية في Node.js، وخطط رسمية للاستجابة للحوادث.
السياق يجعل الأمر ملحّاً لا بيروقراطياً. ففي سبتمبر 2025 ضرب هجوم على سلسلة توريد npm حزماً يتجاوز مجموع تنزيلاتها الأسبوعية ملياري تنزيل، واخترقت حملة Shai-Hulud أكثر من 180 حزمة مع موجات إضافية استمرت حتى 2026. نظام npm البيئي هو أكبر أصول Node وأكبر سطح هجوم له في آن واحد. ونموذج الأذونات في Node - الذي يقيّد الوصول إلى نظام الملفات والشبكة والعمليات الفرعية على مستوى بيئة التشغيل - هو الرد التقني المباشر، واستمرار تعزيزه في Node 24 يحوّل حجة "نموذج الأمان في Deno أفضل" من حجة حاسمة إلى حجة تتقلص.
Warning
تستهدف هجمات سلسلة التوريد بشكل متزايد سكربتات التثبيت ورموز CI، لا شيفرة التشغيل. الانضباط في إصدارات بيئة التشغيل يساعد، لكن فرض ملفات القفل (lockfiles) وسياسات --ignore-scripts لا تقل أهمية.
لماذا هذا مهم: الإصدارات الأمنية المؤتمتة والمتوقعة هي الفارق بين "تصحيح صباح الثلاثاء" و"اجتماع طوارئ للجميع"، وقد أصبح لدى Node الآن الآلية المؤسسية للخيار الأول.
إليك الإحصائية المزعجة: نحو ثلثي مستخدمي Node.js يشغّلون نسخاً قديمة أو غير مدعومة، وفق مؤسسة OpenJS. وقد دفعت هذه النتيجة إلى إطلاق برنامج ترقية وتحديث Node.js LTS في مارس 2026، مع NodeSource كأول شريك.
كلفة تجاهل الإيقاع ليست مجرّدة. فوفق صفحة نهاية العمر الرسمية لـ Node.js، يحمل Node 20 "Iron" بعد انتهاء دعمه 27 ثغرة عالية الخطورة و24 متوسطة و9 منخفضة دون تصحيح. أما Node 18 فعنده 15 عالية و19 متوسطة و4 منخفضة. هذه الأرقام تنمو فقط، وتأتي معها أعطال في سلسلة الأدوات وعلامات حمراء في الامتثال.
يعيد هذا صياغة حروب اللغات بالكامل. ميزة استقرار Node ليست تلقائية - إنها عقد لا يؤتي ثماره إلا حين يلتزم فريقك بجانبه بالبقاء على LTS النشطة أو في مرحلة الصيانة. نشر Node 18 في 2026 لا يملك شيئاً من الوضع الأمني ولا من مكاسب الأداء، ويحمل كل مخاطر التدقيق.
Important
وصل Node 20 إلى نهاية عمره في 24 مارس 2026. أي عبء إنتاجي لا يزال عليه يراكم ثغرات CVE معروفة لا يمكن تصحيحها. الترحيل من Node 22 إلى 24 هو قرار الترقية العملي لعام 2026.
لماذا هذا مهم: أكبر منافس لـ Node في 2026 هو Node القديم، وثلثا النظام البيئي يخسران أمامه حالياً.

أقوى دليل على فوز انضباط LTS ليس حصة Node السوقية - بل ما يفعله المتحدون. فقد قدّم Deno إصدارات LTS في Deno 2.x خصيصاً للفرق التي تحتاج قاعدة إنتاج مستقرة. وحين كان تميّزك هو "نتحرك بسرعة ونصلح أخطاء Node" وأصبحت خارطة طريقك تتضمن "نوافذ دعم طويلة الأمد"، فقد قال السوق كلمته حول ما يشتريه عملاء الإنتاج فعلاً.
يواصل Bun الفوز في الفئات التي تهيمن عليها السرعة الخام وتوحيد الأدوات: التطوير المحلي، وتنفيذ الاختبارات، وخطوط CI. وهذا موقع قوي بحق. لكن المؤسسات التي تقيّم Bun لحركة الإنتاج تذكر باستمرار التحفظات نفسها - نظام بيئي أصغر، وواجهات سريعة التغير، ولا مقابل لالتزام دعم مدته 30 شهراً.
الصياغة الصادقة لعام 2026: يدفع Bun وDeno فئة بيئات تشغيل JavaScript إلى الأمام، ويستوعب Node أفضل الأفكار بوتيرة LTS. تنمو Python عبر أعباء الذكاء الاصطناعي، وتجذب Rust وGo مطوري الأنظمة، لكن JavaScript الإنتاجية تواصل التمركز على بيئة التشغيل ذات عقود التوافق، ودعم مزودي السحابة، وتكامل npm، والألفة في التوظيف.
لماذا هذا مهم: عندما يبدأ كل منافس بإطلاق برامج LTS، يتوقف "الاستقرار كميزة قاتلة" عن كونه رأي Node ويصبح إجماع الصناعة.
ابدأ من هنا (خطوتك الأولى)
شغّل node --version عبر كل خدمة إنتاج اليوم. أي شيء أقل من 22 هو أولويتك؛ وأي شيء على 20 أو 18 هو عبء أمني فعلي وفق أعداد ثغرات نهاية العمر.
مكاسب سريعة (تأثير فوري)
npm ci وليس npm install أبداً) وفعّل --ignore-scripts للتثبيتات حيثما أمكن، نظراً لحملات سلسلة التوريد المستمرةتعمّق أكثر (لمن يريد المزيد)
--permission مع منح صريحة لـ --allow-fs-read و--allow-net) على خدمة واحدة غير حرجة ووثّق ما يتعطلawait using مع [Symbol.asyncDispose]، ثم قِس ما إذا كانت الحوادث المرتبطة بالتسريبات ستنخفض خلال الربع التاليقرار بيئة التشغيل في 2026 لا يتعلق بالصياغة اللغوية ولا بمخططات الأداء. يتعلق بالمنصة التي تتيح لك جدولة المخاطر بدلاً من امتصاصها، وإجابة Node - نسخة LTS سنوية لكل إصدار رئيسي، ونوافذ دعم لمدة 30 شهراً، وإصدارات أمنية مؤتمتة، وميزات تصل مُختبرة مسبقاً - هي حالياً الإجابة الكاملة الوحيدة في عالم JavaScript.
الإجراء العملي واضح بالقدر نفسه: الميزة لا توجد إلا للفرق التي تلتزم بالإيقاع. تعامل مع ترقيات بيئة التشغيل كعمل منصات ربع سنوي مخطط، وأبقِ الإنتاج على LTS النشطة أو في مرحلة الصيانة، واختبر مقابل النسخة الحالية حتى يمر انتقال Node 26 إلى LTS في أكتوبر دون أي ضجة. وفي عام تحدده هجمات سلسلة التوريد وتشرذم بيئات التشغيل، ربما يكون تقليل المفاجآت أثمن ميزة تقدمها أي بيئة تشغيل على الإطلاق.