Still Soft
Trang chủ › Công Nghệ Mới

Node.js 26 lên LTS: có nên nâng cấp và lịch phát hành mới

Ban biên tập Still Soft ·
Node.js 26 lên LTS: có nên nâng cấp và lịch phát hành mới

Node.js 26 đã chuyển sang giai đoạn hỗ trợ dài hạn (LTS) vào cuối tháng 10/2026 và sẽ nhận bản vá bảo mật tới ngày 30/4/2029. Nếu dự án của bạn đang chạy Node 22 (hết hỗ trợ bảo mật 30/4/2027) thì đây là thời điểm hợp lý để lên kế hoạch nâng cấp; nếu đang ở Node 24 thì chưa gấp vì dòng này còn được vá tới 30/4/2028. Đáng chú ý hơn cả, Node.js 26 là bản cuối cùng theo mô hình "số chẵn mới thành LTS": từ Node 27, mỗi năm chỉ còn một bản và bản nào cũng thành LTS.

Mốc hỗ trợ của các dòng Node.js đang dùng

Bảng dưới lấy từ trang theo dõi vòng đời Node.js của endoflife.date, số liệu cập nhật tới ngày 11/11/2026:

Phiên bảnNgày phát hànhHết hỗ trợ tích cựcHết vá bảo mậtBản mới nhất
Node 2018/4/202322/10/202430/4/202620.20.2
Node 2224/4/202421/10/202530/4/202722.23.5
Node 246/5/202520/10/202630/4/202824.22.3
Node 265/5/202627/10/202730/4/202926.13.1

Điểm cần để ý: Node 20 đã hết vá bảo mật từ 30/4/2026. Nếu còn máy chủ hay image Docker nào dùng Node 20, đó là việc cần xử lý trước cả chuyện lên Node 26.

Những thay đổi kỹ thuật trong Node.js 26

Theo bài phân tích của InfoQ về Node.js 26 (7/2026), các điểm chính gồm:

Temporal bật sẵn

API Temporal không còn cần cờ thử nghiệm. Đây là lựa chọn thay thế cho đối tượng Date vốn nổi tiếng khó dùng, với hỗ trợ múi giờ, lịch, khoảng thời gian và thời điểm tuyệt đối. Với ứng dụng Việt Nam phải xử lý giờ Asia/Ho_Chi_Minh song song với giờ UTC của máy chủ cloud, Temporal giúp giảm loại lỗi "lệch 7 tiếng" quen thuộc ở các báo cáo cuối ngày.

V8 14.6 và Undici 8

V8 lên bản 14.6, bổ sung Map.prototype.getOrInsert(), getOrInsertComputed() và Iterator.concat(), kèm cải tiến JIT và thu gom rác. Undici, thư viện đứng sau hàm fetch() tích hợp, lên 8.0.2 mà không đổi API.

API bị gỡ và cảnh báo

  • http.Server.prototype.writeHeader() bị gỡ hẳn, thay bằng writeHead().
  • Các module cũ dạng _stream_* không còn.
  • Cờ --experimental-transform-types bị bỏ.
  • module.register() bị cảnh báo khi chạy (runtime deprecation).

Addon native phải build lại

NODE_MODULE_VERSION tăng lên 147. Mọi gói có phần C/C++ như bcrypt, sharp, canvas hay driver cơ sở dữ liệu native đều cần cài lại để biên dịch cho ABI mới. Trong CI, nên xóa cache node_modules khi đổi phiên bản Node để tránh lỗi tải nhầm binary cũ.

Lịch phát hành mới: một bản mỗi năm

Dự án Node.js đã công bố thay đổi lịch phát hành trên blog chính thức. Từ dòng 27.x, mỗi năm chỉ có một bản chính, phát hành vào tháng 4. Vòng đời gồm bốn pha:

  • Alpha (tháng 10 tới tháng 3): cho phép thay đổi phá vỡ tương thích, dành cho tác giả thư viện kiểm thử trong CI, không dùng cho production.
  • Current (tháng 4 tới tháng 10): giai đoạn ổn định hóa.
  • LTS (30 tháng từ tháng 10): vá lỗi và bảo mật.
  • EOL: hết hỗ trợ.

Tổng thời gian hỗ trợ tính từ lúc bản Current ra là 36 tháng. Số phiên bản sẽ khớp với năm phát hành bản Current: 27.0.0 vào năm 2027, 28.0.0 vào năm 2028. Node 27 bước vào Alpha từ tháng 10/2026, ra Current tháng 4/2027 và thành LTS tháng 10/2027.

