Chrome 133

安定版リリース日: 2025 年 2 月 4 日

特に明記しない限り、以下の変更は Android、ChromeOS、Linux、macOS、Windows 版 Chrome 133 Stable チャンネル リリースに適用されます。

HTML と DOM

ポップオーバー属性のヒント値

Popover API は、ポップオーバー属性の 2 つの値(auto と manual)の動作を指定します。この特徴は、3 つ目の値 popover=hint を記述します。ヒントは、多くの場合「ツールチップ」タイプの動作に関連付けられますが、動作は若干異なります。主な違いは、ネストされたポップオーバーのスタックを開くときに、ヒントが自動よりも優先される点です。そのため、既存の自動ポップオーバーのスタックが開いたまま、無関係なヒント ポップオーバーを開くことができます。

典型的な例は、<select> 選択ツールが開いている(popover=auto)状態で、ホバーによってトリガーされるツールチップ(popover=hint)が表示されている場合です。この操作で <select> 選択ツールは閉じません。

バグのトラッキング #1416284 | ChromeStatus.com のエントリ

ポップオーバーのトリガー要素とアンカー要素の配置を改善

popover.showPopover({source}) を使用してポップオーバー間のトリガー要素の関係を設定するための命令型の方法を追加しました。トリガー要素の関係により、暗黙的なアンカー要素の参照を作成できるようにします。

バグのトラッキング #364669918 | ChromeStatus.com のエントリ

呼び出し元内にネストされたポップオーバーが呼び出し元を再び呼び出さないようにしました

次のケースでは、ボタンをクリックするとポップオーバーが適切に起動しますが、その後ポップオーバー自体をクリックしてもポップオーバーが閉じないようにする必要があります。

<button popovertarget=foo>Activate
  <div popover id=foo>Clicking me shouldn't close me</div>
</button>

以前は、ポップオーバーのクリックが <button> にバブルし、呼び出し元がアクティブになり、ポップオーバーが閉じられました。この動作は、想定どおりに変更されました。

トラッキング バグ #https://crbug.com/379241451 | ChromeStatus.com のエントリ

CSS

CSS の高度な attr() 関数

CSS レベル 5 で指定されている attr() の拡張を実装します。これにより、<string> 以外の型が許可され、すべての CSS プロパティで使用できるようになります(疑似要素コンテンツの既存のサポートに加えて)。

MDN attr() | トラッキング バグ #246571 | ChromeStatus.com のエントリ | 仕様

CSS :open 疑似クラス

:open 疑似クラスは、開いている状態の <dialog><details> に一致し、選択ツールがあり、選択ツールが表示されているモードでは <select><input> に一致します。

トラッキング バグ #324293874 | ChromeStatus.com のエントリ | 仕様

CSS スクロール状態のコンテナクエリ

コンテナクエリを使用して、スクロール状態に基づいてコンテナの子孫にスタイルを適用します。

クエリ コンテナは、スクロール コンテナ、またはスクロール コンテナのスクロール位置の影響を受ける要素です。クエリ可能な状態は次のとおりです。

  • stuck: スティッキーに配置されたコンテナがスクロール ボックスのいずれかの端に固定されています。
  • snapped: スクロール スナップが適用されたコンテナが、現在水平方向または垂直方向にスナップされています。
  • scrollable: スクロール コンテナをクエリされた方向にスクロールできるかどうか。

新しいコンテナタイプ scroll-state により、コンテナをクエリできるようになりました。

バグのトラッキング #40268059 | ChromeStatus.com のエントリ | 仕様

CSS text-boxtext-box-trimtext-box-edge

テキスト コンテンツの最適なバランスを実現するために、text-box-trim プロパティと text-box-edge プロパティ、および text-box ショートカット プロパティを使用して、テキストの垂直方向の配置をより細かく制御できます。

text-box-trim プロパティはトリミングする側(上または下)を指定し、text-box-edge プロパティはエッジのトリミング方法を指定します。

これらのプロパティを使用すると、フォント メトリックを使用して垂直方向のスペースを正確に制御できます。

バグのトラッキング #1411581 | ChromeStatus.com のエントリ | 仕様

ウェブ API

Animation.overallProgress

