Frontend Weekly 2025-03-07
Interop 2025
ウェブの相互運用性を向上させるためにブラウザベンダーが協力して取り組み Interop プロジェクトの 2025 年版、Interop 2025 が発表された。
https://web.dev/blog/interop-2025
Focus areas として次の項目を挙げている。
- Anchor positioning
- backdrop-filter
- Core Web Vitals
<details>
element- Layout
- Modules
- Navigation API
- Pointer and mouse events
- Remove mutation events
- @scope
- scrollend event
- Storage Access API
- text-decoration
- URLPattern
- View Transition API
- WebAssembly
- Web compat
- WebRTC
- Writing modes
また調査対象として、次の項目を挙げている。
- Accessibility testing
- Gamepad API testing
- Mobile testing
- Privacy testing
- WebVTT
Chrome 134
Chrome 134 がリリース。
https://developer.chrome.com/release-notes/134?hl=ja
https://developer.chrome.com/blog/new-in-chrome-134?hl=ja
次の変更などが含まれる。
dialog
要素の閉じ方を制御する closedby 属性の追加none
: ユーザーの操作の閉じないcloserequest
: ESC などユーザーの操作で閉じるany
: 外側のクリック、ESC などユーザーの操作で閉じる
- CSS ハイライトの継承
- 従来は
::selection
や::highlight
などのスタイルが継承されず、子要素が入るとハイライトのスタイルがリセットされていた。
- 従来は
- カスタマイズ可能な
<select>
要素- https://developer.chrome.com/blog/rfc-customizable-select?hl=ja
appearance: base-select
を指定することで、<select>
要素を完全に制御できる
- Shared Storage に Web Locks API が統合
- サイト間で同じデータにアクセスできる Shared Storage では、データ競合の発生する可能性がある。
- Web Locks API によって、排他制御やバッチ処理が可能になった。
- PaintCanvas に imageSmoothingQuality 属性が追加
- canvas に表示された画像を拡大縮小する際の品質を制御できる。
また DevTools には次の変更などが含まれる。
- サードパーティ Cookie の制限をテストする機能の追加
:open
など複数の疑似グラス/要素の切り替えをサポート- 全てのコンソールメッセージをコピーする機能の追加
TypeScript 5.8
TypeScript 5.8 がリリース。
https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/
次の変更などが含まれる。
- require(esm)のサポート
- Node.js v22 でサポートされた require(esm)を、
--module nodenext
でサポートした。
- Node.js v22 でサポートされた require(esm)を、
erasableSyntaxOnly
フラグの追加- Node.js v22 では TypeScript をそのまま実行できる
experimental-strip-types
フラグが追加され、Node.js v23 ではフラグなしで実行できるようになっている。 erasableSyntaxOnly
フラグを利用すると、単純な型注釈では削除できないenum
やnamaespace
などの構文をエラーとして扱うことが出来る。
- Node.js v22 では TypeScript をそのまま実行できる
libReplacement
フラグの追加- TypeScript には標準の型定義を差し替える仕組みがあり、このために常に node_modules を監視している。
libReplacement
フラグを利用することで、この挙動を無効化し負荷を軽減できる。- 今後デフォルトが false になる可能性があるため、利用している場合は明示的に設定することが推奨されている。
Next.js 15.2
Next.js 15.2 がリリース。
https://nextjs.org/blog/next-15-2
次の変更などが含まれる。
- エラー UI とスタックトレースの刷新
- メタデータのストリーミング
- 非同期なページ遷移を行った際に動的なメタタグを埋め込む API
generateMetadata
によってブロッキングが発生していた。 - この API がストリーミングされるようになったためパフォーマンスの改善が見込まれる。
- 非同期なページ遷移を行った際に動的なメタタグを埋め込む API
また実験的な機能として次も含まれる。
- React View Transitions API の追加
- React に実験的に追加された
<ViewTransition>
コンポーネントを利用できるようになる。 <ViewTransition>
はページ遷移時のアニメーションを制御する View Transition API をラップしたもの。
- React に実験的に追加された
- Node.js Middleware の追加
- 今までは Edge runtime のみのサポート。Node.js でも動かすことは出来たが機能は限定されていた。
Lynx
ByteDance が React/CSS を使って iOS/Android/Web アプリを開発できるツールキット Lynx を公開。
https://lynxjs.org/blog/lynx-unlock-native-for-more.html
https://github.com/lynx-family/lynx
Lynx の React 実装は、React v17 及び Preact と互換性があるとのこと。
https://lynxjs.org/api/react/index.html#react-apis
また Lynx は、QuickJS をベースにした独自のPrimJSという JavaScript エンジンをランタイムとして使用している。*
https://lynxjs.org/guide/scripting-runtime/index.html
*iOS の場合、バックグラウンドスレッドでは JavaScriptCore をデフォルトでは使用する。