期間: 2026-09-28 〜 2026-09-30 · PR 56 件(新機能 4 / 変更・修正 22 / その他 30)
この期間の Release
安定版 3 件を公開: crates_v0.152.0、oxfmt_v0.71.0、oxlint_v1.86.0(いずれも 2026-09-28)。
新機能
react/only-export-components に allowCompoundComponents オプションを追加(#27117)
何ができるようになったか
有効にすると、すべてのプロパティが React コンポーネントである空でないオブジェクトのエクスポート(コンパウンドコンポーネント)を許可する。default export やエクスポートされたローカル束縛もチェックする。入れ子のオブジェクト・スプレッド・アクセサ・定数の混在・静的なコンポーネント名の無い無名関数は引き続き違反になる。eslint-plugin-react-refresh#117 の挙動に合わせたもの。
- 使い方:
"react/only-export-components": ["error", { "allowCompoundComponents": true }](既定はfalse)- 嬉しい場面:
export const Card = { Header, Body }のようにコンポーネントをまとめてエクスポートしたいとき
📦 oxlint_v1.86.0 に収録 · トピック: Linterルール個別修正
Minifier が同じ内容の隣接する if 文をまとめるように(#26445)
何ができるようになったか
同じ内容で終わる(return などで抜ける)隣接した
if文を 1 つにまとめる。
- 例:
if (a) { b; return d } if (c) { b; return d }→if (a || c) return b, d;
⏳ 未リリース · トピック: Minifier
Minifier が抜ける if ブロックの後ろの文を else 側へまとめるように(#26667)
何ができるようになったか
ifの consequent が終端文(returnなど)で終わるブロック文の場合にも、後続の文を else 側へ移して終端文を取り除く最適化を行うようになった。その結果、条件式へ畳み込めるようになる(#25489 の修正)。
- 例:
if (a()) { b(); return; } c();→if (a()) b(); else c();→a() ? b() : c();
⏳ 未リリース · トピック: Minifier
react/jsx-no-target-blank にサジェスチョンを実装(#27181)
何ができるようになったか
react/jsx-no-target-blankルールが修正のサジェスチョンを出せるようになった。上流のテストをすべて取り込んでいる(issue #1022)。
⏳ 未リリース · トピック: Linterルール個別修正
変更・修正
eslint/require-await が await using を await として数えるように(#27080)
Before
await using x = ...やfor (await using x of xs)しか await を含まない async 関数も報告され、危険な自動修正(--fix-dangerously)でasyncを外すと、パースできないコードになっていた。
After
await using宣言を await として数える(ESLint の eslint/eslint#19828 と同じ)。入れ子の関数・アロー関数の中は従来どおり数えない。
📦 oxlint_v1.86.0 · トピック: Linterルール個別修正
型リテラル内の式の演算子を見て型引数ではないと判定するように(#27122)
Before
波かっこ内の二項演算子や
extendsの無い三項演算子などがあっても型引数リストとして読み続けていたため、x = f<{a: b + c}>の次の行の/re/gを正規表現として扱えなかった。
After
tsc と同じく、これらが現れた時点で型引数の推測を打ち切り、次の行の
/re/gを正規表現と読む。mapped type の修飾子・計算キー・改行区切りのメンバーは従来どおり動く。
📦 oxlint_v1.86.0 · トピック: レキサー基盤
eslint/one-var の分割時に declare を保持するように(#27081)
Before
"never"の自動修正で宣言を分割すると、2 つ目以降からdeclareが落ちていた。declare var a: string, b: number;がdeclare var a: string; var b: number;になって実行時の宣言が増え、declare constではパースできないコードになっていた。
After
元の宣言に
declareがあれば、分割した各宣言にも(exportの後に)declareを付ける。
📦 oxlint_v1.86.0 · トピック: Linterルール個別修正
ディレクティブを含む IIFE を畳み込まないように(#27060)
Before
本体にディレクティブ(
"use strict"など)を含む IIFE も Minifier が畳み込んでいた。
After
本体にディレクティブがある IIFE はそのまま残す(#24331 関連)。
📦 oxlint_v1.86.0 · トピック: Minifier
typescript/no-unnecessary-parameter-property-assignment が引数の再代入を考慮するように(#26955)
Before
name = name.trim()の後のthis.name = nameのように、再代入した引数をコピーする必要な代入まで報告し、削除を提案していた。
After
typescript-eslint の #12880 を移植し、コンストラクタ引数への書き込み(入れ子の代入やアロー IIFE 内も含む)をソース順に追跡する。後からの書き込みや、無関係・シャドウされた束縛への書き込みでは報告を抑制しない。
📦 oxlint_v1.86.0 · トピック: Linterルール個別修正
no-unused-vars が args: "none" のときに reportUsedIgnorePattern で引数を報告しないように(#26925)
Before
args: "none"・argsIgnorePattern: "^_"・reportUsedIgnorePattern: trueの組み合わせで、function f(_a) { return _a; }の_aが報告されていた。
After
引数のチェックが無効なときは引数名の ignore パターン照合も無効にする。
destructuredArrayIgnorePatternのチェックは引数の中でも引き続き有効。
⏳ 未リリース · トピック: no-unused-vars
catch / finally ブロック内の using を変換するように(#27142)
Before
catchとfinallyブロックの中のusing/await using宣言が下位変換されていなかった(#27139)。
After
これらのブロック内の
using/await usingも変換する。
⏳ 未リリース · トピック: Explicit-Resource-Management
arguments コピーのループ書き換えで兄弟の宣言を残すように(#27140)
Before
argumentsをコピーするループを[...arguments]に書き換えるときに、同じvar文の兄弟の宣言子が消え、後のコードが使う束縛が失われていた(#27138)。
After
兄弟の宣言子を残す。初期化子付きの兄弟がある場合は評価順が変わりうるため、ループを書き換えない。
⏳ 未リリース · トピック: Minifier
Stdin モードで入れ子設定を解決する前にグローバルな ignore を確認するように(#27128)
Before
Stdin モードでは、グローバルな ignore 設定より先に入れ子の設定を解決していた。
After
他の実行経路と同じく、グローバルな ignore 設定を先に処理する。
⏳ 未リリース · トピック: Oxfmt
Oxfmt の LSP が .prettierignore の変更を反映するように(#27129)
Before
.prettierignoreを変更しても LSP サーバーでは更新されなかった。
After
監視しているファイルの変更で
.prettierignoreを読み直す。
⏳ 未リリース · トピック: Oxfmt
Stdin モードでもソース付きの診断を表示するように(#27130)
Before
Stdin モードではエラーの診断がソースコード付きの見やすい形式で表示されなかった。
After
Stdin モードでもソース付きの整形された診断を出力する。
⏳ 未リリース · トピック: Oxfmt
valid-title が許可された単語の後もチェックを続けるように(#27146)
Before
disallowedWordsを設定していると、どの単語にも一致しなくても、パターン・空白・重複した接頭辞のチェックの前に処理を終えていた(#27137)。
After
禁止語に一致しない限りチェックを続ける(上流の Jest・Vitest ルールと同じ)。jest・vitest の両プラグインが対象。
String.rawのタイトルは raw の文字列とテンプレートリテラルの範囲で検証する。
⏳ 未リリース · トピック: Linterルール個別修正
通常の for 文の初期化子の using を変換するように(#27148)
Before
通常の
for文の初期化子にあるusing/await using宣言が下位変換されていなかった。
After
ループ全体を抜けるとき(途中で抜けた場合や、後ろの初期化子でエラーが起きた場合も含む)にリソースを破棄するよう変換する。ラベル付き
continueがループを指し続けるよう、ラベルは破棄用のラッパーの内側に置く。
⏳ 未リリース · トピック: Explicit-Resource-Management
prefer-exponentiation-operator の自動修正で優先順位を保つように(#27150)
Before
安全な自動修正で
Math.pow(a, b).toFixed(2)がa ** b.toFixed(2)になり、メソッド呼び出しの対象が変わっていた(#27149)。
After
呼び出しがメンバーのオブジェクト・呼び出し先・タグ付きテンプレートのタグ・TypeScript の非 null 演算子やインスタンス化式の対象として使われているときは、置き換え結果をかっこで囲む。
⏳ 未リリース · トピック: Linterルール個別修正
呼び出し先と開きかっこの間のコメントを呼び出し先側に保つ(#27172)
Before
呼び出し先と開きかっこ(
(・?.・<)の間のコメントが移動していた。例:foo<T> // cの次行に(a)があるとfoo<T>(a); // cと出力されていた。
After
こうしたコメントは元の位置に留める(#27171)。
(/<の直後のコメントは、{や他の言語の方針とあわせて決めるため今回は変えていない。差異はDIVERGENCES.mdに追記された。
⏳ 未リリース · トピック: Oxfmt
isolated declarations が readonly 型の引数に対応(#27009)
Before
constructor(readonly value?: readonly string[])のような省略可能な引数で、| undefinedを付ける代わりに TS9025 エラーになっていた(#26944)。
After
readonly型演算子を、配列・タプル型と同じく| undefinedを付けて広げてよい型として扱う。既定値付きのreadonly引数の後に必須引数が続く場合にも対応した。
⏳ 未リリース · トピック: Isolated-Declarations
isolated declarations で keyof 型の引数にも | undefined を付けられるように(#27173)
Before
既定値付きの
keyof型の引数の後に必須引数が続くと、tsc 7 は受け付けるのに TS9025 が報告されていた。
After
すべての型演算子で
| undefinedを付けるようにし、export declare function keyOf(value: keyof Source | undefined, required: string): void;のように出力する。チェッカー無しで解決できない型では冗長な| undefinedが付くことがある(型としては同じ)。
⏳ 未リリース · トピック: Isolated-Declarations
3 項以上のシーケンスを含む条件式も畳み込むように(#27083)
Before
条件式の畳み込みは、2 項を超えるシーケンス式を含む場合に行われなかった。
After
a ? (b, c, d) : d→a && (b, c), d、a ? d : (b, c, d)→a || (b, c), dのように畳み込む。
⏳ 未リリース · トピック: Minifier
正規表現のキャプチャグループ名のエスケープをデコードするように(#27156)
Before
グループ名や名前付き後方参照の Unicode エスケープがデコードされず、
/(?<Ꭰ>)\k<Ꭰ>/のような同じ名前の別表記が一致しなかった。
After
エスケープをデコードして同じ名前として扱う。不正な名前は元の診断のままメインのパーサーに任せる。TypeScript コンフォーマンスの誤った無効参照の診断が消えた。
⏳ 未リリース · トピック: パーサー
クラスのインデックスシグネチャの修飾子エラーを重複して出さないように(#27190)
Before
クラスのインデックスシグネチャに不正な修飾子があると、診断が重複して報告されていた。
After
TS1071 を 1 回だけ報告する。他のクラスメンバーでは TS1031 を引き続き報告する。
⏳ 未リリース · トピック: パーサー
abstract interface に TS1242 を報告(#27191)
Before
abstract修飾子付きの interface 宣言をエラーにしていなかった。
After
既存の不正な
abstract修飾子の診断を使って TS1242 を報告する。
⏳ 未リリース · トピック: パーサー
abstract な async メソッドに TS1243 を報告(#27192)
Before
メソッドに
abstractとasyncを併用してもエラーにしていなかった。
After
どちらの順序で書いても TS1243 を報告する。Babel は
abstract asyncを受け付けるため、Babel のスナップショットではその差が記録されている。
⏳ 未リリース · トピック: パーサー
その他
- AST: 使われていない公開 API を削除(破壊的変更。
Decorator::name()、CallExpression::is_symbol_or_symbol_for_call、MemberExpressionKind::static_property_info、impl AsRef<str> for StringLiteral。JSStr 移行(#26242)に向けた整理)(#27123 📦 oxlint_v1.86.0、#27134、#27135、#27136 ⏳ 未リリース) react/only-export-componentsのチェック処理を簡素化(挙動は変わらない)(#27124)📦 oxlint_v1.86.0- Oxfmt のリファクタ・性能改善(CLI と LSP で ignore ロジックを共有、設定読み込みを共有する
ConfigScopesの導入、LSP のignorePatternsチェックでis_dir()を呼ばない、NAPI コールバックを drop guard で解放、入れ子の文脈からルートの JS 設定を解決しない)(#27125、#27126、#27127、#27141、#27147)⏳ 未リリース - docs(oxfmt): document why
format()API does not take cwd(#27131)⏳ 未リリース - docs(linter): link React Compiler rules to eslint-plugin-react-hooks docs(#27022)⏳ 未リリース
- Minifier のリファクタ・性能改善(
new_number_0で span を指定可能に、IfStatementの終端判定の短絡、minimize_conditionalの使用削減)(#27154、#25198、#26028)⏳ 未リリース - レキサーのリファクタ・性能改善(パイプラインの各段を
#[inline(never)]に、分類用 LUT をコンパイル時に計算、classify/compressモジュールへの整理、tablesディレクトリとTables・LexerのPairLutsの削除、Tablesをプロセスに 1 つだけに、キーワードの分岐なし分類、coalesceの静的値化など)(#27159、#27160、#27161、#27162、#27163、#27164、#27165、#27166、#27167、#27168、#27169、#27187、#27189)⏳ 未リリース - test(lexer): move
compressAVX2 tests intoavx2module(#27186)⏳ 未リリース - perf(napi): enable Wasm 128bit SIMD Extension(#27179)⏳ 未リリース