رفتن به محتوای اصلی

Node.js ۲۶؛ Temporal و تغییرات مهم

  • سینا قربانیان
  • ۲۱ آبان ۱۴۰۵
  • ۹ دقیقه مطالعه
  • ۰ بازدید
تصویر شاخص مقاله Node.js 26 و Temporal API
فهرست مطالب
  1. Node.js ۲۶ چیست و کی منتشر شد؟
  2. Temporal API در Node.js ۲۶ چیست و چرا مهم است؟
  3. Temporal و Date چه تفاوتی دارند؟
  4. چه تغییرات مهم دیگری در Node.js ۲۶ وجود دارد؟
  5. مدل جدید انتشار نسخه‌های Node.js و LTS چطور است؟
  6. چطور پروژه را به Node.js ۲۶ مهاجرت دهیم؟
  7. از تجربه تیم siloow
  8. محدودیت‌ها: چه زمانی هنوز به Node.js ۲۶ مهاجرت نکنیم؟
  9. جمع‌بندی
  10. منابع
  11. سوالات متداول درباره Node.js ۲۶
  12. آیا Node.js ۲۶ نسخه LTS است؟
  13. Temporal API در Node.js ۲۶ چه کاربردی دارد؟
  14. آیا برای استفاده از Temporal باید کتابخانه نصب کنم؟
  15. Node.js ۲۰ هنوز امن است؟
  16. از Node.js ۲۷ چه چیزی تغییر می‌کند؟

Node.js 26 نسخه اصلی جدید محیط اجرای جاوااسکریپت است که در ۵ مه ۲۰۲۶ منتشر شد و مهم‌ترین تغییرش فعال شدن پیش‌فرض Temporal API، جایگزین مدرن شیء قدیمی Date، است. Node.js ۲۶ در ۲۸ اکتبر ۲۰۲۶ با نسخه ۲۶.۱۳.۰ و نام رمز «Lithium» وارد دوره پشتیبانی بلندمدت (LTS) شد و طبق اعلام رسمی تا پایان آوریل ۲۰۲۹ به‌روزرسانی می‌گیرد؛ یعنی حالا گزینه مناسبی برای پروژه‌های تولیدی است.

نویسنده: تیم siloow (سیلو سولوشن) — آخرین به‌روزرسانی: آبان ۱۴۰۵

وضعیت تا آبان ۱۴۰۵: Node.js ۲۶.۰.۰ در ۵ مه ۲۰۲۶ منتشر شد و نسخه ۲۶.۱۳.۰ در ۲۸ اکتبر ۲۰۲۶ آن را به LTS با نام «Lithium» تبدیل کرد. Node.js ۲۰ به پایان عمر (EOL) رسیده و Node.js ۲۲ و ۲۴ همچنان LTS هستند. Node.js ۲۶ آخرین نسخه با مدل قدیمی «دو نسخه در سال» است؛ از Node.js ۲۷ هر سال فقط یک نسخه اصلی منتشر می‌شود و همه نسخه‌ها LTS خواهند شد. جزئیات برنامه آینده طبق خود پروژه Node.js قطعی نیست و ممکن است اصلاح شود.

در این مطلب می‌خوانید Temporal API چیست و چه مشکلی را حل می‌کند، چه چیزهایی در Node.js ۲۶ حذف یا منسوخ شده، مدل جدید انتشار نسخه‌ها چطور کار می‌کند و چطور یک پروژه را با خیال راحت به Node.js ۲۶ مهاجرت دهید.

Node.js ۲۶ چیست و کی منتشر شد؟

Node.js ۲۶ بیست‌وششمین نسخه اصلی (Major) محیط اجرای Node.js است که طبق یادداشت انتشار رسمی در ۵ مه ۲۰۲۶ با موتور V8 نسخه ۱۴.۶ (همان موتور Chromium ۱۴۶) منتشر شد. این نسخه شش ماه در وضعیت Current بود و در ۲۸ اکتبر ۲۰۲۶ به LTS رسید.

تفاوت Current و LTS برای تیم‌های فنی مهم است: نسخه Current برای آزمایش قابلیت‌های تازه است، اما صفحه رسمی نسخه‌های Node.js صریحاً توصیه می‌کند در محیط تولید فقط از نسخه‌های Active LTS یا Maintenance LTS استفاده شود. حالا که Node.js ۲۶ LTS شده، زمان مناسبی برای برنامه‌ریزی مهاجرت است.

