<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/this-month-in-ladybird-vo7h6anwn" -->

---
title: This Month in Ladybird | daily.dev
description: Ladybird&#x27;s April progress report covers 288 merged PRs from 36 contributors, with 17,214 new passing Web Platform Tests bringing the total to 1,799,262....
canonical: https://daily.dev/posts/this-month-in-ladybird-vo7h6anwn
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: This Month in Ladybird | daily.dev
og:description: Ladybird&#x27;s April progress report covers 288 merged PRs from 36 contributors, with 17,214 new passing Web Platform Tests bringing the total to 1,799,262....
og:url: https://daily.dev/posts/this-month-in-ladybird-vo7h6anwn
og:image: https://api.daily.dev/og/posts/VO7h6anwN.png
og:image:alt: This Month in Ladybird
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# This Month in Ladybird

**[Ladybird Browser](https://daily.dev/sources/ladybird)** · 8 min read · 0 upvotes · 0 comments

## Summary

Ladybird's April progress report covers 288 merged PRs from 36 contributors, with 17,214 new passing Web Platform Tests bringing the total to 1,799,262. Performance work boosted Speedometer 2 scores by 47% and Speedometer 3 by 38%, driven by faster JavaScript function calls via a redesigned stack frame layout, flexbox layout optimizations skipping expensive automatic minimum size calculations, and RegExp engine optimizations yielding up to 16x speedups. Other additions include script-blocking style sheet handling per the HTML spec, dialog ::backdrop pseudo-elements, improved scrollbar interactions, refactored CSS descriptor parsing, corrected CSS URL resolution timing, refined Streams API piping, better float/clear handling, more than doubled IndexedDB WPT pass rate, a new URLPattern implementation, and support for the moveBefore() DOM API for atomic node moves.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://ladybird.org/newsletter/2025-04-30>

## Questions this post answers

### What is the moveBefore() DOM API and how is it different from insertBefore()?

moveBefore() is a DOM API that reparents or reorders nodes as an atomic move, preserving state that insertBefore() would destroy. Unlike insertBefore(), which implicitly removes and re-inserts a node (triggering removal and insertion side effects), moveBefore() avoids running those steps, preventing iframe reloads, preserving active selections or focused form controls, popover open/close state, and animation state. Ladybird added support for this API.

_Track new DOM APIs like moveBefore() as browsers adopt them by following browser engine updates on daily.dev._

### How much did Ladybird improve its Speedometer benchmark scores through performance work?

Ladybird improved its Speedometer 2 score by 47% and its Speedometer 3 score by 38% in a single month of optimization work. Gains came from faster JavaScript function calls (single stack allocation instead of multiple heap allocations, a new argument operand type in the bytecode ISA), flexbox layout optimizations that skip unnecessary intrinsic size calculations, and RegExp engine optimizations delivering up to 16x speedups in some cases.

_Developers evaluating browser engine performance trends can follow benchmark progress like this on daily.dev._

### What is URLPattern and which web specifications use it?

URLPattern is a web platform primitive for declarative URL matching using a pattern syntax based on the path-to-regexp library. It is used by several emerging web specifications, including the Service Worker Static Routing API, the Use-As-Dictionary HTTP header, and the Speculation Rules API. Ladybird implemented URLPattern support this month.

_Keep up with new web platform primitives like URLPattern as browser support lands via daily.dev._

---

Tags: [#javascript](https://daily.dev/tags/javascript), [#css](https://daily.dev/tags/css)

[View this post on daily.dev](https://daily.dev/posts/this-month-in-ladybird-vo7h6anwn)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"This Month in Ladybird","url":"https://daily.dev/posts/this-month-in-ladybird-vo7h6anwn","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/this-month-in-ladybird-vo7h6anwn"},"datePublished":"2026-08-31T05:54:40.705Z","dateModified":"2026-08-31T05:55:31.737Z","description":"Ladybird's April progress report covers 288 merged PRs from 36 contributors, with 17,214 new passing Web Platform Tests bringing the total to 1,799,262....","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/f0d04d597be9efdaf11883698ad30378?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/f0d04d597be9efdaf11883698ad30378?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Ladybird Browser","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Ladybird Browser","logo":"https://media.daily.dev/image/upload/s--gBOjamNh--/f_auto,q_auto/v1788155675/logos/ladybird?_a=BAMAMicg0","url":"https://daily.dev/sources/ladybird"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/this-month-in-ladybird-vo7h6anwn","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"javascript,css","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Ladybird Browser","item":"https://daily.dev/sources/ladybird"},{"@type":"ListItem","position":3,"name":"This Month in Ladybird"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/this-month-in-ladybird-vo7h6anwn#faq","mainEntity":[{"@type":"Question","name":"What is the moveBefore() DOM API and how is it different from insertBefore()?","acceptedAnswer":{"@type":"Answer","text":"moveBefore() is a DOM API that reparents or reorders nodes as an atomic move, preserving state that insertBefore() would destroy. Unlike insertBefore(), which implicitly removes and re-inserts a node (triggering removal and insertion side effects), moveBefore() avoids running those steps, preventing iframe reloads, preserving active selections or focused form controls, popover open/close state, and animation state. Ladybird added support for this API. Track new DOM APIs like moveBefore() as browsers adopt them by following browser engine updates on daily.dev."}},{"@type":"Question","name":"How much did Ladybird improve its Speedometer benchmark scores through performance work?","acceptedAnswer":{"@type":"Answer","text":"Ladybird improved its Speedometer 2 score by 47% and its Speedometer 3 score by 38% in a single month of optimization work. Gains came from faster JavaScript function calls (single stack allocation instead of multiple heap allocations, a new argument operand type in the bytecode ISA), flexbox layout optimizations that skip unnecessary intrinsic size calculations, and RegExp engine optimizations delivering up to 16x speedups in some cases. Developers evaluating browser engine performance trends can follow benchmark progress like this on daily.dev."}},{"@type":"Question","name":"What is URLPattern and which web specifications use it?","acceptedAnswer":{"@type":"Answer","text":"URLPattern is a web platform primitive for declarative URL matching using a pattern syntax based on the path-to-regexp library. It is used by several emerging web specifications, including the Service Worker Static Routing API, the Use-As-Dictionary HTTP header, and the Speculation Rules API. Ladybird implemented URLPattern support this month. Keep up with new web platform primitives like URLPattern as browser support lands via daily.dev."}}]}
```

