# servo v0.4.0 - Product: servo (https://whatsnew.fyi/product/servo) - Vendor: servo - Date: 2026-08-04 - Version: v0.4.0 - Original notes: https://github.com/servo/servo/releases/tag/v0.4.0 - Permalink: https://whatsnew.fyi/product/servo/releases/v0.4.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **changed** — macOS ServoShell binaries are now signed - **added** — Implement console.dir - **added** — Implement Unrooted Inclusive Ancestor iterator in script - **added** — Introduce PreviewId in devtools to get previews - **added** — Introduce Promise::reject_error_with_cx in script - **added** — Introduce Promise::{resolve,reject}_native_with_cx in script - **added** — Enable legacy touch events event handler in script - **added** — Add specs steps to gamepad functions - **added** — Implement muted errors in script - **changed** — Rewrite the StackingContextTree to be sparse - **changed** — Use SecureContext on namespaces in webgpu - **changed** — Upgrade surfman to 0.12.2 - **changed** — Bump sha3 to 0.12 - **changed** — Bump ml-dsa to 0.1 - **changed** — Bump ml-kem to 0.3 - **changed** — Move more of the constructor into non-generated code in script_bindings - **changed** — webgpu interface to namespace to reduce webidl diff - **changed** — webgpu rename *Image* to *Texel* - **fixed** — Fix UA stylesheet for input type="radio" - **fixed** — Fix an image cache leak on reloads This release is a re-release of the 0.4.0 release since we forgot the `v` prefix when creating the tag. Additionally, the macOS ServoShell binaries are now signed. ------------------------ See our [June blog post](https://servo.org/blog/2026/07/31/june-in-servo/) for a curated overview of the changes in this release. ##### Trying out the Servo Tech Demo [troubleshooting guide]: https://servo.org/download/#troubleshooting ###### Linux If you see an error `loading shared libraries` when starting servo on Linux, please refer to the [troubleshooting guide]. ###### HarmonyOS Please note that the `servo-aarch64-linux-ohos.hap` attached here is signed for OpenHarmony, not HarmonyOS. For HarmonyOS self-signing is currently required - You can download the `servo-aarch64-linux-ohos.so` shared library and use DevEco Studio to follow the instructions in the ArkTS [Servo Demo repository](https://github.com/jschwe/ServoDemo) ##### What's Changed Please check out our [June blog post](https://servo.org/blog/2026/07/31/june-in-servo/) to get a curated overview over the recent changes.
Generated Release notes ##### What's Changed * deps: Bump `sha3` to 0.12 by @kkoyung in https://github.com/servo/servo/pull/45280 * webgpu: Use SecureContext on namespaces by @sagudev in https://github.com/servo/servo/pull/45279 * layout: fix UA stylesheet for `` by @RichardTjokroutomo in https://github.com/servo/servo/pull/44627 * Implement console.dir by @Taym95 in https://github.com/servo/servo/pull/45109 * layout: Root unbound nodes until next reflow is finished. by @alice in https://github.com/servo/servo/pull/44949 * layout: Avoid extra work when there is no strong BiDi content by @mrobinson in https://github.com/servo/servo/pull/45007 * libservo: Add documentation for more public types. by @mukilan in https://github.com/servo/servo/pull/45282 * script: Implement Unrooted Inclusive Ancestor iterator by @Narfinger in https://github.com/servo/servo/pull/44906 * devtools: introduce `PreviewId` in order to get previews by @atbrakhi in https://github.com/servo/servo/pull/45139 * deps: Upgrade surfman to `0.12.2` by @mrobinson in https://github.com/servo/servo/pull/45286 * webgpu: `interface` -> `namespace` to reduce webidl diff by @sagudev in https://github.com/servo/servo/pull/45284 * layout: Rewrite the StackingContextTree to be sparse by @mrobinson in https://github.com/servo/servo/pull/45208 * layout: Preserve active `display: contents` when handling anonymous table parts by @Loirooriol in https://github.com/servo/servo/pull/45287 * net: Fix an image cache leak on reloads by @jschwe in https://github.com/servo/servo/pull/45261 * ci: Fix etc/ci/scenario Python types by @janeoa in https://github.com/servo/servo/pull/45204 * servoshell: Rely on egui to know when widgets are animating by @mrobinson in https://github.com/servo/servo/pull/45289 * tests: Fix warning about unused variable in webview tests by @jschwe in https://github.com/servo/servo/pull/45291 * webgpu: rename `*Image*` -> `*Texel*` by @sagudev in https://github.com/servo/servo/pull/45292 * script_bindings: Move more of the constructor into non-generated code by @Narfinger in https://github.com/servo/servo/pull/44948 * servo: In `test_preferences_change` more thoroughly test setting `grid-column` by @Loirooriol in https://github.com/servo/servo/pull/45293 * deps: Bump `ml-dsa` to 0.1 by @kkoyung in https://github.com/servo/servo/pull/45294 * fonts: Remove redundant `hardcoded_font_families` for ohos by @RichardTjokroutomo in https://github.com/servo/servo/pull/45296 * webgpu: Reshuffle and split encoder mixins, remove some unused dictionaries in webidl by @sagudev in https://github.com/servo/servo/pull/45298 * script: Enable legacy touch events event handler by @stevennovaryo in https://github.com/servo/servo/pull/45049 * Fix building on RISC-V by @fxzjshm in https://github.com/serv _[Truncated at 4000 characters — full notes: https://github.com/servo/servo/releases/tag/v0.4.0]_