Flutter 3.47 вышел сегодня, 12 августа — и заодно набралась целая пачка новостей вокруг экосистемы, которые давно просились в один обзор: WWDC и OS 27, официальный развод Material с Cupertino, первый alpha GenUI SDK и MCP-серверы, прописавшиеся в тулинге. Если вы пропустили лето — вот что изменилось и что с этим делать.
- Май 2026Flutter 3.44 и Dart 3.12
Google I/O: приватные именованные параметры, экспериментальные primary constructors, Genkit для Dart.
- Июнь 2026WWDC 2026 и анонс OS 27
iOS 27, macOS 27 и остальные платформы Apple переходят на единый UIScene lifecycle.
- 12 августа 2026Flutter 3.47
Impeller по умолчанию везде, material_ui и cupertino_ui в версии 1.0, iOS-минимум поднят до 15.
- Ноябрь 2026Дедлайн миграции дизайн-систем
Формальный deprecation Material и Cupertino внутри ядра SDK — запланированный stable-релиз.
Flutter 3.47 и Dart 3.12: что нового
Главный акцент релиза — рендеринг и отказ от поддержки устаревших версий. Impeller стал рендерером по умолчанию на macOS, Windows и Linux (на iOS и Android это случилось раньше) — компиляция шейдеров теперь происходит на этапе сборки, а не в рантайме, так что фирменные фризы при первой прорисовке новых эффектов должны стать историей. На macOS заодно включили Wide Gamut Color по умолчанию, а на десктопе — более резкий текст через SDF-рендеринг.
Из практического: минимальная поддерживаемая версия iOS поднялась с 13 до 15, а macOS — с 10.15 до 12. Если ваше приложение таргетирует древние устройства ради пары процентов трафика — самое время свериться с аналитикой. На вебе экспериментально доехала ленивая загрузка Wasm-модулей, но она требует миграции с dart:html на package:web, если вы всё ещё сидите на старом API. Ещё одна тихая, но приятная новость — Widget Previews дошли до stable: превью виджета теперь кэшируются локально в .widget_preview/, и первый рендер в IDE стал заметно быстрее.
Dart, который едет в комплекте, — это всё ещё Dart 3.12, показанный на Google I/O в мае вместе с Flutter 3.44 и остающийся текущим стабильным языком на момент 3.47. Из языковых изменений полезнее всего приватные именованные параметры в конструкторах (Hummingbird({required this._petName})) — меньше ручного дублирования в списках инициализации. Primary constructors всё ещё экспериментальны и требуют флага primary-constructors.
Material и Cupertino официально разделяются
Дизайн-системы уходят из ядра SDK в собственные пакеты — с 3.47 material_ui и cupertino_ui дошли до версии 1.0. Даже нейтральные с виду виджеты вроде AppBar были жёстко привязаны к Material под капотом, и любое приложение тащило код обеих дизайн-систем независимо от того, использовало оно их или нет.
Что это даёт на практике:
- Меньше вес приложения — tree-shaking честно выкидывает неиспользуемую дизайн-систему, а не просто прячет её за флагом.
- Независимый релизный цикл —
material_uiиcupertino_uiтеперь можно обновлять еженедельно, не дожидаясь квартального релиза Flutter SDK.
Миграция автоматизирована:
dart fix --apply --code=migrate_design_widgets
Команда сама переписывает импорты с package:flutter/material.dart и package:flutter/cupertino.dart на новые пакеты. Старые импорты пока работают, но команда Flutter уже объявила ноябрьский stable-релиз дедлайном их формального deprecation — лучше прогнать dart fix сейчас, пока это тихое обновление, а не аврал в ноябре.
OS 27: на что смотреть перед сборкой под iOS и macOS
На WWDC 2026 в июне Apple выкатила OS 27 сразу по всей линейке — iOS, iPadOS, macOS, watchOS, tvOS, visionOS — продолжая прошлогодний переход на единую нумерацию по году. Для Flutter-разработчиков в этом наборе есть один жёсткий пункт и несколько мягких.
Жёсткий пункт — UIScene lifecycle обязателен для любого приложения, собранного с iOS 27 SDK. Хорошая новость: Flutter добавил поддержку UIScene ещё в 3.38, и с 3.41 она включена автоматически для проектов со стандартным AppDelegate. Риск остаётся в кастомных AppDelegate и старых плагинах — их стоит перепроверить до пересборки под новый SDK, а не после первого падения в проде.
Мягкие пункты — то, чего у Flutter пока просто нет из коробки:
- App Intents и новый Siri — официальной интеграции во Flutter нет и чёткого плана её появления тоже. Нужны либо нативный Swift-код, либо пакеты сообщества.
- On-device Foundation Models (API
LanguageModel) — доступны только через platform channels или FFI, официальных Dart-биндингов не появилось. - Xcode 27 запускается только на Apple Silicon — если в CI ещё жив Intel-раннер, повод его наконец списать.
- Firebase прекращает поддержку CocoaPods в октябре — самое время перейти на Swift Package Manager, тем более что Flutter 3.47 сам к этому подталкивает: 92 из топ-100 iOS-плагинов уже мигрировали.
GenUI SDK: интерфейс, который собирает сам агент
GenUI SDK — не готовый виджет, а слой оркестрации между пользователем, вашими Flutter-виджетами и LLM-агентом. Агент отвечает не текстом, а JSON-схемой, которая описывает интерфейс из каталога виджетов вашего же приложения; пользователь взаимодействует с этим UI, а изменения состояния уходят обратно агенту — получается диалог не текстом, а интерактивными карточками, слайдерами и списками.
Практический пример из документации: вместо текстового ответа «вот несколько курток по вашему бюджету» агент собирает кликабельную карусель товаров — теми же виджетами, что и остальное приложение, с вашим брендингом. SDK работает с Gemini и в принципе с любой моделью, которая умеет отдавать структурированный JSON.
Пакет genui в статусе alpha, и в документации прямо написано, что API может измениться. Разумная стратегия — попробовать на внутреннем демо или в side-проекте, не тащить в прод в текущем виде.
Ephemeral code: доставка кода мимо App Store — пока это эксперимент
В roadmap Flutter и Dart на 2026 год фигурирует идея ephemeral code delivery: загружать отдельные куски UI или логики в рантайме без полного релиза через сторы. Технически команда рассматривает добавление интерпретируемого байткода в Dart runtime — это и есть шаг, который должен сделать возможной «доставку налету» для UI, собранного тем же GenUI SDK по запросу пользователя.
Стоит напомнить: и App Store, и Google Play десятилетиями ограничивают приложения в праве исполнять скачанный код, который меняет поведение приложения в обход ревью. Это не только техническая задача — это ещё и вопрос к политике сторов, ответа на который пока нет ни у кого, включая, судя по всему, саму команду Flutter: статус в roadmap — «investigating», без сроков и обязательств.
MCP-серверы — теперь официальная часть тулинга Dart и Flutter
Команда Dart выпустила официальный MCP-сервер — он даёт AI-ассистентам (Claude Code, Copilot, Cursor, Gemini CLI и другим MCP-совместимым клиентам) прямой доступ к тулингу, которым раньше пользовалась только IDE:
- анализ и автоматическое исправление ошибок в проекте;
- интроспекция запущенного приложения — выбранный виджет, рантайм-ошибки, hot reload;
- поиск пакетов на pub.dev и правка зависимостей в
pubspec.yaml; - запуск тестов и разбор результатов.
Нужен Dart SDK 3.9+ или Flutter 3.35 beta+, и по умолчанию сервер выключен — включается явно в конфиге клиента. В VS Code с GitHub Copilot это один флаг:
{ "dart.mcpServer": true }
В Cursor — файл .cursor/mcp.json, в Gemini CLI — правка .gemini/settings.json. Для команд, которые уже гоняют ИИ-ассистента по кодовой базе, это буквально бесплатное ускорение: агент перестаёт гадать по одним текстовым файлам и видит реальные ошибки анализатора и состояние запущенного приложения.
Что со всем этим делать
Если коротко — ничего не горит, но три вещи стоит сделать в ближайшие недели, а не откладывать до ноября:
- Прогнать
dart fix --apply --code=migrate_design_widgetsи проверить вёрстку — миграция автоматическая, но лучше увидеть результат заранее. - Проверить кастомные
AppDelegateи старые iOS-плагины на поддержку UIScene, пока не пересобирали под iOS 27 SDK. - Включить MCP-сервер в редакторе, если у команды уже есть ИИ-ассистент для Dart и Flutter — настройка на пять минут.
GenUI SDK и ephemeral code пока наблюдайте: alpha и research-stage — это ещё не то, на чём стоит строить пользовательский функционал.
Что еще почитать на тему Flutter и Dart
По мобильной разработке у нас есть также разбор подходов к управлению состоянием во Flutter: setState, Bloc, Riverpod и Signals на одинаковых задачах — с примерами кода и разбором, что для чего подходит.
Коротко
Когда вышел Flutter 3.47?
12 августа 2026 года. Главное — Impeller по умолчанию на macOS, Windows и Linux, поднятые минимумы iOS (15) и macOS (12), и версия 1.0 у material_ui и cupertino_ui.
Нужно ли прямо сейчас переходить на material_ui и cupertino_ui?
Не срочно, но тянуть не стоит: дедлайн формального deprecation старых импортов — ноябрьский stable-релиз. Миграция — одна команда, dart fix --apply --code=migrate_design_widgets.
Сломается ли Flutter-приложение на iOS 27?
Само приложение — маловероятно, UIScene lifecycle поддерживается автоматически с Flutter 3.38/3.41. Риск — в кастомных AppDelegate и старых плагинах.
Что такое GenUI SDK и стоит ли использовать его в проде?
Alpha-пакет, который собирает интерфейс на лету по JSON-схеме из каталога виджетов приложения и ответа LLM. Хорош для прототипов, для прода API пока слишком нестабилен.
Как включить MCP-сервер для Dart и Flutter в своём редакторе?
По умолчанию выключен. Нужен Dart SDK 3.9+/Flutter 3.35 beta+ и явная настройка — например, "dart.mcpServer": true в VS Code с Copilot или .cursor/mcp.json в Cursor.
Если нужно прогнать Flutter-приложение через все эти изменения разом — миграцию дизайн-систем, аудит под iOS 27, настройку MCP для команды — пишите нам через форму на сайте.