アニメーションが反復処理でどの程度進んでいるかを、タイムラインの性質に関係なく、デベロッパーが便利で一貫した方法で把握できます。overallProgress プロパティがないと、アニメーションの反復回数と、アニメーションの currentTime が合計時間の割合(スクロール駆動アニメーションの場合)か絶対時間量(時間駆動アニメーションの場合)かを考慮して、アニメーションがどの程度進んだかを手動で計算する必要があります。

バグのトラッキング #40914396 | ChromeStatus.com のエントリ | 仕様

Atomics オブジェクトの pause() メソッド

pause() メソッドを Atomics 名前空間オブジェクトに追加して、現在のコードがスピンロックを実行していることを CPU にヒントします。

ChromeStatus.com のエントリ | 仕様

スクリプトの CSP ハッシュ レポート

複雑なウェブ アプリケーションでは、セキュリティ上の理由から、ダウンロードしたサブリソースを追跡することがよくあります。

特に、今後の業界標準とベスト プラクティス(PCI-DSS v4 など)では、ウェブ アプリケーションがダウンロードして実行するすべてのスクリプトのインベントリを保持することが義務付けられています。

この機能は CSP と Reporting API を基盤として、ドキュメントが読み込むすべてのスクリプト リソースの URL とハッシュ(CORS/同一オリジン用)を報告します。

バグのトラッキング #377830102 | ChromeStatus.com のエントリ

DOM の状態を保持した移動

要素の状態をリセットせずに DOM ツリー内で要素を移動できる DOM プリミティブ(Node.prototype.moveBefore)を追加します。

削除と挿入ではなく移動する場合、次のような状態が保持されます。

  • <iframe> 要素は読み込まれたままになります。
  • アクティブな要素はフォーカスされたままになります。
  • ポップオーバー、全画面、モーダル ダイアログは開いたままになります。
  • CSS の遷移とアニメーションは続行されます。

ChromeStatus.com のエントリ

<area>attributionsrc 属性を公開します。

<area>attributionsrc 属性の公開を、属性が公開されていなかった場合でも、属性の既存の処理動作に合わせます。

また、<area> はファーストクラスのナビゲーション サーフェスであり、Chrome ではすでに <a>window.open の他のサーフェスでこの属性がサポートされているため、<area> でこの属性をサポートすることは理にかなっています。

バグのトラッキング #379275911 | ChromeStatus.com のエントリ | 仕様

FileSystemObserver インターフェース

FileSystemObserver インターフェースは、ファイルシステムの変更をウェブサイトに通知します。サイトは、ユーザーが以前に権限を付与したファイルとディレクトリの変更を、ユーザーのローカル デバイスまたはバケット ファイル システム(オリジンのプライベート ファイル システム)で検出し、変更タイプなどの基本的な変更情報を通知します。

トラッキング バグ #40105284 | ChromeStatus.com のエントリ

複数のインポート マップ

現在、インポート マップは ES モジュールの前に読み込む必要があり、ドキュメントごとに 1 つのインポート マップしか使用できません。そのため、実運用環境では脆弱になり、使用に時間がかかる可能性もあります。それより前に読み込まれたモジュールはアプリ全体を破壊します。また、モジュールが多いアプリでは、すべてのモジュールのマップ全体を最初に読み込む必要があるため、大きなブロック リソースになります。

この機能を使用すると、ドキュメントごとに複数のインポート マップを、一貫した確定的な方法で統合できます。

ChromeStatus.com のエントリ

ストレージ アクセス ヘッダー

認証済みの埋め込みがパーティショニングされていない Cookie を有効にする別の方法を提供します。これらのヘッダーは、パーティショニングされていない Cookie が特定のネットワーク リクエストに含まれているかどうか(または含まれている可能性があるかどうか)を示し、サーバーがすでに付与されている「ストレージ アクセス」権限を有効にできるようにします。「storage-access」権限を有効にする別の方法を提供すると、iframe 以外のリソースで使用できるようになります。また、認証済みの埋め込みのレイテンシを短縮できます。

バグのトラッキング #329698698 | ChromeStatus.com のエントリ | 仕様

Promise<DOMString> による ClipboardItem の作成をサポート

