В новом дайджесте обсуждаем прошедшую I/O, проводим карантин UI-тестов и смотрим как Notion ускорил запуск на Android в 2 раза, отмечаем новые Flutter и Dart, боремся с догмами программирования и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

iOS
• Карантин UI-тестов в iOS
• Просим ИИ сделать рефакторинг Swift кода
• SwiftUI: наконец-то пора? Опыт разработки на SwiftUI в контексте UIKit приложения
• Что нам показывают карты
• Почему получение пакетов в Swift Package Manager занимает слишком много времени
• Как зарегистрировать Apple Developer в App Store для физических лиц. Гайд 2024 года •
• Добавляем объём в visionOS-приложение
• SwiftUI уроки (часть 12)
• TextField с автодополнением
• SwiftUI-навигация: просто, нативно и декларативно
• Удивительный мир внутри .ipa
• Core Motion framework в финансовых приложениях
• Как Apple боролась с мошенничеством в App Store в 2023
• Вышла iOS 17.5 с поддержкой веб-распространения приложений
•
Apple started cheating me out of App Store bundle purchases
•
Use and Then Reduce Open Source Dependencies
•
A Deep Dive into Dynamic Widget — Swiggy’s Server Driven UI System
•
How to reduce iOS App Size
•
How to hide API keys in Xcode code Swift UI — The most efficient way
•
Swift Concurrency: Safeguarding Data with @Sendable and Actors
•
Animations: Bringing the Host Passport to Life on iOS
•
Migrating from CocoaPods to Tuist at Playtomic
•
Preventing Retain Cycles in Automated Tests Using addTearDown
•
Pointfree’s SyncUps App: A Great Example Architecture for a SwiftUI App
•
The Dark Side of Unidirectional Architectures in Swift
•
How to profile your app’s performance and Main Thread usage with Instruments and os_signposts
•
Boost Performance by Over 100x Using the Accelerate Framework
•
React to network status updates in SwiftUI using AsyncSequence
•
Building a Swift package using the Swift 6 language mode
•
Using materials with SwiftUI
•
Refactoring to TipKit from AppStorage and Custom Views in SwiftUI
•
Unlock the power of grammatical agreement
•
Animate symbols in your app
•
Inspectors in SwiftUI: Discover the details
•
Demystify SwiftUI performance
•
SwiftUI Stacked ScrollView
•
Syncing ScrollView’s + Swipe To Dismiss
•
SwiftSecurity — современный фреймворк для Keychain API
•
Atoms — атомарное управление состоянием и инъекция зависимостей для SwiftUI
Android
• Второй пошел: Google опубликовала новую бета-версию Android 15
• Как я доказывал Google, что мне нужны данные юзеров, но я не скамер
• Notion на Android теперь запускается в два раза быстрее
• Как мы реализовали кнопку со свайпом на Jetpack Compose
• Как мы отслеживаем просадки FPS в Альфа-Мобайл?
• Как написать свой клиент для YouTube, не привлекая внимания санитаров
• Опыт публикации Андроид приложения в Google Play независимым разработчиком в 2024 году
• Копаемся в встроенном приложении камеры старого Xiaomi. Часть 2
• Открываем AndroidFragment: перенос навигации из Фрагментов в Compose
• Путешествие к центру Композиции
• Scout: новый фреймворк для ускоренного и безболезненного управления зависимостями
• Компиляторные плагины: модификация и анализ Сompose
• Как я code coverage внедрял да Gradle plugin для baseline писал
• Больше приложений в Android для автомобилей
• Project Gameface вышел на Android
• Более частые обновления для Android Studio
•
Cutting some Slack, for leaks and giggles
•
Preparing for K2
•
Leveraging Lazy Modules and Background Loading in Kotlin with Koin
•
An Updated Primer on Android Navigation
•
Conscious Compose optimization 2: Tackling composition
•
Exploring Advanced MVI Pattern in Android App Development
•
The Art of Logging in Android Apps
•
“if vs let” in Kotlin
•
Android: Use Cases hell in MVVM architecture
•
Kotlin Design Patterns: Flyweight
•
Understanding IPC in Android
•
Let Kotlin do the code for you — Part III: Mockito, Mockk, and Code Generation
•
Compose Navigation 2.8.0
•
Android Support for Kotlin Multiplatform
•
Google I/O 2024 — Android Keynotes
•
Injecting Composables with Dagger without losing it
•
Mastering Compose: Custom Layout and Scoped Modifiers
•
Compose Preview Screenshot Testing
•
What’s New in Jetpack Compose at Google I/O 2024
•
What’s new in Android
•
What’s new in Google Play
•
Все видео Google I/O 2024
•
Мобайл на Google I/O 2024
•
Все воркшопы Google I/O 2024
•
Дизайн на Google I/O 2024
•
Type-Safe Navigation with the OFFICIAL Compose Navigation Library
•
How to Implement a Shared Element Transition In Jetpack Compose
•
Mastering Kotlin in 7 Steps
•
Looking Forward to Kotlin 2.0
•
TetherFi — шаринг интернета
•
Navigation Compose Type — type-safe аргументы для Jetpack Navigation Compose
Кроссплатформа
• DivKit теперь и для Flutter. Рассказываем об особенностях BDUI-фреймворка Яндекса
• Почему я верю в востребованность кроссплатформы и Flutter в частности?
• Ключи во Flutter
• Вышел Dart 3.4
• Flutter 3.22: что нового
• Навигация в приложениях Flutter: разбираем Navigator, Router и лучшие библиотеки
• Flutter 3.22 — Что нового во Flutter?
• Анонс Dart 3.4
• Flutter и натив. Пример с Яндекс OAuth
• Полнодуплексное соединение во Flutter
•
How to publish a Kotlin Multiplatform iOS app on App Store with GitHub Actions
•
Flutter: Choosing Mobile UI Tests Automation Tool
•
I built the same app with Flutter, React Native, and Ionic
•
Say Goodbye to Future.wait([]) in Dart
•
How to use Coil in Compose Multiplatform
•
Get Dynamic Widget Size in Flutter
•
How to Share ViewModels in Compose Multiplatform (with Dependency Injection!)
Разработка
• Фокус на безопасность мобильных приложений
• Мантры программирования — это не догмы, а выражения
• Большой обзор обновлений iOS и Android
• Особенности построения интерфейса для разных платформ
• Грабим Дома на Собеседовании в Google •
• Avito QA meetup
• JetBrains выпускает Aqua — IDE для автоматизации тестирования
• Google открывает доступ к Home API
• Самая мощная ИИ-модель для создания изображений и чат-боты для работы, учёбы и поиска. Что представил Google на I/O 2024
• Итоги I/O 2024
• Developer Keynote Google I/O 2024: официальная поддержка KMP, развитие Gemini и AI в Андроиде
• Как изменились зарплаты айтишников за 2023 год
• Как я слил 3 млн руб и 2 года на мобильное приложение
•
You probably don’t need microservices
•
Stand Out and Dare to Disagree
•
Quantum Computing Course – Math and Theory for Beginners
Аналитика, маркетинг и монетизация
• Топ быстрорастущих приложений в России в мае
• Маркетологи в мобайле: Ярослава Адаменко (М.Видео и Эльдорадо)
• Тенденции рынка игровых приложений от Adjust и AppLovin
• В App Store растет Airbuds, виджет с музыкой друзей
• Microsoft запустит мобильный магазин игр июле
AI, Устройства, IoT
• GPT-4o: больше мощи, но меньше цены. Почему так и что на самом деле умеет модель?
• Открыт конкурс Gemini API с призовым фондом в $3 млн
• Google запускает Firebase Genkit — открытый фреймворк для создания приложений на базе ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.


