JetStream 3.0 Benchmark Suite Released: WebAssembly Performance Measures Revolutionized

By — min read

In a joint announcement today, Apple's WebKit team, together with colleagues at Google and Mozilla, released JetStream 3.0—a major update to the cross-browser benchmark suite. According to the WebKit team, the new version represents a fundamental shift in how JavaScript and WebAssembly performance are measured, addressing long-standing limitations of its predecessor. Learn more about the problem in the Background section below.

The most significant change in JetStream 3.0 is the complete redesign of WebAssembly (Wasm) benchmarks. Older benchmarks separated startup and runtime phases, a model that had become obsolete as browser engines improved. “We encountered an infinity problem,” said a WebKit engineer involved in the development. “With JetStream 2, startups were so fast that times rounded to zero milliseconds, producing infinite scores. That made the benchmark meaningless for modern Wasm workloads.”

JetStream 2's formula—Score = 5000 / Time—broke entirely when times fell below 1 ms. The team had to patch the harness in version 2.2 to clamp scores at 5,000. The new suite eliminates that workaround by incorporating more complex, real-world workloads that reflect how Wasm is used today.

Background

JetStream has long been a standard for measuring browser JavaScript and WebAssembly performance. JetStream 2, released in 2020, focused on large C/C++ applications that compiled to Wasm with high startup costs. But the web has evolved: Wasm is now embedded in image decoders, UI frameworks, and libraries that load on a critical path.

JetStream 3.0 Benchmark Suite Released: WebAssembly Performance Measures Revolutionized
Source: webkit.org

Browser engines like JavaScriptCore (WebKit), V8 (Chrome), and SpiderMonkey (Firefox) have optimized instantiation times so aggressively that many microbenchmarks no longer differentiate them. The old benchmark’s zero-time scores warned that the suite was outdated. “We essentially optimized our way into a corner,” added a Mozilla performance engineer. “The benchmark no longer represented what users experience.”

What This Means

The overhaul means future performance comparisons will be more realistic. Developers can trust that JetStream 3.0 reflects actual user experience rather than artificial micro-optimizations. “Benchmarks are only useful if they drive general improvements, not just specialist tricks,” commented a Google engineer. “JetStream 3.0 resets the playing field.”

For web users, this translates to faster page loads and smoother applications, as browser vendors compete meaningfully on real-world scenarios. For developers, it’s a clear signal to focus on broader efficiency gains rather than short-term benchmark hacks. The suite also updates its scoring methodology to combine startup and runtime impacts holistically.

Additional Details

JetStream 3.0 includes new subtests that measure Wasm performance in integrated contexts—for example, using Wasm inside a JavaScript-heavy application. The suite also updates its scoring methodology to better represent the combined impact of startup and runtime, preventing the zero-time anomaly.

Apple, Google, and Mozilla plan to continue collaborating on future iterations, with a shared goal of keeping benchmarks aligned with emerging web technologies. “This is not just a refresh; it’s a rethinking of how we benchmark modern web applications,” said a WebKit performance lead.

Note: JetStream 3.0 is available for testing today on all major browsers. For the official announcement and full list of changes, visit the WebKit blog.

Tags:

Recommended

Discover More

Microsoft Unveils 11 New Professional Certificates on Coursera to Bridge the AI, Data, and Development Skills GapExtending Temporal Memory in Video World Models: A State-Space ApproachXenonauts 2 Commander Exposes Internal Feud as Alien Invasion LoomsZhipu.AI Open-Sources Next-Gen AI Models, Claims 8x Speed Boost Over DeepSeek-R1Mastering Secret Management on Kubernetes with Vault Secrets Operator