非同期クリップボード write() メソッドへの入力である ClipboardItem が、コンストラクタで Blob に加えて文字列値を受け取れるようになりました。ClipboardItemData には、Blob、文字列、Blob または文字列に解決される Promise を指定できます。

バグのトラッキング #40766145 | ChromeStatus.com のエントリ | 仕様

WebAssembly Memory64

memory64 プロポーザルでは、2^32 ビットを超えるサイズのリニア WebAssembly メモリのサポートが追加されます。新しい命令は提供されませんが、既存の命令が拡張され、メモリとテーブルの 64 ビット インデックスが許可されます。

ChromeStatus.com のエントリ | 仕様

Web Authentication API: PublicKeyCredential getClientCapabilities() メソッド

PublicKeyCredential getClientCapabilities() メソッドを使用すると、ユーザーのクライアントでサポートされている WebAuthn 機能を特定できます。このメソッドは、サポートされている機能のリストを返します。これにより、デベロッパーはクライアントの特定の機能に基づいて認証エクスペリエンスとワークフローを調整できます。

バグのトラッキング #360327828 | ChromeStatus.com のエントリ | 仕様

Web Cryptography API の X25519 アルゴリズム

「X25519」アルゴリズムには、[RFC7748] で指定されている X25519 関数を使用して鍵合意を実行するためのツールが用意されています。「X25519」アルゴリズム識別子は、SubtleCrypto インターフェースで使用して、実装されたオペレーション(generateKey、importKey、exportKey、deriveKey、deriveBits)にアクセスできます。

バグのトラッキング #378856322 | ChromeStatus.com のエントリ | 仕様

パフォーマンス

省エネモードでのフリーズ

省エネモードが有効になっている場合、Chrome は、非表示でサイレントの状態が 5 分を超えている「ブラウジング コンテキスト グループ」をフリーズします。ただし、そのグループ内の同じオリジンのフレームのいずれかのサブグループが CPU 使用率のしきい値を超えている場合を除きます。

  • 音声またはビデオ会議機能が提供されているタブ(マイク、カメラ、画面/ウィンドウ/タブのキャプチャ、またはオープンな RTCDataChannel かライブの MediaStreamTrack を含む RTCPeerConnection によって検出)。
  • 外部デバイスを制御する(WebUSB、Web Bluetooth、WebHID、Web Serial を使用して検出)。
  • 別の接続でのバージョン アップデートまたはトランザクションをブロックする Web ロックまたは IndexedDB 接続を保持します。
  • フリーズは、実行の一時停止で構成されます。これは、Page Lifecycle API で正式に定義されています。

CPU 使用率のしきい値は、省エネモードが有効になっているときにバックグラウンド タブの約 10% をフリーズするように調整されます。

バグのトラッキング #325954772 | ChromeStatus.com のエントリ

要素のタイミングと LCP で、粗いクロスオリジン renderTime を公開する(Timing-Allow-Origin に関係なく)

要素のタイミングと LCP のエントリには、画像またはテキストがペイントされた最初のフレームに合わせて調整された renderTime 属性があります。

現在、この属性は、画像リソースに Timing-Allow-Origin ヘッダーを要求することで、クロスオリジン画像に対して保護されています。ただし、この制限は簡単に回避できます(同じフレームに同一オリジンとクロスオリジンの画像を表示するなど)。

この制限が混乱の原因となっているため、この制限を削除し、ドキュメントがクロスオリジン分離されていない場合は、すべてのレンダリング時間を 4 ms ずつ粗くすることを予定しています。これは、クロスオリジン画像に関する有用なデコード時間情報を漏洩させない程度に粗いようです。

バグのトラッキング #373263977 | ChromeStatus.com のエントリ | 仕様

responseStart を元に戻し、firstResponseHeadersStart を導入

103 早期ヒントを有効にすると、レスポンスには 2 つのタイムスタンプが含まれます。

  • 早期ヒントが届いたとき(103)
  • 最終的なヘッダーが届いたとき(200 など)
  • Chrome 115 で firstInterimResponseStart がリリースされ、これらの 2 つのタイムスタンプを測定できるようになった際、responseStart(Time to First Byte(TTFB)で使用)の意味も「最終ヘッダー」に変更されました。このため、この一般的な指標に対して同様の変更を加えていないブラウザやツールで、ウェブの互換性に関する問題が発生しました。

