Главное в мобильной разработке в сентябре 2026 года — осенние релизы Apple. iOS 27, Xcode 27 и Swift 6.4 вышли на одной неделе и привнесли требования, из-за которых старые проекты ломаются при пересборке. У Android вышел стабильный Navigation3 1.2, Compose начал уходить от текстовых полей на value, а Kotlin показал первую бету 2.5.
🟣iOS 27 и Xcode 27: scene-based жизненный цикл обязателен
С 9 сентября App Store принимает сборки на Xcode 27, а 14 сентября вышли сами iOS 27 и Xcode 27. Приложение, собранное с новым SDK, не запустится без scene-based жизненного цикла, а без launch screen в Info.plist его отклонит ревью. Из Xcode убрали линкер ld64 вместе с флагом -ld_classic, PreviewProvider помечен устаревшим. С апреля 2027 года App Store будет принимать только сборки на SDK iOS 27 и новее.
🟣SwiftUI: новый @State работает и на iOS 17
@State стал макросом и больше не вызывает инициализатор модели при каждом пересоздании вью. Согласно release notes, новое поведение работает на всех системах начиная с iOS 17, если проект собран в Xcode 27. Код, где значение задано в объявлении и ещё раз присваивается в init, частично перестал компилироваться.
🟣Swift 6.4: await в defer
Релиз от 15 сентября разрешил await внутри defer и добавил withTaskCancellationShield для очистки, которую не должна прерывать отмена задачи. Swift Build стал сборщиком по умолчанию в SwiftPM, а проверки двух тестовых фреймворков стали взаимозаменяемы: XCTAssert работает в Swift Testing, #expect — в XCTest.
🟣Kotlin 2.4.20 и 2.5.0-Beta1
В 2.4.20 от 7 сентября Swift export превращает sealed-иерархии в Swift enum, так что switch по ним обходится без default. Swift-классы теперь могут наследовать открытые классы Kotlin. Бета 2.5 от 23 сентября сделала стабильной деструктуризацию по именам и добавила экспериментальные блоки companion {}.
🟣Navigation3 1.2.0
В стабильной версии от 23 сентября появились передача результатов между экранами через ResultEventBus, мультиплатформенные диплинки с UriDeepLinkMatcher и NavigationBackHandler для predictive back.
🟣Compose: TextFieldState вместо value
В 1.13.0-alpha03 от 9 сентября перегрузки BasicTextField и TextField из Material 2 с параметрами value и onValueChange помечены устаревшими в пользу TextFieldState. Вместо maxLength появились maxLengthTrim и maxLengthReject, а API Grid и FlexBox вышли из экспериментальных.
🟣Сборка: AGP 9.4
AGP 9.4 требует Gradle 9.6 и JDK 17. В AGP 10 новый Variant API станет обязательным, а модули, которые к нему ещё не готовы, пока можно исключить через android.newDsl.optOut.
🟣Безопасность Android
Сентябрьский бюллетень закрывает критическую CVE-2026-28604: удалённое выполнение кода в ADB без участия пользователя. Все уязвимости из бюллетеня закрывает уровень патча 2026-09-05.
#mobilevkhub #дайджест
🟣iOS 27 и Xcode 27: scene-based жизненный цикл обязателен
С 9 сентября App Store принимает сборки на Xcode 27, а 14 сентября вышли сами iOS 27 и Xcode 27. Приложение, собранное с новым SDK, не запустится без scene-based жизненного цикла, а без launch screen в Info.plist его отклонит ревью. Из Xcode убрали линкер ld64 вместе с флагом -ld_classic, PreviewProvider помечен устаревшим. С апреля 2027 года App Store будет принимать только сборки на SDK iOS 27 и новее.
🟣SwiftUI: новый @State работает и на iOS 17
@State стал макросом и больше не вызывает инициализатор модели при каждом пересоздании вью. Согласно release notes, новое поведение работает на всех системах начиная с iOS 17, если проект собран в Xcode 27. Код, где значение задано в объявлении и ещё раз присваивается в init, частично перестал компилироваться.
🟣Swift 6.4: await в defer
Релиз от 15 сентября разрешил await внутри defer и добавил withTaskCancellationShield для очистки, которую не должна прерывать отмена задачи. Swift Build стал сборщиком по умолчанию в SwiftPM, а проверки двух тестовых фреймворков стали взаимозаменяемы: XCTAssert работает в Swift Testing, #expect — в XCTest.
🟣Kotlin 2.4.20 и 2.5.0-Beta1
В 2.4.20 от 7 сентября Swift export превращает sealed-иерархии в Swift enum, так что switch по ним обходится без default. Swift-классы теперь могут наследовать открытые классы Kotlin. Бета 2.5 от 23 сентября сделала стабильной деструктуризацию по именам и добавила экспериментальные блоки companion {}.
🟣Navigation3 1.2.0
В стабильной версии от 23 сентября появились передача результатов между экранами через ResultEventBus, мультиплатформенные диплинки с UriDeepLinkMatcher и NavigationBackHandler для predictive back.
🟣Compose: TextFieldState вместо value
В 1.13.0-alpha03 от 9 сентября перегрузки BasicTextField и TextField из Material 2 с параметрами value и onValueChange помечены устаревшими в пользу TextFieldState. Вместо maxLength появились maxLengthTrim и maxLengthReject, а API Grid и FlexBox вышли из экспериментальных.
🟣Сборка: AGP 9.4
AGP 9.4 требует Gradle 9.6 и JDK 17. В AGP 10 новый Variant API станет обязательным, а модули, которые к нему ещё не готовы, пока можно исключить через android.newDsl.optOut.
🟣Безопасность Android
Сентябрьский бюллетень закрывает критическую CVE-2026-28604: удалённое выполнение кода в ADB без участия пользователя. Все уязвимости из бюллетеня закрывает уровень патча 2026-09-05.
#mobilevkhub #дайджест