Microsoft Edge WebView2で暗いタイトルバーを使ったとき、最小化・最大化・閉じるボタンの記号が見えなくなる問題は、Microsoftが2026年8月3日公開のPreview Runtime 152.0.4181.0で修正しています。まず確認すべきなのはSDKのバージョンではなく、アプリが実際に読み込んでいるWebView2 Runtimeが152.0.4181.0以上かどうかです。(Microsoft Learn)
開発・検証環境では、SDK 1.0.4181-prereleaseとRuntime 152.0.4181.0以降を組み合わせ、アプリを再ビルドして再起動します。SDKだけを更新しても、実行時に古いRuntimeが使われていればWebView2のタイトルバーアイコン消失は直りません。(Microsoft Learn)
WebView2の暗いタイトルバーでボタンが見えない問題は修正済み
今回の問題は、WebView2のWindow Controls Overlayで暗い背景色を使った場合に、キャプションボタンのグリフが見えなくなる不具合です。
ここでいうグリフとは、タイトルバー右上に表示される次の記号を指します。
- 最小化ボタンの「-」
- 最大化・元に戻すボタンの「□」
- 閉じるボタンの「×」
Microsoftのリリースノートでは、「暗いWindow Controls Overlayの背景上で、キャプションボタンのグリフが見えなくなる問題を修正した」と明記されています。(Microsoft Learn)
| 項目 | 内容 |
|---|---|
| 主な症状 | 暗いタイトルバーで最小化・最大化・閉じる記号が見えない |
| 修正が最初に示されたRuntime | Preview Runtime 152.0.4181.0 |
| 公開日 | 2026年8月3日 |
| 対応するPrerelease SDK | 1.0.4181-prerelease |
| 最初に確認すること | 実際に読み込まれたRuntimeのバージョン |
| 基本的な対処 | Runtime更新、必要に応じたSDK更新、再ビルド、アプリ再起動 |
消えているのはアプリアイコンではなくcaption glyphs
「タイトルバーアイコンが消えた」という表現では、複数の問題が混同されやすいため注意が必要です。
WebView2のWindow Controls Overlayを有効にすると、WebView2がウィンドウ右上に最小化・最大化・閉じるボタンを描画します。背景色を指定した場合は、WebView2が前景色やホバー色を自動計算する仕様です。今回の修正対象は、このボタン内に描画される記号です。(Microsoft Learn)
| 見えなくなったもの | 今回の修正対象か |
|---|---|
| 最小化・最大化・閉じる記号 | 対象 |
| タイトルバー左側のアプリロゴ | 対象外 |
| タスクバーのアプリアイコン | 対象外 |
| Webページのfavicon | 対象外 |
| タイトル文字 | 原則として対象外 |
| ボタン領域そのものがクリックできない | 別の設定不良も確認が必要 |
アプリロゴやタスクバーアイコンが消えている場合は、実行ファイルのアイコンリソース、アプリマニフェスト、ショートカット、ウィンドウクラスなどを確認します。Runtime 152のキャプショングリフ修正だけでは直りません。
SDKとRuntimeの違いを理解してから更新する
WebView2では、SDKとRuntimeのバージョンを分けて考える必要があります。
| 構成要素 | 役割 | 今回の問題との関係 |
|---|---|---|
| WebView2 SDK | アプリからWebView2を操作するAPI、ライブラリ、ヘッダーなど | WCO APIを利用する開発環境に関係する |
| WebView2 Runtime | WebコンテンツやWebView2固有UIを実際に処理・描画する | キャプショングリフの表示修正が含まれる |
| アプリ本体 | 背景色、ウィンドウスタイル、WCOの有効化などを設定する | 発生条件や見え方に影響する |
今回の修正はRuntimeのバグ修正として公開されています。そのため、NuGetパッケージだけを更新しても、利用者のパソコンで古いWebView2 Runtimeが読み込まれている場合は症状が残ります。
反対に、新しいRuntimeがインストールされていても、起動中のアプリは古いRuntimeプロセスを使い続けることがあります。更新後はWebView2環境を作り直すか、アプリを完全に終了して再起動する必要があります。(Microsoft Learn)
WebView2タイトルバーアイコン消失の修正手順
実際に読み込まれたRuntimeのバージョンを確認する
Windowsの「インストールされているアプリ」に表示されるバージョンだけで判断してはいけません。
アプリがFixed Version Runtimeを同梱していたり、Microsoft Edgeのプレビューチャネルを選択していたりすると、システムにインストールされたEvergreen Runtimeとは異なるバージョンを読み込むことがあります。
.NETのWPFまたはWinFormsアプリでは、初期化後に次のようなコードで実際のRuntimeバージョンを記録できます。
await webView2.EnsureCoreWebView2Async();
string runtimeVersion =
webView2.CoreWebView2.Environment.BrowserVersionString;
System.Diagnostics.Debug.WriteLine(
$"WebView2 Runtime: {runtimeVersion}");
BrowserVersionStringでは、現在のWebView2環境が使用しているブラウザまたはRuntimeのバージョンを取得できます。Stable以外のチャネルでは、チャネル名が付く場合もあります。(Microsoft Learn)
今回の修正を確認する基準は、数値部分が次のバージョン以上であることです。
152.0.4181.0
コードを変更できない場合は、タスクマネージャーからWebView2の子プロセスを探し、「ファイルの場所を開く」を選択します。実行ファイルが保存されているフォルダー名から、利用中のRuntimeバージョンを確認できます。(Microsoft Learn)
SDK 1.0.4181-prereleaseへ更新する
Window Controls OverlayのExperimental APIを使って、修正を最初に確認できる構成へそろえる場合は、SDKを1.0.4181-prereleaseへ更新します。
.NET CLIを使う場合は、プロジェクトフォルダーで次を実行します。
dotnet add package Microsoft.Web.WebView2 --version 1.0.4181-prerelease
プロジェクトファイルを直接編集する場合は、次のように指定します。
<ItemGroup>
<PackageReference
Include="Microsoft.Web.WebView2"
Version="1.0.4181-prerelease" />
</ItemGroup>
SDK 1.0.4181-prereleaseで完全なAPI互換性を確保するには、Runtime 152.0.4181.0以降が必要とされています。(Microsoft Learn)
なお、2026年8月28日には後続のRelease SDK 1.0.4191.47もNuGetで公開されています。通常の本番開発では新しいRelease SDKが候補になりますが、Window Controls OverlayのExperimental APIを参照しているプロジェクトでは、必要なAPIが同じ形で利用できるかを確認してから切り替えてください。SDKの最新版と、今回の表示修正が最初に公開されたPrerelease SDKは、同じ意味ではありません。(NuGet Gallery)
WebView2 Runtimeを更新する
Runtimeの更新方法は、アプリがEvergreen方式かFixed Version方式かによって異なります。
| 利用方式 | 更新方法 |
|---|---|
| Evergreen Runtime | 自動更新、Evergreen Bootstrapper、Standalone Installerなどで最新版へ更新する |
| Fixed Version Runtime | アプリに同梱しているRuntime一式を修正版へ入れ替えて再配布する |
| Preview Runtime | Edge Beta、Dev、Canaryなどを開発・検証端末で利用する |
Evergreen方式は、多くのアプリで推奨される方式です。Runtimeが共有され、自動的に更新されます。一方、Fixed Version方式ではRuntimeが自動更新されないため、開発者が修正版へ差し替えてアプリと一緒に再配布しなければなりません。(Microsoft Learn)
Microsoft Edgeブラウザが最新版でも、WebView2 Runtimeまで必ず最新版とは限りません。Microsoft EdgeとWebView2 Runtimeには別々の更新ポリシーがあり、企業管理端末では管理者がWebView2 Runtimeの更新を抑止していることもあります。(Microsoft Learn)
Preview Runtimeで修正を検証する
修正が含まれるプレビューチャネルを検証端末で優先的に読み込ませる場合は、WebView2を初期化する前にチャネル検索順を変更します。
PowerShellから一時的に設定する例は次のとおりです。
$env:WEBVIEW2_CHANNEL_SEARCH_KIND = "1"
.\YourApp.exe
この設定では、インストールされているプレビューチャネルを優先して検索します。設定はWebView2の初期化前に行う必要があります。端末全体の環境変数として設定すると、その端末上のほかのWebView2アプリにも影響するため、開発用のPowerShellセッションや専用検証端末だけで使用してください。(Microsoft Learn)
チャネル検索順を変更した後も、必ずBrowserVersionStringを確認します。プレビューチャネルをインストールしただけでは、目的のRuntimeが実際に選択されたとは限りません。
クリーンビルドしてアプリを再起動する
SDKを更新したら、古いDLLや生成済みファイルを残さないようにクリーンビルドします。
dotnet clean
dotnet restore
dotnet build
Visual Studioを使っている場合は、次の順で実行します。
- ソリューションのクリーン
- NuGetパッケージの復元
- ソリューションのリビルド
- アプリを完全終了
- タスクマネージャーでWebView2関連プロセスが終了したことを確認
- アプリを再起動
- 実際のRuntimeバージョンを再確認
Microsoftは、WebView2 SDKのNuGetパッケージを更新した後にアプリを再コンパイルするよう案内しています。(Microsoft Learn)
また、Evergreen Runtimeの新しいバージョンがバックグラウンドでインストールされても、起動中のアプリは従来のRuntimeを使い続ける場合があります。常時起動するアプリでは、NewBrowserVersionAvailableイベントを利用して再起動を促す設計も検討します。(Microsoft Learn)
修正後に確認するテスト項目
キャプションボタンの記号が表示されたことだけで検証を終えると、最大化やDPI変更時の問題を見落とすことがあります。
| テスト項目 | 確認内容 |
|---|---|
| 通常表示 | 最小化・最大化・閉じる記号がすべて見える |
| 最大化表示 | 最大化が「元に戻す」表示へ正しく切り替わる |
| ホバー表示 | 背景色と記号のコントラストが保たれる |
| クリック | ボタン全体で操作できる |
| ライト・ダーク切り替え | テーマ変更後も記号が見える |
| DPI変更 | 100%、125%、150%、200%で崩れない |
| 複数モニター | DPIの異なるモニター間で移動しても表示される |
| ウィンドウサイズ変更 | ボタンとWebコンテンツが重ならない |
| キーボード操作 | Alt+F4など標準操作が機能する |
| スクリーンリーダー | ボタンの役割が正しく通知される |
Runtime 152では、今回のキャプショングリフ以外にも、最小化・最大化・閉じるボタンのちらつきや、カスタムタイトルバー上端からウィンドウをドラッグできない問題が修正されています。タイトルバー周辺はまとめて回帰テストしておくと効率的です。(Microsoft Learn)
本番環境ではPrerelease SDKを無条件に配布しない
1.0.4181-prereleaseは、名前のとおりPrerelease SDKです。本番環境へ反映するときは、開発・検証と本番の目的を分けて判断します。
| 環境 | 推奨する考え方 |
|---|---|
| 開発環境 | SDK 1.0.4181-prereleaseとRuntime 152以降で修正を確認する |
| 結合テスト環境 | StableとPreviewの両方で表示や操作を比較する |
| 一般的な本番環境 | 互換性を確認したRelease SDKと最新Evergreen Runtimeを使う |
| 更新を厳密に管理する本番環境 | 修正版Fixed Version Runtimeをアプリに同梱して配布する |
| Experimental APIを使うアプリ | Prerelease依存を明示し、限定配布と十分な回帰テストを行う |
Microsoft EdgeのBeta、Dev、CanaryチャネルをWebView2のバックエンドとして使う方法は、将来の変更を検証するためのものです。通常の本番アプリではWebView2 Runtimeを使用し、Edgeのプレビューチャネルを利用者向けの恒久的な依存先にしないようにします。(Microsoft Learn)
本番配布では、次の3点をリリース判定条件にすると安全です。
- 実際に読み込まれたRuntimeが修正版以上である
- 利用中のSDKで必要なWCO APIがコンパイル・動作する
- ダークテーマ、DPI変更、最大化、複数モニターで回帰テストを通過している
すぐにRuntimeを更新できない場合の一時回避策
企業端末の更新制御などによりRuntimeをすぐ更新できない場合は、修正版が配布されるまでタイトルバーのデザインを一時的に変更します。
WCOの背景色を明るくする
今回の不具合は暗い背景上で発生するため、タイトルバーを明るい背景色へ変更すると回避できる可能性があります。
ただし、白に近い色へ変えるだけでなく、通常時、ホバー時、非アクティブ時の記号が読み取れることを実機で確認してください。
Window Controls Overlayを一時的に無効化する
業務アプリなどで閉じるボタンの視認性が最優先される場合は、WCOを無効化し、Windows標準のタイトルバーへ戻す方法が確実です。
デザイン上の統一感は下がりますが、利用者がウィンドウを閉じられない、最大化できないと誤認するリスクを減らせます。
独自の閉じるボタンを安易に追加しない
不具合を隠すためにHTMLやネイティブUIで最小化・最大化・閉じるボタンを急造すると、次の問題が起きやすくなります。
- Windows標準のヒットテストと競合する
- 最大化時の余白がずれる
- 高DPI環境でクリック領域がずれる
- キーボードや支援技術から操作しにくくなる
- 本来のWCOボタンと二重表示になる
一時回避では、独自ボタンを追加するより、背景色の変更か標準タイトルバーへの切り替えを優先した方が安全です。
更新しても直らない場合の確認ポイント
| 状況 | 考えられる原因 | 対処 |
|---|---|---|
| SDKを更新したが直らない | Runtimeが古い | BrowserVersionStringを確認する |
| Runtimeを更新したのに古い版が表示される | アプリやWebView2プロセスが継続している | 完全終了して再起動する |
| 特定の端末だけ直らない | 更新ポリシー、オフライン、Fixed Version利用 | 配布方式と管理ポリシーを確認する |
| Previewを入れたのにStableが使われる | チャネル検索順が既定のまま | 初期化前に検索順を変更する |
| Runtime 152以降でもアプリアイコンがない | 今回とは別のアイコン設定問題 | EXEリソースやマニフェストを確認する |
| ボタンの上だけクリックできない | HTML要素がWCO領域と重なっている | タイトルバー領域の配置を修正する |
| 記号は見えるがちらつく | 別の描画問題または古いプロセス | 実バージョンと再起動状態を再確認する |
WCOのボタンはHTMLコンテンツより上に配置され、直下の要素へのマウス操作を遮ります。タイトルバー右上にメニューや検索ボックスなどを置いている場合は、WCOの占有領域と重ならないようにレイアウトを調整してください。(Microsoft Learn)
問題が再現し続ける場合は、次の情報をそろえて最小構成で再現できるようにします。
- SDKのバージョン
BrowserVersionStringの出力- Evergreen、Fixed、Previewのどれを使用しているか
- WindowsのバージョンとOSビルド
- WCOに設定した背景色
- 通常表示、最大化、ホバー時のスクリーンショット
- ライトテーマとダークテーマの再現結果
- 再現用の最小コード
WebView2タイトルバーの問題を直すために行うこと
WebView2の暗いタイトルバーで最小化・最大化・閉じる記号が見えない場合は、CSSやアイコン画像を変更する前に、実際に読み込まれたWebView2 Runtimeを確認します。
修正が最初に公開された基準は、Preview Runtime 152.0.4181.0です。WCOのPrerelease APIを使った検証ではSDK 1.0.4181-prereleaseと組み合わせ、再ビルド後にアプリを完全再起動します。
本番環境では、利用しているAPIとの互換性を確認したRelease SDKと最新のEvergreen Runtimeを基本とし、Fixed Versionを使っている場合は同梱Runtimeを明示的に更新してください。最後にダークテーマ、最大化、DPI変更、複数モニターで回帰テストを行えば、更新しただけで終わらず、利用者の環境でも修正が反映されたことを確認できます。

コメント