← На главную

Устал защищать SwiftUI: автор остаётся на легаси-фреймворках

02.08.2026 18:59 · hackernews

SwiftUI анонсировали в 2019 году с помпой: Apple обещала покончить с борьбой с Auto Layout и переписать приложение из-за любой мелочи. Вместо этого — декларативный синтаксис, единый источник правды, анимации, превью и кросс-платформенность. Через семь лет всё это оказалось иллюзией. Инженеры, включая автора, устали защищать фреймворк, который так и остался в вечной бете.

Главные проблемы — предсказуемость и производительность. Data flow в SwiftUI — это чёрный ящик. Вместо нормальной реактивности он реагирует на то, что должен игнорировать, и пропускает важные изменения. Компенсировать это пришлось макросами @Observable, но проблемы остались. Layout тоже непредсказуем: стандартный проект из официального туториала Apple падает на актуальном macOS. В реальных приложениях вроде UTM это выглядит как сырой прототип.

В итоге разработчики оборачивают всё в GeometryReader — и теряют все преимущества декларативности, считая координаты вручную, как в старом Auto Layout, но с большей порнографией кода. API нестабильны: чтобы закрыть клавиатуру скроллом, нужен iOS 16, кастомизация тулбара появилась через годы, а AsyncImage вообще нельзя использовать для кэширования — API до сих пор в бете. Вместо исправления багов Apple переименовывает компоненты: NavigationView заменили на NavigationStack, и теперь нужно поддерживать две ветки кода. Вся эта работа — по сути, бесплатное QA для Apple.

Производительность тоже не выдерживает критики. В тесте автора UIKit заметно плавнее скроллит ленту изображений, чем SwiftUI, даже с оптимизациями. На старшем iPhone приходится искать обходные пути, чтобы показать обычные JPEG. При этом Apple хвастается SwiftUI на новейшем железе — но на прошлом поколении всё рассыпается.

Кросс-платформенность — очередной миф. На iOS и macOS одни и те же концепции работают по-разному, компоненты ведут себя несогласованно. «Выучи один раз — применяй везде» превращается в «выучи дважды, применяй где-то, отлаживай везде». Итог — интерфейсы, которые выглядят чужеродно, как перенесённые через Catalyst iPad-приложения.

Самое тревожное — не технические баги, а философский сдвиг в Apple. Вместо бескомпромиссной инженерии времён Cocoa и Aqua — культура «и так сойдёт». В системных приложениях полно брака: Apple Music играет не ту песню после редактирования очереди, TestFlight обрезает выделение, в Настройках кривые скриншоты, на Home Screen дублируются иконки. Logic Pro выходит без локализации. Автор считает, что это осознанный выбор, а не необходимость, и отказывается принимать стандарт «достаточно хорошо». SwiftUI не ужасен — он посредственен, и это хуже. Поэтому он остаётся с «легаси»-фреймворками.

Читать оригинал →