Flutter Web официально переходит на WebAssembly. Команда Dart провела «Неделю тестирования» (17–21 августа), чтобы помочь разработчикам мигрировать проекты и собрать обратную связь. Это не просто эксперимент: Wasm уже стабилизирован с версии Flutter 3.22 и становится новым стандартом для высоконагруженных веб-приложений.
Почему это важно? Потому что JavaScript часто упирается в потолок производительности при сложной анимации. WebAssembly решает эту проблему, обеспечивая нативную скорость выполнения кода прямо в браузере.
📊 Реальные цифры впечатляют. На MacBook Pro M4 Pro тесты показали:
✅ Время отрисовки кадров сократилось с 34.5 мс до 17.4 мс.
✅ Частота кадров стабильно держится на 60 FPS (в JS было проседание до 30 FPS).
✅ Сборка виджетов стала быстрее в 2.5 раза (с 29.3 мс до 11.4 мс).
✅ Дрожание кадров (jitter) уменьшилось более чем в 3 раза.
💡 Архитектурный прорыв. Ключевую роль играет skwasm — технология, которая переносит растеризацию графики на отдельный Web Worker. Основной поток браузера освобождается для обработки пользовательских событий, что делает интерфейс отзывчивым даже под высокой нагрузкой.
🔧 Инженерные детали. Компилятор dart2wasm работает в связке с WasmGC (системой сборки мусора WebAssembly). Это позволяет эффективно управлять памятью и ускорять сложную логику UI. Для проверки этих метрик на своем железе доступна интерактивная демонстрация, где можно сравнить Wasm и JS в реальном времени.
⚠️ Но есть подвох. Пока dart2js (JavaScript) остается компилятором по умолчанию. Причина проста: экосистема пакетов на pub.dev еще не готова. Многие библиотеки используют устаревшие dart:html и dart:js, которые несовместимы с Wasm.
🚀 Что делать разработчику?
1. Обновить Flutter до версии 3.47 (содержит оптимизации WasmGC).
2. Заменить старые зависимости на package:web и использовать dart:js_interop.
3. Настроить заголовки сервера: COEP: credentialless и COOP: same-origin.
4. Собрать проект командой
flutter build web --wasm.Анализ показывает, что 58% существующих Flutter-приложений могут быть скомпилированы в Wasm без единой строчки изменений в коде. Если ваш проект попадает в эту категорию — миграция займет минимум времени.
Цель кампании — сделать Wasm компилятором по умолчанию. Для этого сообществу нужно тестировать свои приложения, фиксировать проблемы с зависимостями и делиться метриками. Чем больше проектов перейдет на Wasm, тем быстрее экосистема догонит.
🔗 Полезные ссылки
Документация по WebAssembly на Flutter Web
Руководство по развертыванию веб-сайтов
FAQ по веб-технологиям Flutter
🔗 Полезные ссылки
💻 flutter-wasm-compare
📚 pub.dev
📚 WebAssembly на Flutter Web
📚 Переход к package:web современному взаимодействию с JavaScript
📰 Читать оригинал на Habr
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #flutterpulsehabr