Frontend Weekly 2025-09-05
Chrome 140がリリース、ToggleEventとCSS機能が強化
日付:2025年9月2日
Chrome 140がリリースされた。ToggleEventの改善、CSSカウンター機能、フォントバリエーション設定などの新機能が追加された。
出展:
ToggleEventのトリガー元要素把握機能
ToggleEvent
のsource
属性により、イベントをトリガーした要素を特定できるようになった。
<button popovertarget="mypopover">開く</button><div id="mypopover" popover>ポップオーバー内容</div>
const popover = document.getElementById('mypopover');popover.addEventListener('toggle', (event) => { console.log('トリガー元要素:', event.source); // <button>要素});
ポップオーバーやコマンド要素でのイベント追跡が容易になる。
contentプロパティでのカウンター使用
content
プロパティの代替テキストでcounter()
とcounters()
が使用可能になり、アクセシビリティが向上。
ol { counter-reset: item-counter;}
li { counter-increment: item-counter;}
li::before { content: counter(item-counter) ". ";}
/* スクリーンリーダー向けの代替テキスト */li::before { content: counter(item-counter, decimal) ". " / "項目 " counter(item-counter);}
番号付きリストのアクセシビリティが向上し、スクリーンリーダーでも意味のある情報が提供される。
@font-faceでのfont-variation-settingsサポート
@font-face
ルールでfont-variation-settings
記述子がサポートされ、フォントのバリエーションを直接設定可能。
@font-face { font-family: "OpenTypeFont"; src: url("open_type_font.woff2") format("woff2"); font-variation-settings: "wght" 400, "wdth" 300;}
/* 使用例 */.variable-font { font-family: "OpenTypeFont"; /* 個別要素での調整も可能 */ font-variation-settings: "wght" 700;}
フォントの太さ、幅、傾斜などの軸を@font-face
レベルで調整できるようになり、より柔軟なタイポグラフィ制御が可能。
ルートからビューポートへのoverscroll-behavior伝播
CSS ワーキング グループは、<body>
からビューポートにプロパティを伝播しないことを決定。代わりに、ビューポートのプロパティはルート(<html>
)要素から伝播される。
/* ルート要素での設定 */html { overscroll-behavior: contain;}
/* これによりbodyやビューポート全体に伝播 */body { /* overscroll-behaviorは自動的にcontainが適用される */ height: 200vh; /* コンテンツがビューポートを超える */}
Chrome には、ルートではなく<body>
から overscroll-behavior
を伝播するという長年の問題がありった。この変更によりChromeが仕様に準拠し、他の実装との相互運用が可能になった。
CSS型付き算術の改善
calc(20% / 0.5em * 1px)
やcalc(10em / 1px)
といった記述が可能になった。
今まではtan(atan2(length_value, 1px))
といったトリックを利用して単位情報を削除して計算を行う必要があった。
ESLint v9.35.0がリリース、preserve-caught-errorの追加
日付:2025年9月5日
ESLint v9.35.0がリリース。ブロック内で新しいエラーをスローするときにcause
プロパティを強制するpreserve-caught-error
ルールが追加された。
// ❌ 不正try { // ...} catch (error) { throw new Error("Something went wrong");}
// ✅ 正解try { // ...} catch (error) { throw new Error("Something went wrong", { cause: error });}
Fresh 2.0がベータ版に移行、Vite統合を追加
日付:2025年9月2日
Fresh 2.0がベータ版に移行し、Vite統合が追加。
// Vite設定例import { defineConfig } from "vite";import { fresh } from "@fresh/plugin-vite";
export default defineConfig({ plugins: [fresh()],});
FreshがViteプラグインとして動作可能になり、アイランドコードでのみHot Module Reloadingをサポートするようになった。またプロダクション環境での起動時間が大幅に短縮され、86msから8msへと10倍の高速化を実現した。さらに、react、react-domの自動エイリアシングによりReact互換性が改善され、Fresh 1.xで人気だったHeadコンポーネントも復活した。
出展:Fresh 2.0 Graduates to Beta, Adds Vite Support - Deno Blog
Nuxt 4.1がリリース、ビルド安定性とモジュール開発機能を大幅強化
日付:2025年9月2日
Nuxt 4.1がリリースされ、ビルド安定性の大幅改善とモジュール開発機能の強化が行われた。
import maps
によるEnhanced Chunk Stabilityにより、単一コンポーネントの変更が全体のハッシュを無効化する問題が解決され、プロダクション環境でのキャッシュ効率が向上した。また、Rolldown統合の実験的サポートにより、Rustベースの高速バンドリングが可能になった。
モジュール開発では、moduleDependenciesによる依存関係管理、onInstallとonUpgradeライフサイクルフック、getLayerDirectoriesユーティリティなどが追加され、より強力なモジュールシステムが構築できるようになった。