Какие основные сложности и ограничения SwiftUI вы встречали в production?

Ответ

SwiftUI — мощный декларативный фреймворк, но в production существуют определенные сложности:

1. Ограниченная обратная совместимость

  • Требует iOS 13+, что может быть неприемлемо для проектов с поддержкой более старых версий.

2. Недостаточная зрелость и стабильность

  • В ранних версиях (iOS 13-14) были многочисленные баги в базовых компонентах (List, NavigationView).
  • Поведение может меняться между минорными обновлениями OS.

3. Сложность глубокой кастомизации

  • Реализация нестандартного, сложного UI часто требует костылей или интеграции UIKit через UIViewRepresentable/UIViewControllerRepresentable.

4. Проблемы с отладкой и предсказуемостью

  • Сообщения об ошибках иногда малопонятны.
  • Сложно отлаживать проблемы с перерисовкой (re-rendering) и состоянием.

Пример проблемы с NavigationView на iPad:

// Поведение split-view может быть непредсказуемым
NavigationView {
    Text("Primary View")
    Text("Secondary View")
}
.navigationViewStyle(.stack) // Часто необходимо явно указывать стиль

5. Ограниченный контроль над производительностью

  • По сравнению с UIKit сложнее оптимизировать сложные списки или анимации.

Вывод: SwiftUI отлично подходит для новых проектов и стандартных интерфейсов, но для сложных, кастомизированных или legacy-приложений часто требуется гибридный подход (SwiftUI + UIKit).

Ответ 18+ 🔞

А, ну вот, смотри, про SwiftUI. Фреймворк, конечно, мощный, декларативный, всё такое, красиво. Но как доходит до продакшена, до реального проекта, так сразу начинается, блядь, цирк с конями, ёпта.

1. Обратная совместимость — хуй с горы. iOS 13+, и всё тут. А если у тебя проект, которому надо поддерживать старьё, типа iOS 11? Правильно, иди нахуй, не светись тут со своим SwiftUI. Сиди на UIKit, старый пердун.

2. Зрелость и стабильность? Да ну нахуй. В первых версиях, на iOS 13-14, это была просто пиздопроебибна. Базовые компоненты, типа List или NavigationView, глючили так, что волосы дыбом вставали. И хуже всего — обновишь минорную версию ОС, а поведение поменялось! Ты вчера работало, а сегодня — чих-пых тебя в сраку, всё сломалось. Овердохуища нервотрёпки.

3. Хочешь что-то нестандартное, сложное? Ну, удачи тебе, чувак. SwiftUI для красивых, стандартных интерфейсов — огонь. Но как только тебе нужна хитрая жопа с ушами, так сразу приходится городить костыли на костылях. А чаще всего — просто лезть обратно в UIKit через эти UIViewRepresentable. Получается гибридный уродец, блядь.

4. Отладка и предсказуемость — удивление пиздец. Сообщения об ошибках? Иногда такое пишет, что сидишь и думаешь: «Э, бошка, думай, что это за хуйня?». А отладить, почему вид вдруг перерисовался вхолостую двадцать раз… Это просто, блядь, волнение ебать. Терпения ноль ебать.

Вот, смотри, классика жанра, NavigationView на iPad:

NavigationView {
    Text("Primary View")
    Text("Secondary View")
}
.navigationViewStyle(.stack) // Без этой строчки — лотерея, блядь. Поведение split-view может быть таким пиздецом непредсказуемым.

5. Производительность? Контроль — как у мартышлюшки. В UIKit ты мог всё оптимизировать, выжать каждую кадру. В SwiftUI со сложными списками или анимациями — как повезёт. Иногда летает, а иногда — накрылся медным тазом, и хуй поймёшь почему.

Короче, вывод такой: SwiftUI — охуенно для новых проектов, где можно с iOS 13+ стартануть и делать стандартные интерфейсы. Красиво, быстро пишется. Но если проект сложный, кастомизированный, или, не дай бог, legacy — готовься к гибридному аду. SwiftUI + UIKit, и молиться, чтобы они друг друга не съели. Вот такая, блядь, песня.