January in Servo: preloads, better forms, details styling, and more!

or a flexbox reference), and such improvements ensure that SERVO matches the output of other browsers.
with elements scrollable overflow Can have more consistent scrolling, even with CSS changes applied to them (@stevennovaryo, #41707, #42005).

now you can use ‘Material: ‘on any element (@andreubotella, #41480). Generated image content is used only to work with pseudo elements, but that restriction no longer applies.

elements

can now be styled with ‘::description-content’ pseudo-element (@lukewarlow, #42107), as well as the ‘:open’ pseudo-class (@lukewarlow, #42195).

CSS styles are now inherited correctly ‘display:content’ as well as elements In shadow DOM content (@longvatrong111, @Loirooriol, @mrobinson, #41855).

‘overflow-clip-margin’ now works correctly when ‘border-radius’ Exists (@loiruriol, #41967).

We’ve fixed a bug involving text inside flexbox elements: they now consistently use a baseline for alignment (@lukewarlow, @mrobinson, #42038), and style updates are correctly propagated to text (@mrobinson, #41951).

Now aligns the image as expected (@mrobinson, #42220).

‘word punctuation: keep everything’ now prevents line breaks CJK text (@Richardtjocrotomo, #42088).

We also fixed some bugs including floating, collapsing marginsAnd Phantom Line Boxes (@Loirooriol, #41812), which looks much better than it actually is.

Finally, we upgraded our Stylo dependencies to the latest changes as of Jan 1, 2026 (@Loirouriol, #41916, #41696). Stylo powers our CSS parsing and style resolution engine, and this upgrade improves support for Parsing color functions Like ‘color-mix()’and improves ours CSS animations and transitions For clipping borders and overflow.

Automation and introspection

Last month Servo gained support for HTTP proxies. now we support HTTPS proxy Also (@Narfinger, #41689), which can be configured with https_proxy Or HTTPS_PROXY environmental variables, or network_https_proxy_uri Preference. Other than this, NO_PROXY environmental variables or network_http_no_proxy can prioritize Disable any proxy For specific domain.

Our developer Tools Integration continues to improve. Worker globals are now correctly categorized in the UI (@atbrakhi, #41929), and the source panel is populated for very small documents (@atbrakhi, #41983). Servo will report console messages that were logged before the developer tools opened (@eerii, @mrobinson, #41895). Finally, we fixed a glitch in the layout inspector when selecting nodes that have no style information (@eerii, #41800).

We are working towards supporting pauses in the JS debugger (@eerii, @atbrakhi, @jdm, #42007), and breakpoints can be toggled through the UI (@eerii, @atbrakhi, #41925, #42154). While the debugger is paused, hover over the JS object will report the object’s properties to the underlying JS classes (@eerii, @atbrakhi, #42186). Stay tuned for more JS debugging updates in next month’s blog post!

of servo webdriver server Maturing also. Evaluating a synchronous script that returns a promise will wait until that promise is completed (@yezhizhen, #41823).
‘TouchMove’ event Pointers to actions become active when a button is pressed (@yezhizhen, #41801), and ‘TouchCancel’ event Canceled pointers are removed for action items (@yezhizhen, #41937). Finally, any indicator actions that will trigger Duplicate ‘mousemove’ event Are quietly discarded (@mrobinson, #42034).

element clear order Now test if the element is interactable (@yezhizhen, #42124). Now a zero script execution timeout value will never trigger a timeout (@yezhizhen, #42184), and synthesized ‘pointermove’ events is a consistent pointerId Price (@yezhizhen, #41726).

embedding

you can now cross-compile servo Using Windows as host (@yezhizhen, #41748).

We Pinned all git dependencies For specific modifications, to reduce the risk of build failures (@Narfinger, #42029). We eventually intend to restrict Git dependencies in the Cervo libraries, which will help prevent releasing Cervo on crates.io.

SiteData Manager now there is a new one clear_site_data() Method to clear all stored data for a particular host (@janvarga, #41618, #41709, #41852).

Our nightly testing UI, servoshellNow respects any customized installation paths on Windows (@yezhizhen, #41653). We fixed a crash in the Android app when stopping the application (@NiklasMerz, #41827). Additionally, clicking inside a webview in the desktop app will remove focus from any browser UI (@mrobinson, #42080).

We have laid more groundwork towards uncovering accessibility tree Information from webviews (@delan, @lukewarlow, @alice, #41924). Nothing to test yet, but keep an eye on our tracking issue if you’d like to be notified when nightly builds are ready for testing!

stability and performance

We have changed many of its uses ipc channel From engine to channel more efficient When multiprocess mode is disabled (@Narfinger, @jdm, @sagudev, @mrobinson, #41178, #41071, #41733, #41806, #41380, #41809, #41774, #42032, #42033, #41412). Since multiprocess mode is not yet enabled by default (--multiprocess), this is a significant boost to the everyday performance of the servo.

servo sets now Socket timeout for HTTP connection (@Narfinger, @mrobinson, #41710). It is controlled by network_connection_timeout priority, and default 15 seconds.

Each instance of SERVO now starts four less threads (@Narfinger, #41740). Any network operation that triggers a synchronous UI operation (such as an HTTP authentication prompt) no longer prevents other network operations from completing (@Narfinger, @jdm, #41965, #41857).

It is said that one of the hardest problems in computer science is cache invalidation. We improved memory usage Dynamic Inline SVG Content By removing old SVG tree data from cache (@TomRCummings, #41675). Meanwhile, we added a new cache to reduce memory usage and improve rendering performance for pages with animated images (@Narfinger, #41956).

Servo’s JS engine now accounts for 2D and 3D canvas-related memory usage when deciding how often to perform garbage collection (@sagudev, #42180). This can reduce the risk of out-of-memory (OOM) errors on pages that create large numbers of ephemeral WebGL or WebGPU objects.

To reduce the risk of jitter associated with JS engine integration, we are continuing to use rust type system Making certain types of dynamic borrow failures impossible (@sagudev, #41692, #41782, #41756, #41808, #41879, #41878, #41955, #41971, #42123). We also continue to identify and restrict code patterns This can trigger rare crashes when garbage collection occurs when destroying a webview (@willypuzzle, #41717, #41783, #41911, #41911, #41977, #41984, #42243).

This month also brought solutions to jitter in parallel layout (@mrobinson, #42026), WebGPU (@WaterWhisperer, #42050), (@jdm, #42208), element.attachShadow() (@mrobinson, #42237), text input methods (@mrobinson, #42240), web workers when developer tools are activated (@mrobinson, #42159), IndexedDB (@gterzian, #41960), and getting asynchronous session history updates (@mrobinson, #42238).

Node.compareDocumentPosition() Now more efficient (@webbeef, #42260), and selection in text input no longer requires full page layout (@mrobinson, @Loirooriol, #41963).

Donation

Thank you again for your generous support! Now we are getting 7007 USD/month (−1.4% from December) in recurring donations. This helps us cover our costs Accelerated CI and Benchmarking Serverone of our latest Outreach Traineeand funding maintenance work This helps more people contribute to ServO.

Servo is also on thanks.dev, and already 33 GitHub users (+3 in December) Those who depend on Cervo are sponsoring us there. If you use a server library like url, html5ever, selector, or cssparser, signing up for thanks.dev can be a great way for you (or your employer) to give back to the community.

now we have Sponsorship level Which allows you or your organization to donate to the SERVO project with public acknowledgment of your support. A huge thank you to our latest Bronze sponsor from SERVO: str4d! If you are interested in this type of sponsorship, please contact us here [email protected].

The use of donations is decided transparently through the public Technical Steering Committee Funding Request ProcessAnd active proposals are tracked in SERVO/Project#187. For more information, visit our sponsorship page.

Conference Talks and Blogs

There were two talks about servos at FOSDEM 2026 (video and slides here):



<a href

Leave a Comment