• Карантин UI-тестов в iOS
• Просим ИИ сделать рефакторинг Swift кода
• SwiftUI: наконец-то пора? Опыт разработки на SwiftUI в контексте UIKit приложения
• Что нам показывают карты
• Почему получение пакетов в Swift Package Manager занимает слишком много времени
• Как зарегистрировать Apple Developer в App Store для физических лиц. Гайд 2024 года •
• Добавляем объём в visionOS-приложение
• SwiftUI уроки (часть 12)
• TextField с автодополнением
• SwiftUI-навигация: просто, нативно и декларативно
• Удивительный мир внутри .ipa
• Core Motion framework в финансовых приложениях
• Как Apple боролась с мошенничеством в App Store в 2023
• Вышла iOS 17.5 с поддержкой веб-распространения приложений
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Второй пошел: Google опубликовала новую бета-версию Android 15
• Как я доказывал Google, что мне нужны данные юзеров, но я не скамер
• Notion на Android теперь запускается в два раза быстрее
• Как мы реализовали кнопку со свайпом на Jetpack Compose
• Как мы отслеживаем просадки FPS в Альфа-Мобайл?
• Как написать свой клиент для YouTube, не привлекая внимания санитаров
• Опыт публикации Андроид приложения в Google Play независимым разработчиком в 2024 году
• Копаемся в встроенном приложении камеры старого Xiaomi. Часть 2
• Открываем AndroidFragment: перенос навигации из Фрагментов в Compose
• Путешествие к центру Композиции
• Scout: новый фреймворк для ускоренного и безболезненного управления зависимостями
• Компиляторные плагины: модификация и анализ Сompose
• Как я code coverage внедрял да Gradle plugin для baseline писал
• Больше приложений в Android для автомобилей
• Project Gameface вышел на Android
• Более частые обновления для Android Studio
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• DivKit теперь и для Flutter. Рассказываем об особенностях BDUI-фреймворка Яндекса
• Почему я верю в востребованность кроссплатформы и Flutter в частности?
• Ключи во Flutter
• Вышел Dart 3.4
• Flutter 3.22: что нового
• Навигация в приложениях Flutter: разбираем Navigator, Router и лучшие библиотеки
• Flutter 3.22 — Что нового во Flutter?
• Анонс Dart 3.4
• Flutter и натив. Пример с Яндекс OAuth
• Полнодуплексное соединение во Flutter
•

•

•

•

•

•

•


• Фокус на безопасность мобильных приложений
• Мантры программирования — это не догмы, а выражения
• Большой обзор обновлений iOS и Android
• Особенности построения интерфейса для разных платформ
• Грабим Дома на Собеседовании в Google •
• Avito QA meetup
• JetBrains выпускает Aqua — IDE для автоматизации тестирования
• Google открывает доступ к Home API
• Самая мощная ИИ-модель для создания изображений и чат-боты для работы, учёбы и поиска. Что представил Google на I/O 2024
• Итоги I/O 2024
• Developer Keynote Google I/O 2024: официальная поддержка KMP, развитие Gemini и AI в Андроиде
• Как изменились зарплаты айтишников за 2023 год
• Как я слил 3 млн руб и 2 года на мобильное приложение
•

•

•


• Топ быстрорастущих приложений в России в мае
• Маркетологи в мобайле: Ярослава Адаменко (М.Видео и Эльдорадо)
• Тенденции рынка игровых приложений от Adjust и AppLovin
• В App Store растет Airbuds, виджет с музыкой друзей
• Microsoft запустит мобильный магазин игр июле

• GPT-4o: больше мощи, но меньше цены. Почему так и что на самом деле умеет модель?
• Открыт конкурс Gemini API с призовым фондом в $3 млн
• Google запускает Firebase Genkit — открытый фреймворк для создания приложений на базе ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.