Chrome 107 の新機能

必知事項は次のとおりです。

Adriana Jara と申します。Chrome 107 のデベロッパー向けの新機能について詳しく見てみましょう。

Screen Capture API の新しいプロパティ

このバージョンの Screen Capture API では、画面共有のエクスペリエンスを向上させる新しいプロパティが追加されています。

DisplayMediaStreamOptions によって selfBrowserSurface プロパティが追加されました。このヒントを使用すると、アプリは getDisplayMedia() を呼び出すときに現在のタブを除外する必要があることをブラウザに伝えることができます。

// Exclude the streaming tab
const options = {
  selfBrowserSurface: 'exclude',
};
const stream = await navigator
                    .mediaDevices
                    .getDisplayMedia(options);

これにより、誤って自分自身を撮影してしまうのを防ぐことができ、ビデオ会議で発生する「鏡の回廊」効果を回避できます。

DisplayMediaStreamOptions にも surfaceSwitching プロパティが追加されました。 このプロパティにより、画面共有中に Chrome にタブ切り替えボタンを表示するかどうかをプログラムで制御するオプションが追加されます。これらのオプションは getDisplayMedia() に渡されます。Share this tab instead ボタンを使用すると、ビデオ会議タブに戻ったり、長いタブリストから選択したりすることなく、新しいタブに切り替えることができます。ただし、ウェブ アプリケーションが処理しない場合を考慮して、この動作は条件付きで公開されます。

// Show the switch to this tab button
const options = {
  surfaceSwitching: 'include',
};
const stream = await navigator
                    .mediaDevices
                    .getDisplayMedia(options);

また、MediaTrackConstraintSet はプロパティ displaySurface を追加します。getDisplayMedia() が呼び出されると、ブラウザはタブ、ウィンドウ、モニターのディスプレイ サーフェスの選択をユーザーに提示します。displaySurface 制約を使用すると、ウェブアプリは、サーフェス タイプのいずれかをより目立つように表示することをブラウザにヒントできます。

たとえば、1 つのタブを共有することをデフォルトに設定できるため、誤って過剰共有を防ぐことができます。 以前と新しいメディア選択ツールのプロンプトのスクリーンショット。

レンダリング ブロック リソースを特定する

高速なユーザー エクスペリエンスを構築するには、ページのパフォーマンスに関する信頼できる分析情報が不可欠です。これまで、デベロッパーは複雑なヒューリスティクスに頼って、リソースがレンダリング ブロックであるかどうかを判断していました。

Performance API に renderBlockingStatus プロパティが追加されました。このプロパティは、ページの表示を妨げているリソースをブラウザから直接通知し、ダウンロードが完了するまでそのリソースをブロックします。

このコード スニペットは、すべてのリソースのリストを取得し、新しい renderBlockingStatus プロパティを使用して、レンダリング ブロックしているすべてのリソースを一覧表示する方法を示しています。

// Get all resources
const res = window.performance.getEntriesByType('resource');

// Filter to get only the blocking ones
const blocking =   res.filter(({renderBlockingStatus}) =>
      renderBlockingStatus === 'blocking');

リソースの読み込み方法を最適化すると、Core Web Vitals が改善され、ユーザー エクスペリエンスが向上します。Performance API について詳しくは MDN ドキュメントをご覧ください。レンダリング ブロック リソースを探して最適化してください。

PendingBeacon API オリジン トライアル

宣言型の PendingBeacon API を使用すると、ビーコンを送信するタイミングをブラウザが制御できます。

ビーコンとは、特定のレスポンスを期待せずにバックエンド サーバーに送信されるデータのバンドルです。

アプリケーションでは多くの場合、ユーザーのアクセス終了時にこれらのビーコンを送信する必要がありますが、「send」呼び出しを行う余裕はありません。この API は送信をブラウザ自体に委任するため、デベロッパーが正確なタイミングで送信呼び出しを実装しなくても、page unload または page hide でビーコンをサポートできます。

オリジン トライアルに登録して API をお試しください。ユースケースの改善に役立てるため、フィードバックをお寄せください。

その他

もちろん、他にもたくさんあります。

  • expect-ct HTTP ヘッダーは非推奨になりました。
  • rel 属性が <form> 要素でサポートされるようになりました。
  • 前回は grid-template 補間について説明しましたが、今回はそれを含める必要があります。

関連情報

主なハイライトのみを記載しています。Chrome 107 のその他の変更については、以下のリンクをご覧ください。

登録

最新情報を入手するには、Chrome Developers の YouTube チャンネルチャンネル登録してください。新しい動画が公開されると、メール通知が届きます。

Adriana Jara と申します。Chrome 108 がリリースされ次第、Chrome の新機能についてお知らせします。