Chrome 133 では、この互換性の問題を解決するために、この responseStart の変更を元に戻し、代わりに firstResponseHeadersStart を導入して、TTFB の元の定義を維持しながら、サイトが最終ヘッダーまでの時間を測定できるようにしました。

バグのトラッキング #40251053 | ChromeStatus.com のエントリ | 仕様

レンダリングとグラフィック

WebGPU: 1 コンポーネントの頂点形式(および unorm8x4-bgra)

サポートされていないか、古い macOS バージョン(どのブラウザでもサポートされていない)が原因で、WebGPU の最初のリリースには含まれていなかった頂点形式を追加しました。1 コンポーネントの頂点形式では、アプリケーションは必要なデータのみをリクエストできます。以前は、8 ビットおよび 16 ビットのデータ型で 2 倍以上のデータをリクエストする必要がありました。unorm8x4-bgra 形式を使用すると、同じシェーダーを維持しながら BGRA エンコードの頂点カラーを読み込むのが少し便利になります。

バグのトラッキング: #376924407 | ChromeStatus.com のエントリ

オリジン トライアル

省エネモードでのフリーズをオプトアウトする

このオプトアウト トライアルでは、Chrome 133 でリリースされる省エネモードでのフリーズ動作をサイトがオプトアウトできます。

オリジン トライアル | トラッキング バグ #325954772 | ChromeStatus.com のエントリ | 仕様

クロスルート ARIA の参照ターゲット

参照ターゲットは、Shadow DOM の内部詳細をカプセル化したまま、foraria-labelledby などの IDREF 属性を使用してコンポーネントの Shadow DOM 内の要素を参照できる機能です。この機能の主な目的は、ARIA がシャドウルートの境界を越えて機能できるようにすることです。

コンポーネントは、シャドウ ツリー内の要素を「参照ターゲット」として指定できます。ホスト コンポーネントが IDREF のターゲット(ラベルの for 属性など)の場合、参照ターゲットがラベルの実効ターゲットになります。

シャドウルートでは、Shadow DOM 内のターゲット要素の ID を指定します。これは、JavaScript で ShadowRoot オブジェクトの referenceTarget 属性を使用するか、HTML マークアップで <template> 要素の shadowrootreferencetarget 属性を使用するか、いずれかの方法で指定します。

オリジン トライアル | ChromeStatus.com のエントリ

非推奨と削除

WebGPU の上限 maxInterStageShaderComponents の非推奨

maxInterStageShaderComponents limit は、複数の要因により非推奨になりました。Chrome 135 での削除予定日。

  • maxInterStageShaderVariables での冗長性: この上限はすでに同様の目的を果たしており、シェーダー ステージ間で渡されるデータの量を制御しています。
  • 軽微な差異: 2 つの上限の計算方法には若干の違いがありますが、この差異は軽微であり、maxInterStageShaderVariables の上限内で効果的に管理できます。
  • 簡素化: maxInterStageShaderComponents を削除すると、シェーダー インターフェースが合理化され、デベロッパーの複雑さが軽減されます。わずかな違いがある 2 つの個別の上限を管理する代わりに、より適切な名前の包括的な maxInterStageShaderVariables に集中できます。

ChromeStatus.com のエントリ

以前は、<link rel=prefetch> を使用してリソースがプリフェッチされた場合、Chrome は再フェッチを回避するために、5 分以内の最初の使用でキャッシュ セマンティクス(max-ageno-cache)を無視していました。Chrome では、この特殊なケースを削除し、通常の HTTP キャッシュ セマンティクスを使用します。

つまり、ウェブ デベロッパーは、<link rel=prefetch> のメリットを享受するには、適切なキャッシュ ヘッダー(Cache-Control または Expires)を含める必要があります。

これは非標準の <link rel=prerender> にも影響します。

バグのトラッキング #40232065 | ChromeStatus.com のエントリ

初期設定の初回実行タブを介した Chrome ウェルカム ページのトリガーを削除

initial_preferences ファイルの first_run_tabs プロパティに chrome://welcome を含めても、何も起こらないようになりました。このページは、パソコン プラットフォームでトリガーされる初回起動時の動作と重複するため、削除されました。

ChromeStatus.com のエントリ