長らく Node.js では偶数バージョン (v22, v24 など) が LTS としてメンテナンスされてました。しかし 2027/4 リリース予定の v27 以降はそうではなくなります。Node.js 公式ブログで、v27 以降に取り入れられる新しいリリーススケジュールについて説明されています。
かいつまんで説明すると:
- major リリースは年2回から年1回となる
- 奇数番号だけでなく全てのリリースが LTS となる
- 早期テスト目的で利用されてた奇数リリースは alpha チャンネルで代替される
- alpha 期間は約半年確保
- v27 から新スケジュールで運用開始
- 暦に合わせた番号のバージョンがリリースされる
- 2027 年なら v27、2028 年なら v28...
公式ブログの説明によると Node.js メンテナーのメンテナンスやリリースの負担軽減が主な目的のようですが、我々ユーザによっても分かりやすくなって良いですね。
サービスに利用する Node.js では奇数バージョンの利用を避ける運用をしていたケースが多かったと思いますが、今後はそういう運用も変えていくことになりそうです。
追記: そもそも「LTS」の定義について
「全バージョンが LTS なら、何と比較して Long Term なサポートなんやねん」と思った人もいるかもしれません。ちょっと混乱するのですが、Node.js における「LTS」は major バージョンに割り当てられるステータスのようなものです。新たな major バージョンがリリースされると、まず半年間 Current というステータスになって、その後 30ヶ月間 LTS になります。Current では新機能がどんどん実装されていきますが、LTS ではセキュリティ修正などを主に受け付ける期間になります *1。
これは余談ですが、LTS はセキュリティ修正以外も受け付けることがあります。最近だと LTS であった Node.js 20 に require(ESM) が backport されています。
- https://nodejs.org/en/blog/release/v20.19.0#requireesm-is-now-enabled-by-default
- https://github.com/nodejs/node/pull/55085
安全に backport できること、エコシステムが ESM 移行を進めるために重要であることなどを理由に、LTS バージョンに backport されたようです。実際このおかげで ESM 移行がより進んでいますから、ありがたいことですね。
*1:v27 からは Current の前に Alpha というステータスが半年間追加されます。