↫ Home

WebKit Igalia Periodical #85

10 November, 2026 - Categories: wip

Update on what happened in WebKit in the week from November 2 to November 10.

This week it's not all fun and games, yet gamepad support gets some polish with reduced latency and support for analog buttons; WebAudio contexts now support choosing outputs; the old compositor gets removed; and anorther flurry of small changes make their way to the new SVG rendering engine.

WebKitGTK 🖥️

Fixed incorrect gamepad button mapping in WebKitGTK, where the North and West facing direction buttons were swapped.

Improved gamepad input latency, reducing delays from up to 50ms down to the 10 to 12ms range, and preventing missed quick button presses.

Cross-Port 🐱

Added support for analog gamepad buttons when using libmanette.

Fixed a bug that caused formAssociatedCallback to sometimes fire twice in Safari.

Multimedia 🎥

GStreamer-based multimedia support for WebKit, including (but not limited to) playback, capture, WebAudio, WebCodecs, and WebRTC.

Implemented support for the WebAudio AudioContext.setSinkId() API in the GStreamer multimedia backend.

Graphics 🖼️

Since shipping the new Skia-based compositor enabled by default in September, the team has shipped fixes for a few issues in the 2.54.1 and 2.54.2 releases. The Skia compositor now supports more features than the TextureMapper compositor did, while reducing memory usage and providing better performance.

At this point keeping the TextureMapper code in the source tree did no longer provide any benefit and it was not actively tested, so it was decided to no longer support building TextureMapper to ease maintenance going forward. It has served WebKit well for 16 years.

Fixed a crash in the Layer-Based SVG Engine (LBSE) that happened when a shape filled or stroked with an SVG <pattern> got its renderer before the pattern existed. The pattern's image cache now drops a destroyed shape's entry by itself, and the shape is registered as a client once the pattern appears, so no stale cache entries are left behind.

Fixed the composited bounds of accelerated filter animations, which ignored the blur outsets of the animated filter because animations running on the compositor don't trigger style updates. WebKit now uses the largest outsets across all filter key frames for overlap testing and view transition captures, so a later sibling that only overlaps the blurred area is composited correctly and no longer painted below the animated layer

Made SVG fonts obey the font-variant attribute of <font-face>, so a face now only matches the variants it lists, following CSS 2 font matching. Text with small-caps now uses the glyphs of a small-caps face directly instead of synthesizing scaled-down capitals that these fonts often lack, and normal text no longer depends on the order in which the faces were registered.

WPE WebKit 📟

WPE Platform API 🧩

New, modern platform API that supersedes usage of libwpe and WPE backends.

Fixed named cursor images being drawn away from the actual pointer location when using the built-in WPEPlatform Wayland implementation.

Infrastructure 🏗️

Replaced the frame cycle with composition-aware reporting in webkit-sysprof, the tool that analyzes Sysprof captures from WebKitGTK and WPE, so frames that the ThreadedCompositor produces on its own (such as for accelerated animations) are no longer missed. A new timeline command draws the main thread and the compositor as “swimlanes” with numbered frames, which makes dropped frames much easier to track down.

That’s all for this week!