Lý do được nêu khá thẳng thắn: mô hình cũ đã khoảng 10 năm tuổi, các bản số lẻ ít người dùng vì đa số chờ LTS, cách phân biệt chẵn lẻ gây rối cho người mới, và việc duy trì bốn năm dòng phát hành cùng lúc là gánh nặng cho đội tình nguyện viên.

Kế hoạch nâng cấp gợi ý cho đội nhỏ

Với một team 3–10 người duy trì vài dịch vụ Node, có thể chia việc như sau:

  1. Kiểm kê: liệt kê phiên bản Node trong Dockerfile, file .nvmrc, trường engines của package.json, cấu hình runtime trên cloud (Lambda, Cloud Run, App Service).
  2. Tìm API bị gỡ: tìm chuỗi writeHeader(, _stream_ và module.register trong code của bạn lẫn trong thư viện phụ thuộc trực tiếp.
  3. Thêm Node 26 vào ma trận CI: chạy song song với phiên bản hiện tại ít nhất hai tuần. Nếu bạn chưa có pipeline, bài hướng dẫn thiết lập CI/CD là điểm khởi đầu.
  4. Build lại addon native và kiểm tra image Docker có kích thước, thời gian khởi động tương đương.
  5. Triển khai dần: đưa một dịch vụ ít rủi ro lên trước, theo dõi bộ nhớ và độ trễ, rồi mới tới dịch vụ thanh toán hay xác thực.

Nếu ứng dụng chạy trong container, hãy đổi base image và kiểm tra lại các bước build theo những nguyên tắc trong bài cách dùng Docker container hóa ứng dụng.

Kiểm tra nhanh dự án đang dùng Node bản nào

Trước khi lên kế hoạch, hãy chắc chắn bạn biết chính xác phiên bản đang chạy ở từng môi trường, vì máy dev, CI và production thường lệch nhau:

  • Máy dev: chạy node -v; nếu dùng nvm, xem file .nvmrc trong thư mục dự án.
  • CI: tìm khóa node-version trong file workflow hoặc image dùng cho job build.
  • Docker: xem dòng FROM node:… trong Dockerfile; tag dạng lts hoặc latest sẽ tự đổi phiên bản theo thời gian, nên ghim số phiên bản cụ thể để tránh bất ngờ.
  • Serverless và PaaS: runtime được chọn trong cấu hình dịch vụ, thường không hiện trong mã nguồn.

Thêm trường engines vào package.json, ví dụ yêu cầu Node từ 26 trở lên, giúp npm cảnh báo khi ai đó cài dự án bằng phiên bản cũ.

Ai nên chờ, ai nên lên ngay

Không phải dự án nào cũng cần chạy theo phiên bản mới nhất. Một số tình huống cụ thể:

  • Đang ở Node 20: nâng cấp ngay, ưu tiên lên thẳng 24 hoặc 26 vì Node 20 đã không còn bản vá.
  • Đang ở Node 22: còn khoảng năm tháng trước mốc 30/4/2027. Lên Node 26 giúp bạn có thêm hai năm, tránh phải nâng cấp hai lần.
  • Đang ở Node 24: không cần vội. Có thể chờ các thư viện lớn trong dự án công bố hỗ trợ Node 26 đầy đủ.
  • Tác giả thư viện npm: nên thêm bản Alpha của Node 27 vào CI ngay khi có, đúng như khuyến nghị của dự án Node.js, để phát hiện lỗi trước khi người dùng gặp.

Với hầu hết đội phát triển sản phẩm, quy tắc đơn giản nhất từ nay là: chỉ dùng bản LTS cho production, và lên lịch nâng cấp mỗi tháng 10 khi một bản mới được thăng hạng.

Câu hỏi thường gặp

Node.js 26 được hỗ trợ tới khi nào?

Theo endoflife.date, Node.js 26 hết hỗ trợ tích cực ngày 27/10/2027 và hết vá bảo mật ngày 30/4/2029.

Từ Node 27 còn bản số lẻ không thành LTS nữa không?

Không. Theo lịch mới, mỗi năm chỉ có một bản chính phát hành tháng 4 và bản nào cũng được thăng lên LTS vào tháng 10 cùng năm. Khái niệm chẵn lẻ không còn ý nghĩa.

Nâng cấp lên Node 26 có phải sửa code nhiều không?

Phần lớn dự án web chỉ cần build lại các gói native và thay vài API cũ như writeHeader. Hãy chạy bộ test trên Node 26 trong CI trước để biết chính xác mức độ ảnh hưởng.

Có nên dùng bản Alpha của Node 27 cho dự án thật?

Không nên. Bản Alpha cho phép thay đổi phá vỡ tương thích và API có thể đổi giữa các lần phát hành. Nó dành cho tác giả thư viện và pipeline kiểm thử.

Bài liên quan