Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2022-04-05のJS: React 18、Vite 2.9.0、Firefoxの新しいパフォーマンスツール #974

Merged
merged 23 commits into from
Apr 6, 2022

Conversation

azu
Copy link
Member

@azu azu commented Apr 5, 2022

React 18が正式リリースされました。

Internet Explorerのサポートが終了されています。

主な変更としてConcurrent Renderingに対応するための変更と新しいAPIが追加されています。
setStateの呼び出しを自動的にバッチ化とopt-outするためのflushSyncを追加、緊急と緊急ではない状態の更新を扱うTransition APIがされています。

クライアントのReactDOM.renderとPReactDOM.hydrateとサーバのrenderToStringはそれぞれ非推奨となっています。 これに対応する新しいAPIとして、クライアントにcreateRoot/hydrateRoot、サーバにrenderToPipeableStream/renderToReadableStream`が追加されています。

また、<StrictMode>が開発時は再マウントをテストする挙動に変更、useId/useSyncExternalStore/useInsertionEffectのHooksの追加なども行われています。

詳しいマイグレーション方法については次のドキュメントが公開されています。

TypeScriptの型定義はまだReact 18の対応版が公開されていませんが、次のIssueとPRで対応されています。

React周辺のツールやライブラリのReact 18対応については、次の記事でまとめられています。


Vite 2.9.0がリリースされました。

依存関係のscanとpre-bundleの処理を改善、実験的にCSSのSource Mapのサポート、Web WorkerのSource Mapサポートの改善が含まれています。
Glob Importsに{ as: 'raw' }を追加し、{ assert: { type: 'raw' }}は非推奨化されています。

{ assert: { type: 'raw' }}はVite 2.8で、Import Assertionsを意識して導入された構文ですが、Import Assertionsは読み込むモジュールのtypeを検証(assert)する目的のProposalです。そのため読み込むモジュールの評価方法を変更する構文ではありません。

一方で、読み込むモジュールの評価方法を指定するProposalとしてImport Reflectionがあります。Vite 2.9では、こちらのImport Reflectionを意識した構文に変更されました。


Firefoxのパフォーマンスツールが新しくなっています。

UIも大きく変わり、取得できるデータもWebサイトや動画などの特性に合わせたプリセットが用意されていて、それぞれに合わせたプロファイルが取れるようになっています。
また、取得したパフォーマンスデータは https://profiler.firefox.com/ で表示と共有ができるようになっています。

@azu azu merged commit d1d0642 into develop Apr 6, 2022
@azu azu deleted the jser-week-586 branch April 6, 2022 00:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant