В новом дайджесте обсуждаем прошедшую 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 — много об интересном коде и технологиях.
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 — открытый фреймворк для создания приложений на базе ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.