نسخهنام رمزاولین انتشاروضعیت (آبان ۱۴۰۵)
Node.js 26Lithium۵ مه ۲۰۲۶LTS (جدیدترین)، به‌روزرسانی تا آوریل ۲۰۲۹
Node.js 24Krypton۶ مه ۲۰۲۵LTS
Node.js 22Jod۲۴ آوریل ۲۰۲۴LTS
Node.js 20Iron۱۷ آوریل ۲۰۲۳پایان عمر (EOL)
Node.js 25—۱۵ اکتبر ۲۰۲۵پایان عمر (EOL)
وضعیت نسخه‌های Node.js بر اساس صفحه رسمی Previous Releases

Temporal API در Node.js ۲۶ چیست و چرا مهم است؟

Temporal API یک API استاندارد و مدرن برای کار با تاریخ، زمان و منطقه زمانی در جاوااسکریپت است که در Node.js ۲۶ به‌صورت پیش‌فرض فعال شده و نیازی به فلگ یا کتابخانه جانبی ندارد. Temporal برای حل مشکلات قدیمی شیء Date طراحی شده است؛ مشکلاتی مثل تغییرپذیری (mutable بودن)، شمارش ماه از صفر، پشتیبانی ضعیف از منطقه زمانی و محاسبات اشتباه در تغییر ساعت تابستانی.

در Temporal، هر مفهوم نوع جداگانه دارد: Temporal.PlainDate برای تاریخ بدون ساعت، Temporal.ZonedDateTime برای زمان در یک منطقه زمانی مشخص، Temporal.Instant برای یک لحظه دقیق و Temporal.Duration برای مدت زمان. همه این اشیا تغییرناپذیرند؛ یعنی هر عملیات یک شیء جدید برمی‌گرداند و داده اصلی خراب نمی‌شود. مستندات کامل آن در MDN موجود است.

Temporal و Date چه تفاوتی دارند؟

تفاوت اصلی Temporal و Date این است که Date یک شیء واحد و تغییرپذیر برای همه کاربردهاست، اما Temporal برای هر نیاز نوع مشخص و تغییرناپذیر دارد. نتیجه عملی این است که در Temporal اشتباه‌های رایجی مثل اضافه کردن یک ماه به ۳۱ ژانویه یا محاسبه اختلاف دو زمان در منطقه‌های زمانی مختلف، رفتار صریح و قابل پیش‌بینی دارند و برنامه‌نویس مجبور است درباره منطقه زمانی تصمیم آگاهانه بگیرد.

نمونه کد Temporal API در Node.js 26 برای کار با تاریخ و منطقه زمانی
Temporal بدون فلگ در Node.js ۲۶

برای پروژه‌های ایرانی یک نکته مهم وجود دارد: Temporal از تقویم‌های غیرمیلادی از طریق داده‌های بین‌المللی‌سازی (ICU) پشتیبانی می‌کند و Node.js ۲۶ از ICU نسخه ۷۸.۳ استفاده می‌کند. با این حال قبل از اتکا به تقویم شمسی در محاسبات حساس مالی یا نوبت‌دهی، خروجی را در محیط خودتان تست کنید و کتابخانه‌های تاریخ شمسی فعلی را بدون آزمایش کنار نگذارید.

چه تغییرات مهم دیگری در Node.js ۲۶ وجود دارد؟

غیر از Temporal، Node.js ۲۶ مجموعه‌ای از تغییرات ناسازگار (semver-major) دارد که قبل از ارتقا باید بررسی شوند. مهم‌ترین موارد طبق یادداشت انتشار رسمی این‌ها هستند:

  • موتور V8 نسخه ۱۴.۶: متدهای getOrInsert() و getOrInsertComputed() برای Map و WeakMap و تابع Iterator.concat() اضافه شده‌اند.
  • Undici 8: پیاده‌سازی HTTP داخلی که fetch روی آن ساخته شده، به نسخه ۸.۰.۲ ارتقا یافته است.
  • حذف APIهای قدیمی: متد http.Server.prototype.writeHeader() حذف شد و باید از writeHead() استفاده کرد؛ ماژول‌های قدیمی _stream_readable، _stream_writable و مشابه آن‌ها هم حذف شده‌اند.
  • ماژول‌های native: مقدار NODE_MODULE_VERSION به ۱۴۷ تغییر کرده و افزونه‌های native (مثل برخی درایورهای دیتابیس یا کتابخانه‌های پردازش تصویر) باید دوباره کامپایل شوند.
  • منسوخ شدن module.register(): در زمان اجرا هشدار منسوخ بودن می‌دهد.
  • localStorage: بدون تعیین فایل ذخیره‌سازی، مقدار undefined برمی‌گرداند.
  • الزامات ساخت: حداقل GCC نسخه ۱۳.۲ و پایان پشتیبانی از Python ۳.۹ برای کسانی که Node را از سورس می‌سازند.

