JSer.info #544 - React 18のα版のリリースとReact 18での変更予定についての記事が公開されています。
React 18のα版はライブラリのメンテナー向けで、これにあわせてReactのワーキンググループが作られています。
React 18の詳細な変更予定については、次のDiscussionsにまとめられて議論されています。
React 18の変更は基本的に ReactDOM.createRoot
という新しいAPIを使った場合のopt-in方式となっています。
全体的な概要は次のスレッドにまとめられています。
それぞれの変更のサマリは次のようになっています。
- Replacing render with createRoot · Discussion #5 · reactwg/react-18
ReactDOM.render
の代わりとなるReact.createRoot
というRoot(Container)を作るためのAPIが追加された- Legacy
render
のAPIは互換性のために維持される - React 18の機能変更や機能追加は、基本的にこの新しい
React.createRoot
以下のTreeに適応される
- Automatic batching for fewer renders in React 18 · Discussion #21 · reactwg/react-18
- stateの変更が自動的にbatch処理(グループ化)して、レンダリングがまとめられる
- 以前あった
unstable_batchedUpdates
に相当する処理 - 意図的にそれぞれの変更でレンダリングする方法として
ReactDOM.flushSync
APIが追加されている
- Upgrading to React 18 on the server · Discussion #22 · reactwg/react-18
- Suspenseに対応したSSRをサポートする
pipeToNodeWritable
が追加される - 詳細な仕組みはNew Suspense SSR Architecture in React 18 #37で解説されている
- Suspenseに対応したSSRをサポートする
- New feature: startTransition · Discussion #41 · reactwg/react-18
- 遷移中を表現する
startTransition
について。 遷移中に不要なレンダリングをストップさせて、応答性を維持する目的
- 遷移中を表現する
- Adding Strict Effects to StrictMode · Discussion #19 · reactwg/react-18
- バグを見つけるためにDevelopmentモードの
StrictMode
ではコンポーネントを2重にレンダリングする - mount → unmount → mountとすることで意図しないeffectを見つける
- How to support strict effects · Discussion #18 · reactwg/react-18
- バグを見つけるためにDevelopmentモードの
Deno 1.11がリリースされました。
公式のDocker Imageを追加、Web Crypto APIsの改善とcrypto.randomUUID
のサポート、Fetch APIがAbortSignal
をサポートしています。
またdeno lint
がStableとなり、deno compile
でDynamic Importのサポート、Text{Encoder,Decodeer}Stream
のサポートなども含まれています。
その他には、deno lsp
の改善やDeno APIがfile://
なURL
オブジェクトをサポートするようになっています。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
Release v7.0.0 · d3/d3
github.com/d3/d3/releases/tag/v7.0.0
D3.js v7.0.0リリース。
ESMの対応、nullの対応を変更、d3.selectAll
などでArray-likeをArrayに変換して扱うように。
機能追加としてd3.mode
、d3.flatGroup
、d3.flatRollup
、transition.selectChild
の追加など
Release v0.7.0 · nextapps-de/flexsearch
github.com/nextapps-de/flexsearch/releases/tag/0.7.0
JavaScriptで書かれた全文検索エンジンのflexsearch 0.7.0リリース。
一から書き直されている。
メモリ消費量やパフォーマンスの改善、Bidirectional Contextのサポート、Node.jsのworker_thread
の対応など。
Deno 1.11 Release Notes | Deno Blog
Deno 1.11リリース。
Docker Imageの追加、Web Crypto APIsの改善とcrypto.randomUUID
のサポート、Fetch APIがAbortSignal
をサポート。
またdeno lint
がStableとなり、deno compile
でDynamic Importのサポート、Text{Encoder,Decodeer}Stream
のサポートなど。
Release 2.16.0 · qunitjs/qunit
github.com/qunitjs/qunit/releases/tag/2.16.0
QUnit 2.16.0リリース。
QUnit.test.each
メソッド、failOnZeroTests
オプション、TAPレポーターの対応。
QUnit.module
でPromiseを返した場合に警告がでるようになるなど
🎉 Announcing Plotly.js 2.0! - Graphing Library / Plotly.js - Plotly Community Forum
community.plotly.com/t/announcing-plotly-js-2-0/53675
Plotly.js 2.0リリース。
IE 9/10のサポート終了、非推奨のAPI、Plotly.plot()
やplotly.d3
などの削除。
CSPのusafe-eval
への対応、Custom Bundleの作成方法の追加など
CSS Layout Generator
CSS Grid Layoutのジェネレーターツール。
CSS Gridのプロパティを変更しながら、どのような表示になるかを確認できる
Release 5.0.0 · Unitech/pm2
github.com/Unitech/pm2/releases/tag/5.0.0
Nodeのプロセス管理ツールのpm2 5.0.0リリース。
ローカルのシステムモニタリングが新しくなり、サーバメトリクスの表示が追加された。
pm2.io へ送信するデータをJSON Patchベースの差分にすることで転送量の削減など
Introducing Astro: Ship Less JavaScript
astro.build/blog/introducing-astro
JavaScriptを含まない静的サイトを生成できるSSGツール。
Island Architectureのようにインタラクティブな部分だけJavaScriptを含んだコンポーネントを利用できるようになっている。
The Plan for React 18 – React Blog
reactjs.org/blog/2021/06/08/the-plan-for-react-18.html
React 18のαリリースと変更予定について。
Automatic batchingとflushSync
の追加、SuspenseのSSRサポートとpipeToNodeWritable
の追加、Concurrentモードのopt-inサポート。
新しいrender APIであるcreateDOM
の追加、バグを見つけるためにStrictModeではコンポーネントを2重にレンダリングするようなるなど。
また、ReactのWorking Groupのリポジトリが作成されている。
- Discussions · reactwg/react-18
- Automatic batching for fewer renders in React 18 · Discussion #21 · reactwg/react-18
- Upgrading to React 18 on the server · Discussion #22 · reactwg/react-18
- New feature: startTransition · Discussion #41 · reactwg/react-18
- Replacing render with createRoot · Discussion #5 · reactwg/react-18
- Adding Strict Effects to StrictMode · Discussion #19 · reactwg/react-18
Release v0.153.0 · facebook/flow
github.com/facebook/flow/releases/tag/v0.153.0
Flow 0.153.0リリース。
this
を使うクラスのメソッドを変数に入れてthis
のbindの解除をエラーとするように、flow fix
コマンドで自動修正を適用できるように
アーティクル
Introducing libSquoosh
web.dev/introducing-libsquoosh/
リサイズや圧縮などの画像処理を行うSquooshをライブラリとして利用できるlibSquooshの紹介記事。
Introducing the Memory Inspector - Chrome Developers
developer.chrome.com/blog/memory-inspector/
Chrome 91でDevToolsに追加されたMemory Inspectorについての記事。
ArrayBuffersのバイトをエンディアンを選択して見れる。またDWARFを使うことでC++やWasmのメモリも見れることについて
Strykerを使ってTypeScriptでMutation Testingする
zenn.dev/daikik/articles/8cd20776991a9c
Stryker-jsを使ったMutation Testingについて。
Securing Your Website With Subresource Integrity | CSS-Tricks
css-tricks.com/securing-your-website-with-subresource-integrity/
JavaScriptを配布するCDNやS3 bucketなどが書き換えられた場合にウェブサイトへの軽減するためのSubresource Integrity (SRI)の使い方についての記事。
What's coming in ESLint v8.0.0 - ESLint - Pluggable JavaScript linter
eslint.org/blog/2021/06/whats-coming-in-eslint-8.0.0
ESLint v8.0.0の変更予定について。
破壊的な変更として、Node 10のサポート終了、meta.hasSuggestions
とmeta.fixable
がそれぞれ必須に、CLIEngine
の削除など。
またES2022のサポート、利用してないeslint-disable
ディレクトリの--fix
に対応などを予定している。
書籍関係
From AVIF to WebP: A New Smashing Book By Addy Osmani — Smashing Magazine
www.smashingmagazine.com/2021/06/image-optimization-book-release/
画像フォーマット、画像の圧縮、ロード方法、レンダリング、Core Web Vitalsなどについての書籍