Roves
Getting Started

Why Roves?

Tauri vs. Electron vs. Roves — what actually differs, and why.

Edit on GitHub

If you already build your game as a web app, you have three broad ways to ship it as a native desktop binary. They differ in exactly one thing: what actually renders your HTML/CSS/JS.

What sets Roves apart from the other two isn't just "a different rendering engine" — it's built around a few choices specific to games:

  • Built for games, not general-purpose apps. Roves isn't a general embeddable web view with a game running inside it — no address bar, no tabs, no browser chrome to strip away. Every design choice, from window handling to Steam integration, starts from "this is a game," not "this is a generic app."
  • Fast repeat launches. The first launch caches the files your game actually needs to boot — especially valuable when your content ships compressed (see Content packing) — so every launch after that is close to instant, not re-extracting from scratch.
  • A GUI, not just a toolchain. Packmaster packages your game with a few clicks, no command line or Rust/Python toolchain required.
  • Rust, not Node.js. Roves itself is written in Rust — lighter on memory and startup than the Node.js runtime Electron/NW.js bundle alongside their browser, with fewer platform-specific compatibility surprises.
  • Only enough engine to run a game, not a whole browser. See "Roves: a real engine, not the OS's webview and not a full browser" below for what that actually means in practice.

Tauri vs Roves

  • Tiny binary, low memory. You're not shipping a browser — just your app code plus a thin native wrapper. The engine itself is already on the user's machine.
  • You don't control the exact engine version. It's whatever the OS has installed, updated on the OS's own schedule. Three platforms means three different engines, each with its own quirks, bugs, and web-platform feature timeline — genuinely different behavior is possible across users on the same "Tauri build."
  • Best for: apps that don't lean on bleeding-edge web features and want the smallest possible download — or that need mobile (iOS/Android) alongside desktop from the same codebase, which is Tauri's own multi-device support, not something Roves does at all.

Electron (Chromium) vs Roves

  • Fully consistent rendering, everywhere, because it's the literal same browser build every time — no per-OS quirks to test around.
  • Heavy. Tens to well over a hundred megabytes per app, because every single Electron app ships its own private copy of Chromium (and Node) rather than sharing one with the OS or other apps. Startup and memory footprint pay for that too.
  • Best for: apps that need broad, guaranteed-consistent web-platform support and can afford the size.

Roves: a real engine, not the OS's webview and not a full browser

Roves bundles Servo — a modern web engine written from scratch in Rust, not a stripped-down repurposed browser. Like Electron, it's one self-contained binary with a pinned, consistent engine version you control, not whatever the OS happens to have. Unlike Electron, it isn't shipping (or paying the size/memory cost of) an entire general-purpose browser — no dev tools, no extension system, no multi-process browser chrome, none of Node's own runtime — just enough engine to render your own game.

Being honest about the trade-off: Servo is younger and less complete than Chromium or the mature system webviews Tauri relies on. Web-platform coverage is real but not exhaustive, and it's under active development rather than a decade-plus-mature target. Roves is the right fit for a game's own bundled, controlled UI — not for embedding arbitrary third-party web content and expecting perfect compatibility.

In short

EngineSizeConsistency
TauriOS's system webviewSmallestVaries by OS/webview version
Electron / NW.jsBundled Chromium + NodeLargestFully consistent
RovesBundled ServoIn betweenFully consistent

If your game is a fairly standard web app and you want the smallest download, use Tauri. If you need guaranteed, bleeding-edge web-platform completeness and size isn't a concern, a Chromium-based shell is the safer bet. If you want a single consistent engine you fully control without paying full-browser weight for it — and your game's UI is the only thing that needs to render — that's what Roves is for.

On this page