نکته: اگر از نسخه LTS قدیمی (۲۲ یا ۲۴) روی لینوکس به Node.js ۲۶ مهاجرت می‌کنید، طبق یادداشت انتشار ۲۶.۱۳.۰ ممکن است لازم باشد کتابخانه libatomic را جداگانه نصب کنید، چون باینری‌های رسمی لینوکس از Node.js ۲۵ به آن وابسته‌اند.

مدل جدید انتشار نسخه‌های Node.js و LTS چطور است؟

مدل جدید انتشار Node.js یعنی از Node.js ۲۷ به بعد هر سال فقط یک نسخه اصلی (در آوریل) منتشر می‌شود و همه نسخه‌ها، نه فقط نسخه‌های زوج، به LTS می‌رسند. پروژه Node.js این تغییر را در اطلاعیه Evolving the Node.js Release Schedule اعلام کرده و Node.js ۲۶ آخرین نسخه با مدل قدیمی فرد و زوج است.

ویژگیمدل قدیمی (تا Node.js ۲۶)مدل جدید (از Node.js ۲۷)
تعداد نسخه اصلی در سالدو نسخه (آوریل و اکتبر)یک نسخه (آوریل)
نسخه‌هایی که LTS می‌شوندفقط نسخه‌های زوجهمه نسخه‌ها
دوره آزمایشینسخه‌های فردکانال Alpha از اکتبر تا مارس
طول LTSحدود ۳۰ ماه۳۰ ماه (کل عمر ۳۶ ماه)
شماره نسخهترتیبیهم‌خوان با سال انتشار (۲۷ در ۲۰۲۷)
مقایسه مدل قدیمی و جدید انتشار Node.js؛ برنامه آینده طبق خود پروژه ممکن است اصلاح شود

برای تیم‌های کوچک این خبر خوبی است: دیگر لازم نیست بین نسخه فرد و زوج سردرگم شوند و چرخه ارتقای سالانه قابل پیش‌بینی‌تر می‌شود. کتابخانه‌نویس‌ها هم می‌توانند از کانال Alpha برای تست زودهنگام استفاده کنند.

چطور پروژه را به Node.js ۲۶ مهاجرت دهیم؟

مهاجرت به Node.js ۲۶ برای بیشتر پروژه‌های وب ساده است، به شرطی که مرحله‌به‌مرحله و با تست انجام شود. ترتیب پیشنهادی ما این است:

  1. وابستگی‌ها را به‌روز کنید: فریم‌ورک‌ها و ابزارهای ساخت مثل Next.js و Vite را به آخرین نسخه برسانید و بررسی کنید از Node.js ۲۶ پشتیبانی می‌کنند.
  2. ماژول‌های native را بازسازی کنید: پوشه node_modules را پاک و دوباره نصب کنید تا افزونه‌های native برای ABI جدید کامپایل شوند.
  3. هشدارهای منسوخ را بررسی کنید: برنامه را با Node.js ۲۶ اجرا کنید و هشدارهای Deprecation را در لاگ دنبال کنید.
  4. تست‌ها را اجرا کنید: به‌ویژه بخش‌هایی که با stream، HTTP و رمزنگاری کار می‌کنند.
  5. CI و Docker را به‌روز کنید: image پایه و نسخه Node در پایپ‌لاین را تغییر دهید و نسخه را در engines فایل package.json ثبت کنید.
  6. Temporal را تدریجی وارد کنید: کدهای جدید تاریخ و زمان را با Temporal بنویسید و کدهای قدیمی Date را فقط وقتی بازنویسی کنید که تست کافی دارند.

اگر پروژه شما روی Next.js است، پیش از ارتقا مطلب Next.js ۱۶ و نکات مهاجرت و هشدارهای امنیتی آسیب‌پذیری‌های Next.js و React Server Components را هم بخوانید؛ ابزار ساخت هم احتمالاً با Vite ۸ و Rolldown سریع‌تر شده است.

مراحل مهاجرت پروژه به Node.js 26 LTS
مسیر پیشنهادی ارتقا

از تجربه تیم siloow

از تجربه تیم siloow در توسعه وب‌اپلیکیشن‌های React مثل سیستم انبار و فروش و اپلیکیشن‌های مدیریت تیم: بیشترین دردسر ارتقای Node معمولاً از خود Node نیست، بلکه از یک وابستگی native قدیمی یا image داکری است که سال‌ها به‌روز نشده. به همین دلیل نسخه Node را در package.json و Dockerfile صریح ثبت می‌کنیم و ارتقا را اول روی محیط staging انجام می‌دهیم. درباره کار با تاریخ هم تجربه ما این است که باگ‌های منطقه زمانی در نوبت‌دهی و گزارش‌گیری بیشتر از هر جای دیگری خودشان را نشان می‌دهند؛ Temporal برای همین بخش‌ها ارزش واقعی دارد.

