Webview Bundle

Introduction

An offline-first web resource delivery system for webview-mounted frameworks and platforms.

Webview Bundle (wvb) is an offline-first web resource delivery system for webview-mounted frameworks and platforms. It packs your built web assets (HTML/JS/CSS/media) into a single compressed, integrity-checked archive (.wvb) that your app ships with and serves to its webview through a custom URL scheme — and can update over the air without an app-store release.

 build output            .wvb archive              your app's webview
┌──────────────┐  pack  ┌───────────────┐  serve  ┌────────────────────┐
│ dist/        │ ─────▶ │ app_1.0.0.wvb │ ──────▶ │ app://app/index.html│
│  index.html  │        │  (compressed, │         │  (offline, instant) │
│  app.js …    │        │   verified)   │         └────────────────────┘
└──────────────┘        └───────────────┘
                              │  upload + deploy        ▲ download + verify
                              ▼                         │
                        ┌───────────────┐   updater     │
                        │ remote server │ ──────────────┘
                        └───────────────┘

Why Webview Bundle?

  • Offline-first. Resources are bundled locally, so the first paint never waits on the network.
  • Over-the-air updates. Ship a fix or feature by deploying a new bundle version — no native release required.
  • Integrity & authenticity. Every bundle carries checksums, and downloads can be verified with SHA-3 integrity hashes and digital signatures (ECDSA, Ed25519, RSA).
  • One format, every platform. The same .wvb archive works in Electron, Tauri, Android, and iOS via a shared Rust core.

Start here

Then pick your platform guide:

Packages

PackageWhat it isWhere it runs
wvbRust core: bundle format, source, remote, updater, protocol, integrity, signatureeverywhere (library)
@wvb/cli (wvb)Command-line tool: pack, serve, upload, deploy, download, local remoteyour machine / CI
@wvb/configdefineConfig for wvb.config.tsbuild tooling
@wvb/nodeN-API bindings to the coreNode.js
@wvb/electronElectron integration (protocols, IPC, updater)Electron main/renderer
wvb-tauriTauri plugin (protocols, commands, updater)Tauri app
wvb-ffiUniFFI bindings (Kotlin/Swift)Android / iOS
@wvb/remote-*Remote server providers (local, AWS, Cloudflare)your update backend

The bundle format in one line

A .wvb file is [ Header | Index | Data ]: a 17-byte header (magic number, version, index size, checksum), an index mapping each file path to its location and HTTP metadata, and an LZ4-compressed data section. The full byte-level spec lives in the wvb crate docs.

On this page