-
Notifications
You must be signed in to change notification settings - Fork 3.5k
feat(blog): add try Flutter web with WebAssembly week post draft #13667
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
kevmoo
wants to merge
5
commits into
main
Choose a base branch
from
tfw4-blog-post
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+168
−0
Draft
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
f015f32
feat(blog): add try Flutter web with WebAssembly week post draft
kevmoo 4f68be2
refactor(blog): apply PR review feedback and add image assets
kevmoo 7d47cb9
refactor(blog): optimize structural pacing and remove redundancies
kevmoo 2ced798
refactor(blog): update closing call to action sentence
kevmoo f92c8d0
fix(blog): update frontmatter category to event for Jaspr validation
kevmoo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Binary file added
BIN
+312 KB
...ntent/blog/try-flutter-web-with-webassembly-week/images/header_placeholder.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+312 KB
...g/try-flutter-web-with-webassembly-week/images/perf_comparison_placeholder.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
168 changes: 168 additions & 0 deletions
168
sites/www/content/blog/try-flutter-web-with-webassembly-week/index.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,168 @@ | ||
| --- | ||
| title: "Try Flutter Web with WebAssembly Week" | ||
| description: >- | ||
| Unlock up to 2x to 5x faster web performance by opting into Wasm compilation today | ||
| publishDate: 2026-08-17 | ||
| author: kevmoo | ||
| image: images/header_placeholder.webp | ||
| category: event | ||
| layout: blog | ||
| --- | ||
|
|
||
| <!-- TODO(graphics): Replace with finalized banner artwork featuring Dash and WebAssembly branding --> | ||
| <DashImage figure src="images/header_placeholder.webp" alt="Dash celebrating Try Flutter Web with WebAssembly Week" caption="Welcome to Try Flutter Web with WebAssembly Week" /> | ||
|
|
||
| When building interactive web portals, enterprise tooling, and data-driven | ||
| dashboards, Flutter enables you to deliver expressive, multi-platform | ||
| experiences directly to browsers from a single codebase. | ||
|
|
||
| From August 17 to August 21, you can help advance the next tier of web | ||
| application speed by participating in our live community-wide sprint, **"Try | ||
| Flutter Web with WebAssembly Week"**. Throughout this event week, Dart and | ||
| Flutter engineers are conducting daily triage on incoming issue reports to | ||
| resolve migration bottlenecks in real-time, while our developer relations team | ||
| monitors community channels daily to highlight your migration success stories. | ||
|
|
||
| --- | ||
|
|
||
| ## Why WebAssembly? | ||
|
|
||
| In May 2024, with the release of Flutter 3.22, our Flutter and Dart engineering | ||
| teams officially stabilized WebAssembly compilation (graduating it from | ||
| experimental status) by integrating the Dart compiler directly with modern | ||
| WebAssembly Garbage Collection (WasmGC) runtimes and WebAssembly-native | ||
| rendering optimizations. | ||
|
|
||
| This architectural integration provides a verified enterprise solution. **Dart | ||
| DevTools** (`dartdevtools`), a complex and highly interactive Flutter web | ||
| application, ships with WebAssembly enabled by default. Today, over 97% of | ||
| weekly active developers running modern DevTools sessions execute on | ||
| WebAssembly, achieving smooth UI inspection with rock-solid stability and zero | ||
| variance in exception rates compared to legacy `dart2js` builds. | ||
|
|
||
| This capability is ready for production workloads today. Automated analysis | ||
| across hundreds of thousands of Flutter web builds demonstrates that **over 58% | ||
| of existing applications compile without error to WebAssembly today with zero | ||
| code changes**. | ||
|
|
||
| When you target WebAssembly, your application unlocks substantial performance | ||
| potential: | ||
|
|
||
| > [!WARNING] | ||
| > **🚧 EDITORIAL HOLD / NEEDS REAL-WORLD VALIDATION 🚧** | ||
| > *The performance multipliers below derive from internal micro-benchmarks and | ||
| > synthetic test suites (Golem and LUCI). Because micro-benchmarks often | ||
| > exaggerate real-world performance differences, validate these figures against | ||
| > enterprise production applications and carefully frame them with "up to" | ||
| > caveats before public release:* | ||
| > | ||
| > * ⚡ **Up to 5x faster application boot times**: Measured on targeted | ||
| > start-up micro-benchmarks, drastically compressing Time-to-Interactive | ||
| > (TTI) and initial load execution. | ||
| > * ⚡ **Up to 2x faster runtime execution speed**: Powered by optimized | ||
| > `dart2wasm` compilation and native WasmGC execution in computational | ||
| > micro-benchmarks. | ||
| > * ⚡ **Up to 3–4x faster UI rendering**: WebAssembly-native engine | ||
| > execution eliminates serialization overhead, demonstrating up to a 4x | ||
| > reduction in frame build times in rendering suites and supporting | ||
| > consistent 60–120 FPS performance. | ||
| > * 📦 **Minimal bundle size delta**: These execution gains arrive with an | ||
| > average compressed bundle size increase of ~1.5% across benchmark | ||
| > workloads. | ||
| > | ||
| > **🚧 END EDITORIAL HOLD 🚧** | ||
|
|
||
| <!-- TODO(graphics): Insert side-by-side performance chart, GIF, or bouncing.web.app framerate comparison visual using validated production metrics --> | ||
| <DashImage figure src="images/perf_comparison_placeholder.webp" alt="WebAssembly versus JavaScript framerate and startup performance comparison" caption="WasmGC benchmarks demonstrate substantial gains in startup speed, runtime throughput, and UI rendering framerates over legacy dart2js." /> | ||
|
|
||
| --- | ||
|
|
||
| ## Why JavaScript remains the default compilation target | ||
|
|
||
| If WebAssembly delivers superior speed and stability, why does `flutter build | ||
| web` still default to JavaScript (`dart2js`) compilation? | ||
|
|
||
| Switching default toolchain behavior across an ecosystem of millions of | ||
| developers and tens of thousands of packages requires methodical structural | ||
| evolution. While over half of existing apps compile immediately, many community | ||
| packages historically relied on older JavaScript interop patterns or | ||
| browser-specific bindings that require targeted modernization to operate | ||
| without error across strict WebAssembly memory boundaries. | ||
|
|
||
| This requirement creates a classic dependency loop: | ||
| * The default compiler target cannot shift to `--wasm` until developers test | ||
| and migrate a critical volume of community packages and plugins. | ||
| * At the same time, package authors rarely prioritize migration until | ||
| application developers actively opt out of default compiler settings and | ||
| demand WasmGC compatibility. | ||
|
|
||
| --- | ||
|
|
||
| ## Explore your WebAssembly migration and documentation toolbox | ||
|
|
||
| To make your transition to WebAssembly as straightforward as possible, our team | ||
| has refreshed our core web documentation suites. Before testing your builds, | ||
| explore these primary migration guides: | ||
|
|
||
| * **[WebAssembly on Flutter Web](https://docs.flutter.dev/platform-integration/web/wasm)**: | ||
| The comprehensive architectural manual for WasmGC in Flutter. Learn how to | ||
| configure recommended cross-origin server headers | ||
| (`Cross-Origin-Embedder-Policy: credentialless` and | ||
| `Cross-Origin-Opener-Policy: same-origin`) to unlock multi-threaded | ||
| rendering, handle production debugging, and detect compiler targets at | ||
| runtime. | ||
| * **[Migrating to `package:web` and modern JS interop](https://dart.dev/interop/js-interop)**: | ||
| Moving away from legacy `dart:html` and `dart:js` is the single most | ||
| critical step for WebAssembly compatibility. This interop guide explains | ||
| how to transition your bindings to modern, statically-typed | ||
| **`package:web`** and **`dart:js_interop`**. | ||
| * **[Web building and deployment guide](https://docs.flutter.dev/deployment/web)**: | ||
| Step-by-step instructions for optimizing production release builds, | ||
| generating source maps, setting up framework-aware Firebase CLI hosting, and | ||
| implementing CDN caching strategies. | ||
| * **[Flutter web technical FAQ](https://docs.flutter.dev/platform-integration/web/faq)**: | ||
| Answers to frequent architectural questions covering multi-threaded | ||
| WebAssembly execution on Web Workers, Service Worker independence, and | ||
| conditional import patterns (`dart.library.js_interop`). | ||
|
|
||
| --- | ||
|
|
||
| ## Participate in Try Flutter Web with WebAssembly Week and report your results | ||
|
|
||
| Whether you maintain an open-source package on `pub.dev`, manage a production | ||
| web app, or build experimental projects, test your code under WebAssembly this | ||
| week. | ||
|
|
||
| ### Follow these steps to evaluate your application | ||
| 1. **Upgrade to the latest stable release:** Run `flutter upgrade` to verify | ||
| that you are running **Flutter 3.47** (the stable release launched on August | ||
| 12, 2026). This release incorporates recent WasmGC compiler optimizations, | ||
| lockfile enhancements, and runtime fixes. | ||
| 2. **Build with WebAssembly:** Compile your web application using the direct | ||
| command flag: | ||
| ```bash | ||
| flutter build web --wasm | ||
| ``` | ||
| 3. **Report blockers or failures:** When your build encounters a transitive | ||
| dependency problem, lockfile incompatibility, or runtime exception, report | ||
| the finding directly to our team. Submit a report using this intake link to | ||
| help unblock package migration during our sprint: | ||
| 👉 **[https://goo.gle/flutter-wasm-feedback](https://goo.gle/flutter-wasm-feedback)** | ||
| 4. **Share your successful builds:** When your application compiles without error | ||
| and achieves superior framerates, share your progress with the Flutter | ||
| community. Submit your before-and-after performance metrics, frame rate | ||
| comparisons, and migration stories using the official intake form: | ||
| 👉 **[https://goo.gle/flutter-web-wasm-win](https://goo.gle/flutter-web-wasm-win)** | ||
|
|
||
| To share your experience on social media, use the hashtag **`#FlutterWasmWeek`**. | ||
|
|
||
| --- | ||
|
|
||
| ## Accelerate the path to default WebAssembly compilation | ||
|
|
||
| By identifying and resolving package dependency bottlenecks together as a | ||
| community this week, you are helping us validate the steps we need to take to | ||
| make **WebAssembly on by default** in an upcoming Flutter stable release. | ||
|
|
||
| Upgrade Flutter, run the `flutter build web --wasm` command today, and share | ||
| your migration feedback with us. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.