مقایسه مدل قدیمی و جدید انتشار نسخه‌های Node.js و LTS
از Node.js ۲۷ یک نسخه در سال

محدودیت‌ها: چه زمانی هنوز به Node.js ۲۶ مهاجرت نکنیم؟

مهاجرت فوری به Node.js ۲۶ همیشه لازم نیست. اگر پروژه شما روی Node.js ۲۲ یا ۲۴ پایدار است، هر دو هنوز LTS هستند و وصله امنیتی می‌گیرند. در این شرایط بهتر است ارتقا را در برنامه نگهداری عادی بگذارید. موارد زیر دلیل خوبی برای صبر کوتاه‌مدت هستند:

  • یک وابستگی حیاتی هنوز با Node.js ۲۶ سازگار اعلام نشده است.
  • هاست اشتراکی یا پنل میزبانی شما فعلاً Node.js ۲۶ را ارائه نمی‌دهد.
  • پروژه تست خودکار ندارد و ریسک ارتقا بدون تست بالاست.

اما اگر هنوز روی Node.js ۲۰ یا قدیمی‌تر هستید، تأخیر جایز نیست؛ نسخه‌ای که به پایان عمر رسیده دیگر وصله امنیتی نمی‌گیرد.

جمع‌بندی

  • Node.js ۲۶ در ۵ مه ۲۰۲۶ منتشر شد و در ۲۸ اکتبر ۲۰۲۶ با نام Lithium به LTS رسید.
  • Temporal API به‌صورت پیش‌فرض فعال است و جایگزین مدرن Date محسوب می‌شود.
  • APIهای قدیمی stream و writeHeader حذف شده و ماژول‌های native باید بازسازی شوند.
  • از Node.js ۲۷ هر سال یک نسخه اصلی منتشر می‌شود و همه نسخه‌ها LTS می‌شوند.
  • Node.js ۲۰ به پایان عمر رسیده؛ اگر روی آن هستید، مهاجرت را عقب نیندازید.

اگر وب‌اپلیکیشن شما روی نسخه قدیمی Node.js مانده یا برای ارتقای امن آن برنامه ندارید، تیم siloow می‌تواند ارزیابی، ارتقا و تست آن را انجام دهد؛ خدمات توسعه و پشتیبانی وب‌اپلیکیشن siloow را ببینید. برای اخبار بیشتر هم مگ siloow را دنبال کنید.

منابع

سوالات متداول درباره Node.js ۲۶

آیا Node.js ۲۶ نسخه LTS است؟

بله. Node.js ۲۶ در ۲۸ اکتبر ۲۰۲۶ با انتشار نسخه ۲۶.۱۳.۰ و نام رمز Lithium وارد LTS شد و طبق اعلام رسمی تا پایان آوریل ۲۰۲۹ به‌روزرسانی می‌گیرد.

Temporal API در Node.js ۲۶ چه کاربردی دارد؟

Temporal یک API استاندارد برای تاریخ، زمان و منطقه زمانی است که مشکلات شیء Date مثل تغییرپذیری و ضعف در مدیریت منطقه زمانی را ندارد. در Node.js ۲۶ بدون فلگ فعال است.

آیا برای استفاده از Temporal باید کتابخانه نصب کنم؟

در Node.js ۲۶ نه، Temporal به‌صورت پیش‌فرض در دسترس است. اما اگر کد شما در مرورگرهای قدیمی هم اجرا می‌شود، ممکن است برای آن‌ها polyfill لازم باشد.

Node.js ۲۰ هنوز امن است؟

خیر. طبق صفحه رسمی نسخه‌های Node.js، نسخه ۲۰ به پایان عمر رسیده و دیگر وصله امنیتی نمی‌گیرد. بهتر است به Node.js ۲۲، ۲۴ یا ۲۶ مهاجرت کنید.

از Node.js ۲۷ چه چیزی تغییر می‌کند؟

از Node.js ۲۷ هر سال فقط یک نسخه اصلی در آوریل منتشر می‌شود، همه نسخه‌ها LTS می‌شوند و یک کانال Alpha برای تست زودهنگام اضافه می‌شود. پروژه Node.js گفته این برنامه ممکن است اصلاح شود.

منبع: nodejs.org

اشتراک‌گذاری