期間: 2026-09-17 〜 2026-09-24 · PR 5 件(新機能 0 / 変更・修正 3 / その他 2)

新機能

なし

変更・修正

S2 の Menu でローダー/null の前のセパレーターを非表示に(#10609)

Before

S2 では常にローディング用ノードをレンダーするため、セクション付き Menu で最後のセクションの後にもセパレーター(区切り線)が表示されてしまっていた。

After

次のノードがローダーまたは null のときはセパレーターを隠すようにした。あわせて、非同期ローディングの Menu の docs サンプルに幅を固定し、アイテム読み込み中にリサイズしないようにした。

⏳ 未リリース · トピック: Menu

コレクション内でキーが重複した場合に例外を投げるように(#10605)

Before

異なる要素が同じキーを持つとコレクションが壊れていた。['a', 'a', 'b'] のようなケースでは getKeyBefore('a') が自己ループを返して無限反復・メモリ枯渇のクラッシュにつながり、['a', 'x', 'a'] のようなケースでは反復すると 'a' しか出てこないのに size は 2 を報告するなど、要素が静かに失われていた。

After

Document が各キーを所有する ElementNode を記録するようにし、BaseCollection.addNode で既に別の要素がそのキーを所有している場合は「Duplicate key ”…” found in collection. Every item in a collection must have a unique key.」という例外を投げるようにした。所有権エントリは removeNode で解放され、resetAfterSSR でクリアされる。

移行が必要

これまで黙って壊れていたキー重複が、今後は開発時に例外として検出されるようになる。GridList・ListBox・Table などでキーが重複するデータを渡していないか確認する必要がある。

⏳ 未リリース · トピック: Collections

空応答の後に非同期アイテムが届いたとき ComboBox のメニューを再度開くよう修正(#9823)

Before

useComboBox を useAsyncList と組み合わせている場合、クエリが 0 件を返すとメニューが閉じ、その後結果を返すクエリがあってもメニューが再度開かなかった。open() には空の controlled コレクションでも開けるガードがあるが、自動クローズ側の useEffect には対称なガードがなく、filteredCollection.size === 0 で無条件にクローズしていたことが原因。

After

空の controlled コレクションによって自動クローズされたかどうかをフラグで追跡し、入力にフォーカスが残ったまま件数が 0 以外になったら再度メニューを開くようにした。ユーザー操作(blur・Escape・確定)によるクローズ時はこのフラグをリセットし、その場合は閉じたままになる。@react-spectrum/combobox コンポーネントは allowsEmptyCollection: true を自動設定して既にこの問題を回避していたが、useComboBox/useComboBoxState を直接使う場合や RAC の ComboBox にはこの自動対応がなかった。

⏳ 未リリース · トピック: ComboBox

その他

  • workflow icon パッケージの更新と S2 TableView のカラムメニューの変更(#10586)⏳ 未リリース
  • yarn dedupe(#10616)⏳ 未リリース