JetStream 3: A New Chapter in Browser Performance Benchmarking

By • min read

The browser performance landscape is constantly shifting. To keep pace, the WebKit team—together with colleagues at Google and Mozilla—released JetStream 3.0, a major update to the widely used cross-browser benchmark suite. This new version rethinks how we measure modern web workloads, especially in the era of WebAssembly. Below, we answer the most common questions about JetStream 3, its goals, and the engineering behind it.

What is JetStream 3 and who developed it?

JetStream 3 is the latest iteration of a benchmark suite designed to evaluate the performance of browser engines. It was developed collaboratively by the WebKit team (Safari), Google (Chrome), and Mozilla (Firefox). The suite tests a wide range of workloads—from JavaScript and WebAssembly to complex DOM manipulations—reflecting the real-world demands of modern web applications. JetStream 3 builds on the foundation of JetStream 2 but introduces significant changes to stay relevant as web technologies evolve.

JetStream 3: A New Chapter in Browser Performance Benchmarking
Source: webkit.org

Why was JetStream 3 needed?

Benchmarks are essential tools for driving browser engine optimizations, but they can become outdated as web practices change. JetStream 2, released years earlier, no longer captured the performance characteristics of current websites. For example, WebAssembly usage had grown from niche games to critical libraries and UI frameworks. Additionally, the most accessible optimizations for JetStream 2's workloads had been exhausted, leading to diminishing returns. JetStream 3 addresses these gaps by refreshing test scenarios and introducing new metrics that better reflect modern user experiences.

How does JetStream 3 change WebAssembly benchmarking?

In JetStream 2, WebAssembly (Wasm) scores were split into two phases: Startup and Runtime. This model assumed Wasm would be used for large C/C++ applications where users tolerated long initialization times for high throughput. However, modern browsers have dramatically improved Wasm instantiation speeds, making startup times near zero for many workloads. JetStream 3 abandons the separate startup metric and instead measures Wasm performance in a unified, more realistic way—treating Wasm as a lightweight, on-demand component that must load and run quickly alongside other page resources.

What was the "infinity problem" in JetStream 2?

Due to aggressive optimizations, some browsers could instantiate JetStream 2's Wasm modules in under 1 millisecond. The benchmark used Date.now() for timing, which truncates sub-millisecond values to zero. The scoring formula was Score = 5000 / Time, so a zero time produced an infinite score, rendering the results meaningless. The developers had to patch JetStream 2.2 to clamp the maximum score at 5000. This flaw revealed that JetStream 2's Wasm subtests were no longer challenging—the engines had simply outpaced the benchmark.

How did browser engines outgrow JetStream 2's Wasm subtests?

Browser engines like WebKit's JavaScriptCore aggressively optimized Wasm startup paths. Over time, shaving off microseconds—once negligible—became significant as total startup times dropped from 100 ms to 2 ms. A 0.1 ms improvement on a 2 ms workload represented a 5% gain. Eventually, some workloads hit zero measurable startup time. This was a clear sign that the benchmark no longer reflected real-world constraints. On the modern web, Wasm is often loaded in the critical path (e.g., for image decoders or UI frameworks), so even tiny delays matter. JetStream 3 remedies this by using more realistic, demanding Wasm scenarios that prevent scoring infinities.

What are the broader implications of JetStream 3 for web performance?

JetStream 3 represents a fundamental shift in performance measurement. It acknowledges that today's web applications are complex, loading many small components—JavaScript, Wasm, CSS, images—simultaneously. The new suite tests how well browsers handle this concurrency and load-time efficiency. For developers, this means optimizations that save real milliseconds in page loads will be rewarded. For users, it translates to faster, more responsive sites. The collaborative effort also ensures that no single browser vendor dominates, pushing the entire ecosystem forward.

How did the WebKit team contribute to JetStream 3's improvements?

The WebKit team focused on two main areas: refining WebAssembly handling and updating JavaScriptCore's code generation. They re-engineered the Wasm instantiation pipeline to be more efficient for the smaller, frequent modules common today. They also added new test cases that stress the JavaScript engine's ability to optimize code under realistic conditions—like mixed workloads with DOM interactions. These changes help ensure WebKit remains competitive while driving genuine performance gains for Safari users. The team worked closely with Google and Mozilla to design benchmarks that are fair, reproducible, and resistant to overfitting.

Recommended

Discover More

Stop Wasting Time on Setup: How Grafana Assistant Pre-Learns Your Infrastructure for Instant TroubleshootingBrowser-Based Testing for Vue Components: A No-Node Approach6 Essential Steps to Set Up React in Rails Using Webpacker7 Essential Insights into GitHub Copilot CLI: Interactive vs. Non-Interactive ModesHow to Automate SDK Creation for Your API: Best Practices from Industry Leaders