В этом выпуске миграция на Observation и Doom на SwiftUI, современный Compose и прощание с друзьями, принципы хорошего дизайна, красоты кода, эффективного продвижения и многого другого!
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

iOS
• Перф-тесты VS аномалии. Вечная битва за производительность приложений на iOS
• Миграция Ice Cubes на фреймворк SwiftUI Observation
• Jailbreak checker — как обезопасить свое iOS-приложение
• @ViewBuilder Что? Зачем? Когда?
• Руководство по Использованию Многопоточности в Swift
• Паттеры проектирования — Мост
• Пишем свой рендеринг графики на SwiftUI и запускаем на нем Doom
• Поваренная книга SwiftUI: использование предварительного просмотра в Xcode со SwiftUI
•
A new tool for testing macros in Swift
•
Crack Your iOS Interview: Top Questions You Must Know in 2023 Before You Go!
•
Understanding Access Levels in Swift with Examples
•
Benefits of using #pragma mark in Swift
•
Discovering All SwiftUI TextField Keyboard Types
•
3 Cool new features of Swift 5.9
•
How to Handle Content Unavailable Gracefully with iOS 17?
•
Bottom Sheet View Controller with Dynamic Content Height in iOS
•
The sad state of @AppStorage and the Observable framework
•
Store Codable types in AppStorage
•
Efficient Dependency Management in iOS: Introducing AppContainer for MVP+DI architecture
•
WeatherKit Tutorial: Getting Started
•
Understanding Publishers in SwiftUI and Combine
•
Thread safety in Swift with actors
•
Creating a Carousel View in SwiftUI: A Step-by-Step Guide
•
Multipart Request with URLSession and async/await in Swift
•
Closures vs. Delegates in Swift iOS
•
How to use the new inspector SwiftUI view modifier
•
How to create an App Clip for your app
•
Dependency Injection in Swift
•
Crafting Gourmate: The Food Journaling App
•
SwiftUI Animated Carousel Slider With Paging Control
•
Build a SwiftUI Video Calling: How to Ring and Notify Users About a Call
•
How to translate and localize an iOS app with string catalogs in Xcode 15
•
CocoaHeadsNL Meetup
•
SwiftUI Custom Alert View
•
SFSymbol Animations in iOS 17
•
Breaking Down Swift Data Migrations
•
DeviceKit: замена UIDevice
•
iOSSecuritySuite: безопасность и защита от взлома iOS-приложений
Android
• Реализуем современный UI на Jetpack Compose
• «Подарил удочки и попрощался с друзьями на год»: как я стал Android-разработчиком, отказавшись даже от прогулок
• Собеседование на Mobile Developer: Алексей Панов (Контур)
• От плохого кода к хорошему один шаг: юнит тесты, ООП и интерфейсы
• Studio Bot в Android Studio заработал в 170 странах мира
• Написание символьного процессора с помощью Kotlin Symbol Processing (Часть 1) + (Часть 2)
• Тюнинг производительности Kotlin: 20 советов
•
UI Eventing on Android
•
ANR internals: touch dispatching through the view hierarchy
•
ArchUnit vs. Konsist. Why Did We Need Another Kotlin “Linter”?
•
A bird’s eye view of the ioki Android app architecture
•
Kotlin Flow: Simple yet Powerful Implementation
•
Why has my background Worker stopped? Exploring Android WorkManger’s StopReason
•
Mastering RecyclerView Optimizations in Android
•
Lighten MVI architecture: Delegate responsibilities to new components
•
Creating the Creational Design Patterns in Kotlin
•
Implementing In-App Reviews Using Google Play Review API
•
Data Persistence With Room
•
Media on Swiggy’s Mobile Apps
•
Navigation in Jetpack compose. Full guide Beginner to Advanced.
•
How to Implement Swipe-to-Action using AnchoredDraggable in Jetpack Compose
•
Let’s Talk about Kotlin K2
•
First Alpha release of Androidx Bluetooth
•
Java 21 Features With Example
•
Generics in Kotlin
•
Compose Modifier.Node and where to find it
•
Firebase in Android Studio — Android Developers Backstage
•
Now in Android: 91 — Jetpack Glance, Android 14 QPR, Google Play policy and console updates, & more!
•
How to Create a Lazy Column With Categories in Jetpack Compose
•
ComposeCard: красивый экран оплаты на Jetpack Compose
•
ComposeScrollbars: продвинутые скроллбары для Compose
Кроссплатформа
•
Why Kotlin Multiplatform could change everything in the mobile dev world
•
The Power of the late keyword in Dart
•
Behind every widget, there are an element and almost always a render object
•
Mavericks Style Architecture on Kotlin Compose Multiplatform: A Tutorial
•
Trainee Program for Aspiring Flutter Developers
•
Kotlin for Web Development: Beyond Android Apps
•
Integrating Flutter {all 6 platforms} and Python: A Comprehensive Guide
•
The hidden cost of async operations in Flutter/Dart
•
5+ Github Actions to Automate Your React Native Workflow
•
Making Multiplatform Better
•
Creating a Cutting-Edge Movie Streaming App with Flutter & Python
•
Flutter Weather App: погодное приложение в стиле Apple Weather
Разработка
• Особенности SRE и Observability в мобильных приложениях
• Принципы хорошего дизайна интерфейсов. И причем здесь программисты?
• Сделали по красоте: победители «Конкурса красоты кода»
• Ozon Tech Community QA Meetup
• Как использовать метод струн для улучшения любого пользовательского интерфейса
• GitHub Copilot Chat открыли для индивидуальных разработчиков
• Kotlin снова вошел в Топ-20 TIOBE Index
•
Unlocking the Potential of Mobile DevOps: Transforming App Development and Delivery
•
Best Practices for Collecting and Querying Data from Multiple Sources
•
My approach to coding interviews: Optimize for iteration
•
What Happens When You Reach The Age of 35 as a Programmer
•
Tracing: structured logging, but better in every way
•
Every Programmer Should Know #1: Idempotency
•
How to be the favorite engineer among your product manager and designer
•
The ONLY Right Way to Document Your Code
•
ElectricSQL: Local-first платформа синхронизации для Postgres
•
OpenRA: игровой движок для 2D стратегий
Аналитика, маркетинг и монетизация
• Эффективное продвижение в in-app, альтернативных магазинах и через Android APK. Кейс «Национальная Лотерея» и Rocket10
• Как увеличить мощность A/B-теста, если мало данных и время поджимает
• Podlodka #336: ищем пользовательский сегмент
• Модерация приложений и игр в магазине RuStore
• Carrots&Cake: приложение родительского контроля меняет обучение на игры
• Sizzle — не просто решение домашних задач, а объяснение их с помощью ИИ
• Google провел редизайн приложения Fitbit
• Исследование “Мобильный потребитель 2023”
AI, Устройства, IoT
• Диалоги с кофеваркой, про Яндекс Алису и умный дом Home Assistant
• От логики и риторики до теории множеств и матанализа. Полезные материалы по Data Science и машинному обучению
• Слезаем с иглы Siemens: промышленная вентиляция бассейна и спортивного комплекса
• IoT и его криптонит
• $100 млн в Серии B: Writer — генеративная платформа для предприятий
• Исследователи Microsoft AI выставили терабайты данных на всеобщий доступ
• Если бы вы покупали акции, вместо iPhone, у вас сейчас было бы $147,000
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

