JetStream 3.0: A New Era for Browser Performance Benchmarking

In a collaborative announcement with Google and Mozilla, the WebKit team has introduced JetStream 3.0, a major update to the cross-browser benchmark suite. While the joint announcement highlights the suite’s breadth and the cooperative effort behind it, this article delves deeper into the challenges faced by the WebKit team and the engineering work in JavaScriptCore that drove our performance improvements.

Why a New Benchmark?

Benchmarks are invaluable tools for browser engine developers aiming to drive performance. However, the web is constantly evolving, and any benchmark can become outdated as new best practices emerge. Moreover, once the most accessible optimizations are addressed in a benchmark, subsequent improvements tend to become increasingly specific to that exact workload rather than broadly beneficial. JetStream 3 represents both a refresh and a fundamental shift in how we measure performance, particularly regarding WebAssembly (Wasm) and the scale of modern web applications.

JetStream 3.0: A New Era for Browser Performance Benchmarking
Source: webkit.org

The Evolution of WebAssembly Benchmarking

One of the most significant changes in JetStream 3 is how we measure WebAssembly workloads. To understand this shift, we need to revisit the origins of Wasm benchmarking. When JetStream 2 was released, WebAssembly was still in its infancy. Early adopters were large C/C++ projects that had previously compiled to asm.js. At the time, we anticipated large applications—like video games—where users would tolerate a long, one-time startup cost in exchange for high throughput performance. Consequently, JetStream 2 scored Wasm in two distinct phases: Startup and Runtime.

The Zero-Startup Problem

Over the years, browser engines have become remarkably efficient at instantiating WebAssembly modules. As startup times improved, the incentive to pursue even micro-optimizations actually increased. Shaving 0.1 ms off a 100 ms workload is negligible, but once engines reduced instantiation to just 2 ms, that same 0.1 ms improvement represented a 5% performance gain. In WebKit, we optimized the startup path so aggressively that for certain smaller workloads, startup time effectively reached zero seconds. In JetStream 2, each iteration’s time was computed using Date.now(), which rounds down—so any sub-1 ms time becomes 0 ms.

This created a unique scoring challenge. The formula used was: Score = 5000 / Time. When the recorded time hit zero, the score became infinity. We eventually patched the benchmark harness (JetStream 2.2) by clamping the score to 5000, preventing a single subtest from dominating the overall result.

Moving Beyond Microbenchmarks

While achieving an infinite score might sound like a victory, it was a clear signal that browser engines had outgrown JetStream 2’s Wasm subtests. On the modern web, WebAssembly is now on the critical path for many page loads—used in libraries, image decoders, and UI frameworks. A “zero” startup time in a microbenchmark fails to capture the complex interactions that occur in real-world applications. JetStream 3 addresses this by incorporating larger, more realistic workloads that better reflect how Wasm is used today.

Key Improvements in JetStream 3

  • Updated WebAssembly benchmarks: Replaced the original Startup/Runtime separation with integrated workloads that mimic practical use cases, such as image processing and UI rendering.
  • Expanded test coverage: Added new benchmarks for modern JavaScript patterns (including async/await, Promises, and classes) and DOM interactions to ensure the suite reflects current web development practices.
  • Better scaling: Adjusted scoring algorithms to avoid the infinite-score issue and provide more granular performance differentiation across fast engines.

The Engineering Behind the Scenes

The WebKit team invested significant effort in JavaScriptCore to support these changes. We rewrote the benchmark harness to use high-resolution timers and added safeguards to prevent timing anomalies. We also worked closely with Google and Mozilla to ensure consistent test execution across browsers.

Conclusion

JetStream 3.0 is more than just an incremental update—it’s a necessary evolution in how we measure browser performance. By addressing the shortcomings of JetStream 2 and embracing the complexity of real-world web applications, this new suite provides developers with a more accurate and actionable tool. We invite you to explore the benchmark and see how your browser stacks up.

Tags:

Recommended

Discover More

The Marathon Infection Chain of ClipBanker: How a Simple Search Leads to a Cryptocurrency-Stealing Trojan10 Shocking Truths About AI Document Corruption You Need to KnowHow to Identify and Mitigate the Critical GitHub CVE-2026-3854 Remote Code Execution VulnerabilityTed Turner's Legacy: 10 Key Facts About the CNN FounderAWS Weekly Recap: Key AI Partnerships and Lambda Enhancements (April 27, 2026)