
Node.js 26 の注目点 - Temporal 既定有効と「ビルドなしTS実行」の現在地
JavaScript ランタイムの「新標準を素直に取り込む」流れは、Deno だけのものではありません。Deno 2.7 が Temporal API を安定化したことを以前書きましたが、Node.js 26 では Temporal がデフォルトで有効になりました。つまり Temporal は、もう「どこか一つのランタイムの目玉機能」ではなく、JavaScript の新常識になりつつあります。
2026年5月5日にリリースされた Node.js 26 は、ほかにも「ビルドなしの TypeScript 実行」の安定化など、実務に効く更新が揃った版です。この記事では注目点を整理します。
Node.js 26 の注目点(早見表)
| 項目 | 内容 |
|---|---|
| Temporal API | デフォルト有効に。フラグ不要で新しい日時 API が使える |
| TypeScript 実行 | type stripping が安定化(実験フラグが外れた)。「消せる型」だけ実行できる |
| V8 | 14.6.202.33(Chromium 146)。Map.prototype.getOrInsert()、Iterator.concat() など |
| Undici | 8.0.2 へ。fetch の土台が更新 |
| 削除 | ServerResponse.prototype.writeHeader()、レガシー _stream_* モジュール、--experimental-transform-types フラグ |
| ステータス | 2026年5月時点は Current。2026年10月に LTS 入り予定 |
Temporal API がデフォルト有効に
最大の注目点が Temporal API のデフォルト有効化です。これまで実験的な位置づけでしたが、Node.js 26 ではフラグなしで使えます。
Temporal は、JavaScript の長年の弱点だった日時操作を刷新する新しい標準 API です。従来の Date は、ミュータブル・タイムゾーン扱いが貧弱・月が0始まり、といった落とし穴だらけで、date-fns や dayjs で補うのが常でした。Temporal はイミュータブルで、タイムゾーンを第一級に扱い、日付・時刻・期間を明確な型で表現します。
NOTE
Temporal は Node 固有の機能ではなく、ECMAScript の標準提案です。Deno 2.7 や Chrome でも実装が進んでおり、Node.js 26 はそれをランタイムでデフォルト提供したものです。標準なので、覚えた知識はブラウザでも他ランタイムでも活きます。「Temporal はもう新常識」と捉えてよい段階です。
「ビルドなし TypeScript 実行」の現在地
Node.js は近年、.ts ファイルをそのまま実行する機能を進めてきました。Node.js 26 では、この type stripping(型の除去)が安定化し、実験フラグが外れました。仕組みは「TypeScript の型注釈を空白に置き換えて、純粋な JavaScript として実行する」というものです。tsconfig.json もソースマップも不要な、軽量な方式です。
ただし、ここには重要な線引きがあります。type stripping が扱えるのは「消せる型(erasable syntax)」だけです。コード生成を伴う構文はサポートされません。
namespace A {
export let x = 1; // ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX
}具体的に、次の構文は type stripping では動きません。
- enum 宣言
- ランタイムコードを含む namespace(型だけの namespace は可)
- パラメータプロパティ(コンストラクタ引数での
private x等) - デコレータ
- インポートエイリアス
しかも Node.js 26 では、これらを変換していた --experimental-transform-types フラグが削除されました。つまり Node 本体の TypeScript 実行は、いよいよ「型を消すだけ」に一本化されたわけです。
WARNING
「Node がネイティブで TS を動かせるなら、もう tsx や ts-node は要らない」と早合点しないでください。enum・デコレータ・パラメータプロパティ・namespace を使うコードや、tsconfig.json の paths・古い JS ターゲットが必要なプロジェクトは、引き続き tsx / ts-node / tsc が必要です。Node の type stripping は「消せる型だけの軽量実行」と割り切るのが正解です。型チェック自体も行わない(あくまで実行)点にも注意。
設定スクリプトや小さな CLI など「消せる型」で書けるものは Node 単体で軽く回し、フル機能が要る本体コードは従来ツール、という使い分けが現実解です。ネイティブ言語で TS ツールチェーンを作り直す流れは TypeScript 7 の Go 移植とも地続きです。
その他の更新
V8 14.6(新しい言語機能)
V8 が 14.6.202.33(Chromium 146)に更新され、地味に効く新メソッドが入りました。
Map.prototype.getOrInsert()/getOrInsertComputed(): キーが無ければ挿入して返す。if (!map.has(k)) map.set(k, ...)の定番パターンが1行にIterator.concat(): イテレータの連結
Undici 8 と fetch
HTTP クライアントの Undici が 8.0.2 に更新されました。グローバルな fetch の実装を支える部分なので、HTTP まわりの挙動・性能に効きます。
削除されたもの(移行の関門)
メジャー更新なので破壊的変更があります。移行前に確認してください。
ServerResponse.prototype.writeHeader(): 削除。writeHead()を使う- レガシー stream モジュール:
_stream_wrap/_stream_readable/_stream_writable/_stream_duplex/_stream_transform/_stream_passthroughが削除 --experimental-transform-types: 削除(前述)- ビルド要件: GCC 13.2 へ、Python 3.9 サポート終了、Windows SDK 11 へ
まとめ
- Node.js 26(2026年5月5日)は Temporal がデフォルト有効。Deno に続き Node も標準提供で、Temporal は実質「JavaScript の新常識」に
- type stripping が安定化し
.tsを素で実行できるが、扱えるのは「消せる型」だけ。--experimental-transform-typesは削除された - enum・デコレータ・namespace・パラメータプロパティや
tsconfig.json依存があるなら、引き続きtsx/ts-node/tscが必要 - V8 14.6 で
Map.prototype.getOrInsert()・Iterator.concat()、Undici 8 で fetch 更新 writeHeader()やレガシー_stream_*削除、ビルド要件の引き上げに注意。2026年10月に LTS 入り予定
派手な新機能というより「標準を素直に・軽く取り込む」更新が中心の版です。Temporal とビルドなし TS 実行という2つの“当たり前化”を、自分のプロジェクトでどこまで使えるか確認しておくと、次の LTS への移行がスムーズになります。