388文字
2分
編集

React Aria Components 1.17.0

React Aria Components 1.17.0 は、Table に treeColumn とセル内のシェブロンを組み合わせた展開行、Virtualizer の可視矩形をウィンドウのビューポートへ自動バインドするページスクロール追随、GridList と ListBox の水平方向仮想化などを加えたマイナー更新である。

個別 npm パッケージだった @react-aria/* と @react-stately/*react-ariareact-stately のモノパッケージへ吸収し、React Aria Components が引き受ける依存数をおよそ 9 割削減した。各コンポーネントは react-aria-components/Menu のように名前付きサブパスからも import でき、ツリーシェイクに頼らず利用分だけをバンドルしやすくなった。

diff
-import {Menu, MenuItem, Popover} from 'react-aria-components';
+import {Menu, MenuItem, Popover} from 'react-aria-components/Menu';
  • 既存の @react-aria/button のようなスコープ付きパッケージは当面も動作するがモノパッケージからの再エクスポートとなり、新規エクスポートは追加されない。モノパッケージの transitive 依存として個別パッケージが暗黙に入る前提は崩れるため、依存は自前の package.json で宣言するかモノパッケージ import に寄せる必要がある。
  • npx @react-spectrum/codemods use-monopackagesuse-subpaths が案内され、前者はメインエントリへの集約、後者はサブパス import への置換を支援する。
  • webpack 4 や Jest 28 未満のように package.jsonexports.mjs に弱いツール向けの互換は維持しているが、将来のメジャーでは切り捨てる方針が述べられている。意図的に非公開だった型が露出していた TypeScript の挙動差もあり、非公開型に依存していたコードは修正が必要になる。

#参考文献