Try Flutter Web with WebAssembly Week

Unlock up to 2x to 5x faster web performance by opting into Wasm compilation today

Dash celebrating Try Flutter Web with WebAssembly Week
Welcome to Try Flutter Web with WebAssembly Week

Flutter lets you build expressive, multi-platform apps from a single codebase. Whether you're building a dashboard, a tool for your team, or a full web application, Flutter Web gives you the power to bring your app to any browser.

From August 17 to August 21, we're hosting Try Flutter Web with WebAssembly Week! Throughout the week, Dart and Flutter engineers will triage incoming issues in real time to help unblock migrations, and our developer relations team will share your wins across community channels.


WebAssembly in Flutter Web

We stabilized WebAssembly (Wasm) support in Flutter 3.22 back in May 2024 by pairing the Dart compiler with WebAssembly Garbage Collection (WasmGC).

Since then, Wasm compilation has proven itself on real-world apps. For example, Dart DevTools (dartdevtools)—a complex, highly interactive Flutter web app—has shipped with WebAssembly by default since late 2024. Today, over 97% of developers using DevTools run it on Wasm, benefiting from smooth UI inspection, fast loading, and rock-solid stability.

Wasm compilation is battle-tested and production-ready. In fact, our analysis shows that over 58% of existing Flutter web apps compile to WebAssembly today with zero code changes.

When you compile to WebAssembly, your app benefits from both compiler acceleration (dart2wasm) and multithreaded rendering (skwasm):

  • Up to 2x faster frame times & sustained 60 FPS: Under heavy widget tree churn where JavaScript drops frames down to ~30 FPS (34.5 ms total frame time), Wasm maintains smooth 60 FPS delivery (17.4 ms total frame time).
  • Up to 2.5x faster widget building & execution: Native WasmGC structures accelerate complex UI logic and state updates, cutting widget build time from 29.3 ms down to 11.4 ms.
  • Multithreaded background rasterization: Skwasm offloads canvas rasterization to a dedicated Web Worker, keeping the main browser thread free for responsive UI interactions.
  • 🎯 Over 3x smoother frame consistency: Cuts frame jitter from ±1.5 ms down to ±0.5 ms, eliminating garbage collection pauses.
  • 📦 Minimal bundle size change: Total application bundle size is no more than 5% larger compressed over the wire.
WebAssembly versus JavaScript framerate and performance comparison
Live performance comparison on flutter-wasm-compare.web.app: WebAssembly delivers 2.0x faster total frame times (17.4ms vs 34.5ms), 2.5x faster widget build speeds (11.4ms vs 29.3ms), and 3.0x lower jitter.

Try it yourself! You can test and compare performance on your own hardware using our interactive demo at flutter-wasm-compare.web.app (source code).

Benchmark metrics above measured in Google Chrome 151 (151.0.7922.109) on an Apple M4 Pro MacBook Pro (48 GB, macOS Sequoia 15.7.7) at a 60 Hz display refresh cap under medium stress (200 animated churn nodes).


Why JavaScript is still the default compiler target

If Wasm delivers better speed and stability, why does flutter build web still default to JavaScript (dart2js)?

Changing the default compiler for millions of developers is a big move. While over half of Flutter web apps build with Wasm out of the box, some pub.dev packages still rely on legacy JavaScript interop (dart:html or dart:js) that needs to be updated for Wasm compatibility.

This creates a classic chicken-and-egg dilemma:

  • We can't make --wasm the default until more ecosystem packages update their JS interop code.
  • Package authors often don't prioritize updating until developers opt in to Wasm and request Wasm support.

WebAssembly migration resources

To help you migrate, we've updated our web documentation. Check out these guides before building:


Try WebAssembly this week

Whether you maintain a pub.dev package, manage a production web app, or build side projects, test your code with WebAssembly this week!

Get started

  1. 🚀 Upgrade to Flutter 3.47: Run flutter upgrade to ensure you're on the latest stable release with our newest WasmGC optimizations and runtime fixes.
  2. ⚙️ Build with Wasm: Run flutter build web --wasm in your project terminal.
  3. 📝 Report any blockers: If you run into package dependencies or runtime issues, let us know! File a report on the Flutter Wasm feedback form so our engineers can help unblock migration.
  4. 🎉 Share your wins: If your app builds cleanly and runs faster, tell us! Share your metrics and framerate gains.

When posting on social media, use #FlutterWasmWeek so we can feature your results!


Building a Wasm-by-default web future

By testing your apps and resolving package dependencies together this week, we can pave the way to making WebAssembly the default compiler for Flutter Web.

Run flutter upgrade, try flutter build web --wasm, and let us know how it goes!

More from Flutter