-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Roadmap
Nico Burns edited this page Feb 23, 2026
·
133 revisions
Note
To propose changes to the Roadmap, please leave a comment at servo/project#114 issue.
-
(Re)split the script and layout threads
- Servo currently uses the same thread for script and layout. With a new design, it's possible to run JavaScript (and any other DOM mutations) and layout on different threads without any global blocking.
- People: @xiaochengh
-
Initial accessibility support
- Accessibility is one of the main missing pieces in Servo, we want to work on adding accessibility support to Servo. This is a challenging project as we want to design a performant accessibility design. Main goal is to provide initial accessibility features to start exposing information to assistive technologies.
- People: @Igalia
-
Abstraction layer for the JavaScript engine
- There are interest in exploring the usage of different JavaScript engines in Servo other than the current one, SpiderMonkey. In some initial experiments for example V8 has shown to have a lower memory consumption. The idea is to work in an abstraction layer that would allow this kind of things.
- People: @xiaochengh
-
Implement Shadow DOM
- One of the most common errors when browsing real world sites/web apps is that attatchShadow is not implemented. This will help close the gap in expected web compatibility when testing Servo against existing web content.
- People: @jdm (will break down tasks, someone would have to work on them)
-
Editability and Interactivity Enhancements
- There are many things that are still missing int he new layout engine in Servo, one of them are some things like editing a text input (you can do it know but there's no caret or anything), editing more complex form fields, being able to interact properly with a form, selection, etc. Some of these things might be too big or complex, but in general it seems worth to improve the current status of affairs in this area to make Servo more usable.
- People: @Igalia
-
CSS Grid Layout support
- CSS Grid is an important modern layout method which Servo should support. Basic support through taffy has been already added, planning to devote more time to WPT test score improvements once that lands.
- Issues: Tracking Issue: CSS Grid
- People: @nicoburns
-
Clean shutdown of Servo
- Trying to get the "threads are still running after shutdown (bad)" warning to 0 (and fix a bunch of panics that are symptoms of the problem).
Issues: https://github.com/servo/servo/issues/30849 (see also many other issues with crashes from recent fuzzing efforts linking to that issue) - People: @gterzian, @Taym95
- Trying to get the "threads are still running after shutdown (bad)" warning to 0 (and fix a bunch of panics that are symptoms of the problem).
-
Finish AbortSignal
- Finish the Abort signal work, including advanced features, and integrations.
Issues: https://github.com/servo/servo/issues/36936, https://github.com/servo/servo/issues/34866 - People: @gterzian, @Taym95
- Finish the Abort signal work, including advanced features, and integrations.
-
Align Iframe navigation with the spec
- The spec around navigation has changed quite a lot since 2019, and our iframe loading code reflects that prior era, which brings noticeable problems in the form of intermittent issues.
Issues: https://github.com/servo/servo/issues/36936, https://github.com/servo/servo/issues/34866 - People: @jdm, @gterzian, @Taym95
- The spec around navigation has changed quite a lot since 2019, and our iframe loading code reflects that prior era, which brings noticeable problems in the form of intermittent issues.
- Improving the Embedding API
-
Implement support for Mini-apps
- Implement a prototype of the draft mini-app spec(s). Defining what this exactly means is part of the project. This will likely also involve adding support for Web APIs that are required to support the mini-apps (e.g. Service Workers).
- People: @gterzian
- Renderer Alternatives
-
Improve CI (build/lint/test) times
- CI iterations times affect and slow down everyone working on Servo. This may be particular painful for new contributors who are not used to waiting 1 hour for CI checks, but also affects the productivity of regular contributors.
- Commitment: @nicoburns, @dazabani
-
Onboarding new contributors and maintainers
- Servo currently struggles to maintain the amount of code it owns with the number of contributors/maintainers that it has. It ought to be an explicit priority to onboard new contributors, with an emphasis on onboarding senior contributors with Rust and/or browser development experience where possible. And additionally to uplift (new or existing) contributors to maintainer status where they (collectively) have the ability to independently review/approve/publish code in their area.
- People: @nicoburns (needs support from the rest)
-
Layout performance
- The new layout engine hasn't been optimized in most cases, it'd be useful to investigate performance and check if we can implement optimizations. One key feature that we're missing is usually known as incremental layout, that prevents having to relayout the whole website when there are changes in a particular part of it; this is a very important feature if we want to have a proper comparison with other engines after the initial layout.
- People: @Igalia
-
Implementing the Media Source API
- The Media Source API is used in most major video streaming sites, including YouTube. Right now I believe Servo's video playback is limited to contexts where the entire video file is downloaded at once. I think that getting this working would help expand potential use cases for Servo, particularly for embedders that want to be able to interact with streaming video. It would also make for some nice press (worth noting Ladybird also does not support this API yet) and could help stir up more interest in the project. Not to mention there wouldn't be the ugly grey rectangle when viewing the Servo website anymore!
-
Supported embedding exemplar projects
- We should choose 2-3 use cases for embedding Servo beyond a general purpose browser. Once these are selected, we can build representative examples of these use cases, which will help focus our API design and make Servo a more attractive option for Rust projects that match them. We have to identify use cases.