Favicon of Servo

Servo

Servo is an open-source Rust browser engine for research and embedding web tech into apps, supporting macOS, Linux, Windows, Android, and OpenHarmony.

Servo website screenshot
Servo GitHub repository preview

Servo is a web browser engine written in Rust, built as a prototype rather than a shipping consumer browser. It targets developers who want to embed web rendering into applications, experiment with browser engine internals, or research parallel rendering architectures. It runs on 64-bit macOS, Linux, Windows, OpenHarmony, and Android.

Unlike Chromium or Firefox, Servo isn't meant to replace your daily browser. It's a component-level engine that exposes web rendering as something you can embed, study, or extend, with a Rust-first codebase and an active contributor community.

Key features

  • Rust-based architecture: the entire engine is written in Rust, aiming for memory safety and parallelism where traditional browser engines rely on C++.
  • Cross-platform builds: supports macOS, Linux, Windows, Android, and OpenHarmony (including HarmonyOS NEXT) through a unified mach build tool.
  • servoshell reference app: a minimal browser shell (./mach build) that developers can use to run and test the engine directly.
  • Embeddable design: built with the goal of letting other applications embed web technologies rather than functioning only as a standalone browser.
  • Open coordination: development happens in public through GitHub Issues, the Servo Zulip chat, and scheduled video calls, with documentation in the Servo Book.
  • MPL-2.0 licensing: permissive enough for use in both open-source and proprietary projects, with some file-level copyleft obligations.

Ideal use cases

Servo fits projects that need to embed a web rendering engine inside a native application, such as a custom UI toolkit, a kiosk app, or an experimental device interface where you don't want to pull in a full Chromium Embedded Framework dependency. It's also a good fit for browser engine researchers studying parallel layout and rendering techniques in Rust, or contributors who want to work on a modern engine codebase without decades of legacy C++.

It's not a good fit if you need a production-ready, fully spec-compliant browser for everyday web browsing today. Web compatibility is incomplete compared to Chromium or Firefox, and some sites or CSS/JS features may not render correctly. If you need a mature embedding solution right now with broad site compatibility, something like CEF or WebView2 is a safer choice. Servo works best for teams willing to track an evolving project and contribute fixes when they hit gaps.

Installation

Building Servo starts with installing uv and rustup, then running the project's own mach bootstrap and build commands. Steps differ slightly by platform.

macOS

curl -LsSf https://astral.sh/uv/install.sh | sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# restart your shell so cargo is available
./mach bootstrap
./mach build

You'll also need Xcode and Homebrew installed beforehand.

Linux

# install curl first, e.g. on Debian/Ubuntu:
sudo apt install curl
curl -LsSf https://astral.sh/uv/install.sh | sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
./mach bootstrap
./mach build

Windows

# install uv and rustup via their installers
# select 'Quick install via the Visual Studio Community installer'
.\mach bootstrap
.\mach build

You also need winget available and specific Visual Studio components: the Windows 10/11 SDK, MSVC v143 build tools, and C++ ATL for v143.

Android Set ANDROID_SDK_ROOT and ANDROID_NDK_ROOT, install the Android command-line tools, then run:

sudo $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install \
 "build-tools;36.0.0" \
 "emulator" \
 "ndk;28.2.13676358" \
 "platform-tools" \
 "platforms;android-37" \
 "system-images;android-37;google_apis;x86_64"

Then follow the steps for your host platform (macOS, Linux, or Windows).

OpenHarmony Prepare the environment as for your host platform, then set DEVECO_SDK_HOME or OHOS_BASE_SDK_HOME, OHOS_SDK_NATIVE, and SERVO_OHOS_SIGNING_CONFIG. Pass --flavor=<default|harmonyos> to mach build, mach package, or mach install depending on the target distribution.

For full detail, consult the Servo Book's "Getting the Code" and "Building Servo" pages.

Frequently asked questions

Share:

Stars
37.8K
Forks
3.8K
Last commit
21 hours ago
Repository age
15 years
License
MPL-2.0
Self-hosted
No
Activity score
85/100
View Repository
Ad
Favicon

 

  
 

Similar to Servo

Favicon

 

  
 
Favicon

 

  
 
Favicon