Что мы на нём делаем

Есть iOS-поверхности, в которых движок Flutter просто не работает, и SwiftUI — то, на чём мы их делаем. Виджеты на домашнем и заблокированном экране, Live Activities, App Clips, share- и notification-расширения, приложения для часов: каждое — отдельный таргет со своим процессом и своим интерфейсом, и каждое приходится писать нативно.

Декларативный и построенный вокруг состояния, SwiftUI концептуально близок к Flutter, и на практике это важно: инженер, переходящий между ними, мыслит теми же категориями, а не переучивается на императивные вью-контроллеры UIKit.

Где он нужен

Вокруг Flutter-приложения, а не вместо него: пишется на Swift и обменивается данными с основным приложением через app group. Работа с App Clip, о которой мы писали, устроена ровно так — небольшой нативный опыт, запускающийся без установки и передающий эстафету полному приложению.

Когда мы его рекомендуем

Для этих расширений-таргетов, где альтернативы нет, и для полностью нативных iOS-приложений, когда продукт существует только у Apple.

Не для основного интерфейса кроссплатформенного продукта. Строить главный интерфейс дважды — SwiftUI на iOS и что-то ещё на Android — это ровно та цена, ради устранения которой существует Flutter: каждый экран пришлось бы проектировать, делать и чинить два раза.

Стоит знать и другое: в SwiftUI до сих пор есть пробелы, отправляющие вас обратно в UIKit за отдельными контролами, а поведение заметно меняется между версиями iOS. Он достаточно зрелый, чтобы на нём строить, но не настолько, чтобы не проверять.