iOS• Перф-тесты VS аномалии. Вечная битва за производительность приложений на iOS
• Миграция Ice Cubes на фреймворк SwiftUI Observation
• Jailbreak checker — как обезопасить свое iOS-приложение
• @ViewBuilder Что? Зачем? Когда?
• Руководство по Использованию Многопоточности в Swift
• Паттеры проектирования — Мост
• Пишем свой рендеринг графики на SwiftUI и запускаем на нем Doom
• Поваренная книга SwiftUI: использование предварительного просмотра в Xcode со SwiftUI
•
A new tool for testing macros in Swift•
Crack Your iOS Interview: Top Questions You Must Know in 2023 Before You Go!•
Understanding Access Levels in Swift with Examples•
Benefits of using #pragma mark in Swift•
Discovering All SwiftUI TextField Keyboard Types•
3 Cool new features of Swift 5.9•
How to Handle Content Unavailable Gracefully with iOS 17?•
Bottom Sheet View Controller with Dynamic Content Height in iOS•
The sad state of @AppStorage and the Observable framework•
Store Codable types in AppStorage•
Efficient Dependency Management in iOS: Introducing AppContainer for MVP+DI architecture•
WeatherKit Tutorial: Getting Started•
Understanding Publishers in SwiftUI and Combine•
Thread safety in Swift with actors•
Creating a Carousel View in SwiftUI: A Step-by-Step Guide•
Multipart Request with URLSession and async/await in Swift•
Closures vs. Delegates in Swift iOS•
How to use the new inspector SwiftUI view modifier•
How to create an App Clip for your app•
Dependency Injection in Swift•
Crafting Gourmate: The Food Journaling App•
SwiftUI Animated Carousel Slider With Paging Control•
Build a SwiftUI Video Calling: How to Ring and Notify Users About a Call•
How to translate and localize an iOS app with string catalogs in Xcode 15•
CocoaHeadsNL Meetup•
SwiftUI Custom Alert View•
SFSymbol Animations in iOS 17•
Breaking Down Swift Data Migrations•
DeviceKit: замена UIDevice•
iOSSecuritySuite: безопасность и защита от взлома iOS-приложений
Android• Реализуем современный UI на Jetpack Compose
• «Подарил удочки и попрощался с друзьями на год»: как я стал Android-разработчиком, отказавшись даже от прогулок
• Собеседование на Mobile Developer: Алексей Панов (Контур)
• От плохого кода к хорошему один шаг: юнит тесты, ООП и интерфейсы
• Studio Bot в Android Studio заработал в 170 странах мира
• Написание символьного процессора с помощью Kotlin Symbol Processing (Часть 1) + (Часть 2)
• Тюнинг производительности Kotlin: 20 советов
•
UI Eventing on Android•
ANR internals: touch dispatching through the view hierarchy•
ArchUnit vs. Konsist. Why Did We Need Another Kotlin “Linter”?•
A bird’s eye view of the ioki Android app architecture•
Kotlin Flow: Simple yet Powerful Implementation•
Why has my background Worker stopped? Exploring Android WorkManger’s StopReason•
Mastering RecyclerView Optimizations in Android•
Lighten MVI architecture: Delegate responsibilities to new components•
Creating the Creational Design Patterns in Kotlin•
Implementing In-App Reviews Using Google Play Review API•
Data Persistence With Room•
Media on Swiggy’s Mobile Apps•
Navigation in Jetpack compose. Full guide Beginner to Advanced.•
How to Implement Swipe-to-Action using AnchoredDraggable in Jetpack Compose•
Let’s Talk about Kotlin K2•
First Alpha release of Androidx Bluetooth•
Java 21 Features With Example•
Generics in Kotlin•
Compose Modifier.Node and where to find it•
Firebase in Android Studio — Android Developers Backstage•
Now in Android: 91 — Jetpack Glance, Android 14 QPR, Google Play policy and console updates, & more!•
How to Create a Lazy Column With Categories in Jetpack Compose•
ComposeCard: красивый экран оплаты на Jetpack Compose•
ComposeScrollbars: продвинутые скроллбары для Compose
Кроссплатформа•
Why Kotlin Multiplatform could change everything in the mobile dev world•
The Power of the late keyword in Dart•
Behind every widget, there are an element and almost always a render object•
Mavericks Style Architecture on Kotlin Compose Multiplatform: A Tutorial•
Trainee Program for Aspiring Flutter Developers•
Kotlin for Web Development: Beyond Android Apps•
Integrating Flutter {all 6 platforms} and Python: A Comprehensive Guide•
The hidden cost of async operations in Flutter/Dart•
5+ Github Actions to Automate Your React Native Workflow•
Making Multiplatform Better•
Creating a Cutting-Edge Movie Streaming App with Flutter & Python•
Flutter Weather App: погодное приложение в стиле Apple Weather
Разработка• Особенности SRE и Observability в мобильных приложениях
• Принципы хорошего дизайна интерфейсов. И причем здесь программисты?
• Сделали по красоте: победители «Конкурса красоты кода»
• Ozon Tech Community QA Meetup
• Как использовать метод струн для улучшения любого пользовательского интерфейса
• GitHub Copilot Chat открыли для индивидуальных разработчиков
• Kotlin снова вошел в Топ-20 TIOBE Index
•
Unlocking the Potential of Mobile DevOps: Transforming App Development and Delivery•
Best Practices for Collecting and Querying Data from Multiple Sources•
My approach to coding interviews: Optimize for iteration•
What Happens When You Reach The Age of 35 as a Programmer•
Tracing: structured logging, but better in every way•
Every Programmer Should Know #1: Idempotency•
How to be the favorite engineer among your product manager and designer•
The ONLY Right Way to Document Your Code•
ElectricSQL: Local-first платформа синхронизации для Postgres•
OpenRA: игровой движок для 2D стратегий
Аналитика, маркетинг и монетизация• Эффективное продвижение в in-app, альтернативных магазинах и через Android APK. Кейс «Национальная Лотерея» и Rocket10
• Как увеличить мощность A/B-теста, если мало данных и время поджимает
• Podlodka #336: ищем пользовательский сегмент
• Модерация приложений и игр в магазине RuStore
• Carrots&Cake: приложение родительского контроля меняет обучение на игры
• Sizzle — не просто решение домашних задач, а объяснение их с помощью ИИ
• Google провел редизайн приложения Fitbit
• Исследование “Мобильный потребитель 2023”
AI, Устройства, IoT• Диалоги с кофеваркой, про Яндекс Алису и умный дом Home Assistant
• От логики и риторики до теории множеств и матанализа. Полезные материалы по Data Science и машинному обучению
• Слезаем с иглы Siemens: промышленная вентиляция бассейна и спортивного комплекса
• IoT и его криптонит
• $100 млн в Серии B: Writer — генеративная платформа для предприятий
• Исследователи Microsoft AI выставили терабайты данных на всеобщий доступ
• Если бы вы покупали акции, вместо iPhone, у вас сейчас было бы $147,000
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.