JSer.info #631 - Lighthouse 10がリリースされました。
Lighthouse 10では、スコアからTTIが削除され、CLSにスコアが移行されています。
また、AuditとしてBFCacheの検証、ペースト禁止の検証が追加されています。
その他には、LighthouseのJSON出力の構造が変更されています。
関連する内容として、CrUX History APIというChrome User Experience Report (CrUX) の履歴データを取得するAPIがリリースされています。
特定のページのWeb Vitalsの値のデータを1週間単位で取得できます。
core-js 3.28.0がリリースされました。
core-js 3.28.0では、2023-01のTC 39 Meetingsの結果を反映した変更が含まれています。
- Stage4となったChange Array by copy proposalをStableに移動
- Stage3の
JSON.parse
source text access、ArrayBuffer.prototype.transfer
、Explicit Resource Managementを追加 - Stage 2のSymbol Predicatesを実装
- Stage 1の
Number.range
をIterator.range
に変更
また、core-jsの歴史、財政的な支援の募集や今後の方針についての記事も公開されています。
オープンソースのメンテナンスと財政的な話についてはWorking in Publicという書籍がよくまとまっています。
Babelやcore-jsのように少人数のメンテナーと多くのユーザーというように比率が大きく異なるプロジェクトは、スタジアムモデルという形に分類されて紹介されています。
また、ソフトウェアはほぼ無料で配布できるため、利用者の数は増え続け、メンテナンスにかかる費用が高くなるという問題が知られています。
(オープンソース)ソフトウェアを購入する動機は減っている一方で、その社会的価値は劇的に上昇していて、多くの人やサイトはオープンソースソフトウェアに依存しています(モダンなウェブアプリのコードの97%はnpmからきているという話もあります)。
そのため、オープンソースコードはメンテナンスが必要な公共インフラストラクチャの一種であるという話もされています。
オープンソースへ財政的な支援をする個人や企業は増えています。
一方でソフトウェアの依存関係は膨大になっているため、どこに対して支援すればいいかわからない問題も指摘されています。
📝 依存関係から自動的に分配するサービスもあります。
また、特定の人へのSponsorは「寄付」の概念と混同されやすいですが、どちらかというそのクリエイターの将来の仕事に対する期待、関心に紐づくので、サブスクリプションのようなものという話もあります。
最近では特定のプロジェクトに対するSponsorではなく、特定の人に対するSponsorという文化的な変化も起きているという話が紹介されていました。
(これは、プロジェクトが成長段階に入るとコードを書く開発者以外にも、モデレートやドキュメントなどを中心にする人の重要度が高くなっていくという話とも関係しています)
この本の出版後なので含まれていませんが、Babelでも同様の話がされていたので、興味があるひとは読むと良いかもしれません。
このサイトも💚JSer.info SponsorなどのSponsorsとして財政的に支援できます。
Node.jsをWebブラウザ上で動作させて、Playgroundなどに利用できるWebContainersのAPIとパッケージが公開されています。
Svelte Tutorialなどで利用されている事例が紹介されています。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
Release Notes for Safari Technology Preview 163 | WebKit
webkit.org/blog/13839/release-notes-for-safari-technology-preview-163/
Safari Technology Preview 163リリース。
CSS GridのMasonry layoutをデフォルトで有効化、StorageManager.estimate()
のサポート、Web Crypto APIがEd25519をサポート。
非標準なHTMLHeadElement.profile
やHTMLFrameElement.location
などを削除
Release v3.2.0 · nuxt/nuxt
github.com/nuxt/nuxt/releases/tag/v3.2.0
Nuxt.js v3.2.0リリース。
Nuxt DevToolsの追加、useFetch
でのリクエストに自動的にCookieが付くように。
サーバのコードからclient-only componentを取り除くtreeshakeClientOnly
がデフォルトでtrue
へと変更など。
What's new in Lighthouse 10 - Chrome Developers
developer.chrome.com/blog/lighthouse-10-0/
Lighthouse 10リリース。
スコアからTTIが削除され、CLSにスコアが移行する。
AuditとしてBFCacheの検証、ペースト禁止の検証の追加。
Lighthouseの結果であるJSONの構造の変更など
Electron 23.0.0 | Electron
www.electronjs.org/blog/electron-23-0
Electron 23.0.0リリース。
Chromium 110、Node.js 18.12.1、V8 11.0へのアップデート。
Windows 7/8/8.1のサポートを終了、scroll-touch-*
イベントの削除。
機能追加としてWebUSB APIのサポートなど
Release v1 Because I finally got around to it · jquense/yup
github.com/jquense/yup/releases/tag/v1.0.0
スキーマを組み上げてバリデーションできるyup 1.0.0リリース。
tuple
の追加、bundleしたファイルを配布するように、when
APIの変更、emailバリデーションをWHATWGの定義と同じものへ変更。
cast
にignore-optionality
オプションを追加、型処理のパフォーマンス改善とObjectschema
クラスの追加など
Release DOMPurify 3.0.0 · cure53/DOMPurify
github.com/cure53/DOMPurify/releases/tag/3.0.0
DOMpurify 3.0.0リリース。
IEのサポートを終了、ALLOW_SELF_CLOSE_IN_ATTRP
オプションの追加など
Release 3.28.0 - 2023.02.14 · zloirock/core-js
github.com/zloirock/core-js/releases/tag/v3.28.0
core-js v3.28.0リリース。
Stage4となったChange Array by copy proposalをStableに移動。
Stage3のJSON.parse
source text access、ArrayBuffer.prototype.transfer
、Explicit Resource Managementを追加。
Stage 2のSymbol Predicatesを実装、Stage 1のNumber.range
をIterator.range
に変更など
Nextra 2 – Next.js Static Site Generator – The Guild
Next.jsベースの静的サイトジェネレータであるNextra 2リリース。
MDX2のサポート、Markdownのインポート、Next 13に対応、リモートのMarkdownファイルを読み込んでレンダリングできるように、FlexSearchを使った全文検索のサポートなど
アーティクル
Bringing Javascript to WebAssembly for Shopify Functions (2023)
shopify.engineering/javascript-in-webassembly-for-shopify-functions
JavaScriptをWasmにして実行する仕組みについて。
QuickJSを使いJavaScriptをByteCodeにしたscript.wasm
を作成し、QuickJS.wasm
と動的にリンクして大部分を共有している。
Shopify Functionで利用されるが、非同期処理の制限や5ms未満での実行制限がある。現在はRustで作成したWasmより3枚ていど遅いが、今後はSpiderMonkeyの利用やJITについてやっていく。
Speculation Rules API によるプリレンダリングのためのメトリクス設計
nhiroki.jp/2023/02/13/metrics-for-prerendering
Speculation Rules APIのPreRenderingについて。
Prerenderした場合のnavigationStart
は事前実行のタイミングとなるため、activationStart
というメトリクスが追加された点。
また、Predenderが実際に利用されているかの判定方法について
Improved type safety in Storybook 7
storybook.js.org/blog/improved-type-safety-in-storybook-7/
Storybook 7でのTypeScriptの型について。
StoryObj
タイプやsatisfies
演算子を使ってexportするコンポーネントの定義に型を付ける話
Understanding App Directory Architecture In Next.js — Smashing Magazine
www.smashingmagazine.com/2023/02/understanding-app-directory-architecture-next-js/
Next.jsのapp
ディレクトリについての記事
A Historical Reference of React Criticism—zachleat.com
www.zachleat.com/web/react-criticism/
Reactに対する批判の歴史についての記事
core-js/2023-02-14-so-whats-next.md at master · zloirock/core-js · GitHub
github.com/zloirock/core-js/blob/master/docs/2023-02-14-so-whats-next.md
core-jsの歴史、財政的な問題、ロードマップについて。
また、多くのウェブサイトが複数のバージョンのcore-js
を同じページに読み込んでいるパッケージの依存関係の問題について
サイト、サービス、ドキュメント
WebContainers - Dev environments. In your web app. | WebContainers
Node.jsをWebブラウザ上で動作させて、Playgroundなどに利用できるWebContainersのAPIとパッケージが公開された
Introducing historical web performance data via the CrUX History API - Chrome Developers
developer.chrome.com/en/blog/chrome-ux-report-history-api/
CrUX History APIで1週間間隔のデータを6ヶ月間分の履歴が確認できるようになった。
WebVitalsのデータを各ページレベルでも取得できるようになっている
ソフトウェア、ツール、ライブラリ関係
upgradejs/depngn: A CLI tool to find out if your dependencies support a given version of node.
インストールされている依存関係のengines
フィールドを見て、指定したNode.jsバージョンが条件を満たすかを一覧できるツール
slashd-analytics/run: Run user-provided code in a Web Worker
github.com/slashd-analytics/run
Web Workerを一種のSandboxとして使い、任意のJSコードを実行するライブラリ
書籍関係
Design Patterns in TypeScript
refactoring.guru/design-patterns/typescript
TypeScriptでのデザインパターンについてまとめたサイト