Новый фреймворк для Swift (iOS/macOS) набирает популярность
Экосистема Swift продолжает активно развиваться, и на горизонте появился новый игрок, который стремительно завоевывает внимание iOS/macOS-разработчиков. Речь идет о фреймворке SwiftAct (название условное, для примера — ред.), который обещает упростить создание реактивных и высокопроизводительных приложений под все платформы Apple. По данным последних опросов сообщества, интерес к этому инструменту вырос на 40% за последние три месяца, а количество проектов на GitHub с его использованием удвоилось.
Что такое SwiftAct и почему он нужен?
SwiftAct позиционируется как легковесная альтернатива Combine и частично RxSwift, но с фокусом на асинхронность и чистую архитектуру. В отличие от традиционных подходов, этот фреймворк использует новейшие возможности Swift Concurrency (async/await, акторы) из коробки, не требуя от разработчика написания шаблонного кода для управления потоками.
Ключевые особенности SwiftAct:
- Реактивность без боли: Автоматическая подписка на изменения состояния модели. Разработчику достаточно пометить свойство атрибутом
@Observable, и UI в SwiftUI обновится сам. - Встроенная работа с сетью: Модуль Networking поддерживает async/await, автоматическую сериализацию в Codable и повтор запросов при ошибках.
- Модульность: Фреймворк разбит на независимые модули (Core, UI, Networking, Storage), которые можно подключать выборочно, не раздувая бинарник.
- Поддержка macOS: В отличие от многих iOS-ориентированных решений, SwiftAct полностью совместим с AppKit и Catalyst.
Почему разработчики переходят на него?
Главная причина — снижение порога входа. Если раньше для создания реактивного приложения нужно было изучать Combine (с его сложной системом Publisher/Subscriber) или подключать тяжелый RxSwift, то SwiftAct предлагает интуитивно понятный синтаксис, напоминающий работу с обычными свойствами.
Вот пример, который приводит один из блогеров-энтузиастов:
// Старый подход с Combine
class ViewModel {
@Published var text = ""
var cancellables = Set<AnyCancellable>()
func fetch() {
api.fetchText()
.sink { [weak self] value in
self?.text = value
}
.store(in: &cancellables)
}
}
// Новый подход с SwiftAct
class ViewModel {
@Observable var text = ""
func fetch() async {
text = await api.fetchText() // просто и понятно
}
}
Как видно, код стал лаконичнее, а управление памятью и отписка от потоков происходят автоматически.
Недостатки и риски
Несмотря на энтузиазм, эксперты предупреждают: фреймворк еще молодой. Версия 1.0 вышла всего полгода назад, и сообщество не успело наработать обширную базу знаний. Возможны критические баги при работе с многопоточностью в сложных проектах. Кроме того, для production-проектов с жесткими требованиями к стабильности пока рекомендуют придерживаться Combine или TCA (The Composable Architecture).
Перспективы
Тем не менее, тенденция очевидна: разработчики устали от сложности и хотят писать меньше кода, получая больше функциональности. SwiftAct уже поддержали такие крупные компании, как (условно) "Яндекс.Карты" и "Тинькофф" (в пилотных проектах), что говорит о доверии к технологии