UE 5.6.0 Web Browser Widget (CEF) on Native Linux Builds is BROKEN and unable to load local files at all

Engine Version:
Unreal Engine 5.6.0 (from Epic Games Launcher)

Platform:
Linux (Ubuntu 24.04, x86_64)

GPU / Drivers:
NVIDIA GPU, proprietary NVIDIA drivers (latest available for Ubuntu 24.04)

RHI / Graphics API:
Vulkan
Shader Model 5: game starts
Shader Model 6: game does not start at all

Plugin:
Web Browser Widget (CEF)


Description:
The Web Browser Widget (CEF) can successfully load any external HTTPS URL, but it is unable to load local content in Linux packaged builds.

The following do NOT work in a packaged Linux build:

  • file:///home/user/test.html

  • http://localhost:3000/file.html

In all cases, the game itself starts correctly, but the Web Browser Widget area stays on an infinite “Loading page…” screen with a spinning loader. No HTML content is ever rendered.

This makes the plugin unusable for offline games or local UI use. Hosting the UI on an external HTTPS website and forcing players to download it at runtime is not an acceptable workaround, especially for offline-capable games.


Expected Result:
Web Browser Widget should be able to load:

  • Local files via file://

  • Local development servers via http://localhost

in the same way it does in the Editor.


Actual Result:

  • Widget remains stuck on “Loading page…” forever

  • No visible browser errors in the Unreal log

  • CEF/ANGLE errors appear in the console (see below)

  • Game itself continues running normally, only the UI is broken


Editor vs Packaged Build:

  • Editor (PIE, Standalone, any editor-run mode): CEF works correctly

  • Packaged Linux build: completely broken for local files and localhost

  • This strongly suggests a packaging / CEF / Vulkan / sandboxing issue specific to builds


Reproduction Steps:

  1. Create a new UE 5.6.0 project

  2. Enable the Web Browser Widget plugin

  3. Create a Widget Blueprint with a Web Browser Widget

  4. Set the initial URL to:

    • file:///home/user/test.html
      or

    • http://localhost:3000/file.html

  5. Add the widget to the viewport

  6. Package the project for Linux

  7. Run the packaged build

Result: the widget is stuck on “Loading page…”.


Logs / Console Output:

[2025.12.16-19.34.55:958][  0]LogInit: Display: Engine is initialized. Leaving FEngineLoop::Init()
[2025.12.16-19.34.55:958][  0]LogLoad: (Engine Initialization) Total time: 4.04 seconds
[2025.12.16-19.34.55:959][  0]LogInit: Adding external input plugin.
[2025.12.16-19.34.55:959][  0]LogContentStreaming: Texture pool size now 1000 MB
[2025.12.16-19.34.55:960][  0]LogStreaming: Display: FlushAsyncLoading(63): 1 QueuedPackages, 0 AsyncPackages
[2025.12.16-19.34.55:967][  0]LogSlate: Took 0.000339 seconds to synchronously load lazily loaded font '../../../Engine/Content/Slate/Fonts/Roboto-Regular.ttf' (155K)
[2025.12.16-19.34.55:979][  0]LogTrace: Display: Control listening on port 35020

[75018:75018:1216/203455.997088:ERROR:angle_platform_impl.cc(44)]
Display.cpp:1083 (initialize): ANGLE Display::initialize error 0:
Internal Vulkan error (-3): Initialization of an object could not be completed
for implementation-specific reasons,
in ../../third_party/angle/src/libANGLE/renderer/vulkan/vk_renderer.cpp, initialize:1801.

[75018:75018:1216/203455.997426:ERROR:gl_display.cc(801)]
Initialization of all EGL display types failed.

[75018:75018:1216/203455.997481:ERROR:gl_ozone_egl.cc(26)]
GLDisplayEGL::Initialize failed.


Additional Notes:

  • This is not the first CEF-related issue in packaged builds

  • Android builds show similar behavior:

    • Web Browser Widget breaks in packaged builds

    • Requires additional permissions in AndroidManifest.xml

    • Console output cannot be captured via Blueprints even though they are supposed to

  • In general, Web Browser Widget works in the Editor but breaks in packaged builds across platforms

  • The issue appears related to Unreal Engine’s CEF + Vulkan integration on Linux

  • Shader Model 6 makes the situation worse: the game does not start at all


Impact:
This completely blocks using Web Browser Widget for:

  • Offline games

  • Local HTML/CSS/JS-based UI

  • Embedded documentation or tools

At the moment, the plugin is only reliable inside the Editor, not in real shipped builds.


Questions / Requests

  1. Is this a known issue?
    If so, is there an existing bug report / work-around?

  2. Why does Web Browser Widget in packaged Linux builds fail to load local files / localhost?
    What part of the build process or sandboxing prevents this?

  3. Are there settings / packaging flags that allow local CEF content?
    E.g., whitelist local file access, enable localhost, enable CEF debugging, etc.

  4. Are there recommended work-arounds for local UI on Linux builds?
    Something that does not require external HTTPS hosting.