В новом дайджесте ускорение запуска приложений и спойлер-эффект кна Swift, сборщик метрик Android-проекта и рисование звезд, замена Firebase, идеальный встраиваемый язык, приложение для заметок, которое не стремится сделать вас более продуктивным и многое другое. Подключайтесь!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
 iOS
 iOS
• Почему ваша задача выполняется в главном потоке?
• Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument
• Быстрый доступ к VPN в iOS с помощью App Intents
• Как реализовать спойлер-эффект как в Telegram на Swift?
• Как в Duolingo удалили 10,000 строк кода с помощью Reaper
• Предотвращаем порчу кодовой базы в iOS-проектах с помощью прекоммит хуков
• Как мы запекали 3D-пиццу
• Есть ли ORM круче SwiftData
• Макросы спустя полгода: не все так гладко
• DriverKit: гоняем данные по проводу без мам, пап и MFi
• HomePod с дисплеем, homeOS и Apple Intelligence выйдет на рынок в следующем году
• Server side Live Activities guide
 Server side Live Activities guide
• Getting Started with Hummingbird
 Getting Started with Hummingbird
• SwiftUI Animations
 SwiftUI Animations
• Using the #expect macro for Swift Testing
 Using the #expect macro for Swift Testing
• Using PreviewModifier for Quick Xcode Previews
 Using PreviewModifier for Quick Xcode Previews
• SwiftUI: Configurable Widget to Let Our User Choose!
 SwiftUI: Configurable Widget to Let Our User Choose!
• Mastering container views in SwiftUI. Sections.
 Mastering container views in SwiftUI. Sections.
• Blending colors dynamically with the mix modifier
 Blending colors dynamically with the mix modifier
• Mastering Actors and Concurrency — Best Practices
 Mastering Actors and Concurrency — Best Practices
• Implementing Shared With You in SwiftUI
 Implementing Shared With You in SwiftUI
• Fixing Bitcode Issues in Xcode 16: How to Resolve Invalid Executable Errors When Uploading iOS Builds
 Fixing Bitcode Issues in Xcode 16: How to Resolve Invalid Executable Errors When Uploading iOS Builds
• How XcodeGen reduced the TDD in Swift codebase by 58,000+ lines
 How XcodeGen reduced the TDD in Swift codebase by 58,000+ lines
• How to Perfectly Merge SwiftUI and UIKit Navigation: A Step-by-Step Guide
 How to Perfectly Merge SwiftUI and UIKit Navigation: A Step-by-Step Guide
• How to Use Accessibility Inspector for iOS Apps
 How to Use Accessibility Inspector for iOS Apps
• CoreML in Action: From Concept to Code
 CoreML in Action: From Concept to Code
• S.O.L.I.D. in Swift
 S.O.L.I.D. in Swift
• Recreate Apple’s Stopwatch: Mastering Millisecond Precision in SwiftUI
 Recreate Apple’s Stopwatch: Mastering Millisecond Precision in SwiftUI
• Видео SwiftCraft 2024
 Видео SwiftCraft 2024
• Alternative App Icons in Xcode 16
 Alternative App Icons in Xcode 16
• New in Xcode16: the macro @Previewable
 New in Xcode16: the macro @Previewable
• SwiftUI — Support Prior iOS Versions — Backward Compatibility
 SwiftUI — Support Prior iOS Versions — Backward Compatibility
• Embedded Swift and 16×16 LED Matrix Animation Overview
 Embedded Swift and 16×16 LED Matrix Animation Overview
• Preview Updates in Xcode 16
 Preview Updates in Xcode 16
• Auto Scrolling Infinite Carousel — iOS 18
 Auto Scrolling Infinite Carousel — iOS 18
• LinksKit — удобное представление SwiftUI для отображения общих ссылок
 LinksKit — удобное представление SwiftUI для отображения общих ссылок
• SymSpellSwift — коррекция орфографии и нечеткий поиск
 SymSpellSwift — коррекция орфографии и нечеткий поиск
• SwiftUI Flow Layout — потоковый макет на SwiftUI
 SwiftUI Flow Layout — потоковый макет на SwiftUI
 Android
 Android
• Как устроен сборщик метрик Android-проекта
• Рисуя звезды: рисование с помощью Compose и Canvas
• Koin: как сделать свой DI за 10 минут
• Шлём биткоины с Android (и смотрим транзакции)
• Новый подход к безопасному управлению состояниями в Kotlin-приложениях
• Создание уведомлений на языке Kotlin
• Gemini Nano теперь доступен на Android в экспериментальном режиме
• Что такое Hilt
• ImageVector vs painterResources — Under the hood
 ImageVector vs painterResources — Under the hood
• Why fullMode hates Gson so much?
 Why fullMode hates Gson so much?
• Optimized Image Loading for Compose and Kotlin Multiplatform
 Optimized Image Loading for Compose and Kotlin Multiplatform
• Demystifying the Android Build Process: A Deep Dive into APK Generation
 Demystifying the Android Build Process: A Deep Dive into APK Generation
• Quick introduction to Large Language Models for Android developers
 Quick introduction to Large Language Models for Android developers
• How to Ripple Outside of Compose Material
 How to Ripple Outside of Compose Material
• Our journey with compose animations
 Our journey with compose animations
• A Beginner’s Guide to Building Android from AOSP
 A Beginner’s Guide to Building Android from AOSP
• Exploring the Declarative Nature of Jetpack Compose
 Exploring the Declarative Nature of Jetpack Compose
• Startup Profiles: The Quick Fix for Painfully Slow App Startups
 Startup Profiles: The Quick Fix for Painfully Slow App Startups
• Jetpack Compose Tutorials and Playground
 Jetpack Compose Tutorials and Playground
• Using kotlin-inject in a Kotlin/Compose Multiplatform project
 Using kotlin-inject in a Kotlin/Compose Multiplatform project
• How to bring your AI Model to Android devices
 How to bring your AI Model to Android devices
• A quick glance at AppWidget
 A quick glance at AppWidget
• Implementing Type-Safe Multi-Module Nested Navigation in Bottom Navigation using Jetpack Compose
 Implementing Type-Safe Multi-Module Nested Navigation in Bottom Navigation using Jetpack Compose
• Weather App For Android Wear OS Using Compose
 Weather App For Android Wear OS Using Compose
• How to “Safely” Migrate from Retrofit to Ktor
 How to “Safely” Migrate from Retrofit to Ktor
• Integrating the Gemini API in Android
 Integrating the Gemini API in Android
• How to Navigate From ViewModels With a Custom Navigator
 How to Navigate From ViewModels With a Custom Navigator
• Android Application with Microsoft Identity Platform
 Android Application with Microsoft Identity Platform
• Applying the Factory Method and Abstract Factory Patterns in Kotlin
 Applying the Factory Method and Abstract Factory Patterns in Kotlin
• YourSpace — семейный локатор и общение
 YourSpace — семейный локатор и общение
 Кроссплатформа
 Кроссплатформа
• Как Dart VM выполняет твой код?
• Inspektify: KMP network inspection library
 Inspektify: KMP network inspection library
• Hotwire Native
 Hotwire Native
• A Simple way to organize your code in Flutter
 A Simple way to organize your code in Flutter
• Automate Your Flutter Environment Setup: One Script to Configure It All
 Automate Your Flutter Environment Setup: One Script to Configure It All
• Realistic folder opening animation in Flutter
 Realistic folder opening animation in Flutter
• 2D Game in Flutter using Flame
 2D Game in Flutter using Flame
• Multiplayer drawing with Flutter and Serverpod. Full tutorial.
 Multiplayer drawing with Flutter and Serverpod. Full tutorial.
• Texty — текст с различными стилями, эффектами и анимацией для Compose Multiplatform
 Texty — текст с различными стилями, эффектами и анимацией для Compose Multiplatform
 Разработка
 Разработка
• Чем можно заменить Firebase — Обсуждение на Reddit
• 10 SDK, чтобы улучшить ваше мобильное приложение
• 3 совета для улучшения читабельности кода
• Разработчики получают мало пользы (если вообще что-то получают) от ИИ-помощников
• Aspect Build получил $3.85M на улучшение работы с Bazel
• Самые высокооплачиваемые вакансии сентября в сфере разработки приложений
• Уволить нельзя терпеть
• Lua – идеальный встраиваемый язык
• ⅔ российских компаний используют ИТ-шеринг
• Shadow Calls and Circuit Breakers: Uber’s Safe Approach to Mobile Network API Migration
 Shadow Calls and Circuit Breakers: Uber’s Safe Approach to Mobile Network API Migration
• It’s hard to write code for computers, but it’s even harder to write code for humans
 It’s hard to write code for computers, but it’s even harder to write code for humans
• Don’t Be Afraid to Re-Invent the Wheel
 Don’t Be Afraid to Re-Invent the Wheel
• Evolving GitHub Issue
 Evolving GitHub Issue
• A Local-First Case Study
 A Local-First Case Study
• Why do programmers need private offices with doors?
 Why do programmers need private offices with doors?
• From Manual Pain to Automation Chaos: Finding the Right Balance
 From Manual Pain to Automation Chaos: Finding the Right Balance
• Giving depth to your App Icons
 Giving depth to your App Icons
• The reality of the developer job market with ex-Googler YK Sugi
 The reality of the developer job market with ex-Googler YK Sugi
 Аналитика, маркетинг и монетизация
 Аналитика, маркетинг и монетизация
• Самые скачиваемые и зарабатывающие приложения в России в сентябре 2024
• Новый запрос на обмен контактами в iOS 18 стал угрозой для новых социальных приложений
• Epic подала в суд на Samsung и Google
• Napkin — приложение для заметок, которое не стремится сделать вас более продуктивным
• Новое приложение Wordy поможет вам учить язык во время просмотра фильмов и шоу
• Проектируем А/Б-эксперименты грамотно
 AI, Устройства, IoT
 AI, Устройства, IoT
• Когда в автомобиле нет системы GNSS…
• Новый подход к безопасному управлению состояниями в Kotlin-приложениях
• Как в Купере масштабировали машинное обучение и что из этого получилось
• Ищем потерявшихся питомцев с помощью нейросетей
• OpenAI запускает «Холст» для программирования с ChatGPT
• Poolside, занимающийся ИИ-программированием, привлек $500 млн
• Nvidia открыла новую ИИ-модель, готовую соперничать с GPT-4
• Ello обучает детей чтению и с помощью ИИ позволяет детям создавать свои собственные истории
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
 iOS
 iOS• Почему ваша задача выполняется в главном потоке?
• Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument
• Быстрый доступ к VPN в iOS с помощью App Intents
• Как реализовать спойлер-эффект как в Telegram на Swift?
• Как в Duolingo удалили 10,000 строк кода с помощью Reaper
• Предотвращаем порчу кодовой базы в iOS-проектах с помощью прекоммит хуков
• Как мы запекали 3D-пиццу
• Есть ли ORM круче SwiftData
• Макросы спустя полгода: не все так гладко
• DriverKit: гоняем данные по проводу без мам, пап и MFi
• HomePod с дисплеем, homeOS и Apple Intelligence выйдет на рынок в следующем году
•
 Server side Live Activities guide
 Server side Live Activities guide•
 Getting Started with Hummingbird
 Getting Started with Hummingbird•
 SwiftUI Animations
 SwiftUI Animations•
 Using the #expect macro for Swift Testing
 Using the #expect macro for Swift Testing•
 Using PreviewModifier for Quick Xcode Previews
 Using PreviewModifier for Quick Xcode Previews•
 SwiftUI: Configurable Widget to Let Our User Choose!
 SwiftUI: Configurable Widget to Let Our User Choose!•
 Mastering container views in SwiftUI. Sections.
 Mastering container views in SwiftUI. Sections.•
 Blending colors dynamically with the mix modifier
 Blending colors dynamically with the mix modifier•
 Mastering Actors and Concurrency — Best Practices
 Mastering Actors and Concurrency — Best Practices•
 Implementing Shared With You in SwiftUI
 Implementing Shared With You in SwiftUI•
 Fixing Bitcode Issues in Xcode 16: How to Resolve Invalid Executable Errors When Uploading iOS Builds
 Fixing Bitcode Issues in Xcode 16: How to Resolve Invalid Executable Errors When Uploading iOS Builds•
 How XcodeGen reduced the TDD in Swift codebase by 58,000+ lines
 How XcodeGen reduced the TDD in Swift codebase by 58,000+ lines•
 How to Perfectly Merge SwiftUI and UIKit Navigation: A Step-by-Step Guide
 How to Perfectly Merge SwiftUI and UIKit Navigation: A Step-by-Step Guide•
 How to Use Accessibility Inspector for iOS Apps
 How to Use Accessibility Inspector for iOS Apps•
 CoreML in Action: From Concept to Code
 CoreML in Action: From Concept to Code•
 S.O.L.I.D. in Swift
 S.O.L.I.D. in Swift•
 Recreate Apple’s Stopwatch: Mastering Millisecond Precision in SwiftUI
 Recreate Apple’s Stopwatch: Mastering Millisecond Precision in SwiftUI•
 Видео SwiftCraft 2024
 Видео SwiftCraft 2024•
 Alternative App Icons in Xcode 16
 Alternative App Icons in Xcode 16•
 New in Xcode16: the macro @Previewable
 New in Xcode16: the macro @Previewable•
 SwiftUI — Support Prior iOS Versions — Backward Compatibility
 SwiftUI — Support Prior iOS Versions — Backward Compatibility•
 Embedded Swift and 16×16 LED Matrix Animation Overview
 Embedded Swift and 16×16 LED Matrix Animation Overview•
 Preview Updates in Xcode 16
 Preview Updates in Xcode 16•
 Auto Scrolling Infinite Carousel — iOS 18
 Auto Scrolling Infinite Carousel — iOS 18•
 LinksKit — удобное представление SwiftUI для отображения общих ссылок
 LinksKit — удобное представление SwiftUI для отображения общих ссылок•
 SymSpellSwift — коррекция орфографии и нечеткий поиск
 SymSpellSwift — коррекция орфографии и нечеткий поиск•
 SwiftUI Flow Layout — потоковый макет на SwiftUI
 SwiftUI Flow Layout — потоковый макет на SwiftUI Android
 Android• Как устроен сборщик метрик Android-проекта
• Рисуя звезды: рисование с помощью Compose и Canvas
• Koin: как сделать свой DI за 10 минут
• Шлём биткоины с Android (и смотрим транзакции)
• Новый подход к безопасному управлению состояниями в Kotlin-приложениях
• Создание уведомлений на языке Kotlin
• Gemini Nano теперь доступен на Android в экспериментальном режиме
• Что такое Hilt
•
 ImageVector vs painterResources — Under the hood
 ImageVector vs painterResources — Under the hood•
 Why fullMode hates Gson so much?
 Why fullMode hates Gson so much?•
 Optimized Image Loading for Compose and Kotlin Multiplatform
 Optimized Image Loading for Compose and Kotlin Multiplatform•
 Demystifying the Android Build Process: A Deep Dive into APK Generation
 Demystifying the Android Build Process: A Deep Dive into APK Generation•
 Quick introduction to Large Language Models for Android developers
 Quick introduction to Large Language Models for Android developers•
 How to Ripple Outside of Compose Material
 How to Ripple Outside of Compose Material•
 Our journey with compose animations
 Our journey with compose animations•
 A Beginner’s Guide to Building Android from AOSP
 A Beginner’s Guide to Building Android from AOSP•
 Exploring the Declarative Nature of Jetpack Compose
 Exploring the Declarative Nature of Jetpack Compose•
 Startup Profiles: The Quick Fix for Painfully Slow App Startups
 Startup Profiles: The Quick Fix for Painfully Slow App Startups•
 Jetpack Compose Tutorials and Playground
 Jetpack Compose Tutorials and Playground•
 Using kotlin-inject in a Kotlin/Compose Multiplatform project
 Using kotlin-inject in a Kotlin/Compose Multiplatform project•
 How to bring your AI Model to Android devices
 How to bring your AI Model to Android devices•
 A quick glance at AppWidget
 A quick glance at AppWidget•
 Implementing Type-Safe Multi-Module Nested Navigation in Bottom Navigation using Jetpack Compose
 Implementing Type-Safe Multi-Module Nested Navigation in Bottom Navigation using Jetpack Compose•
 Weather App For Android Wear OS Using Compose
 Weather App For Android Wear OS Using Compose•
 How to “Safely” Migrate from Retrofit to Ktor
 How to “Safely” Migrate from Retrofit to Ktor•
 Integrating the Gemini API in Android
 Integrating the Gemini API in Android•
 How to Navigate From ViewModels With a Custom Navigator
 How to Navigate From ViewModels With a Custom Navigator•
 Android Application with Microsoft Identity Platform
 Android Application with Microsoft Identity Platform•
 Applying the Factory Method and Abstract Factory Patterns in Kotlin
 Applying the Factory Method and Abstract Factory Patterns in Kotlin•
 YourSpace — семейный локатор и общение
 YourSpace — семейный локатор и общение Кроссплатформа
 Кроссплатформа• Как Dart VM выполняет твой код?
•
 Inspektify: KMP network inspection library
 Inspektify: KMP network inspection library•
 Hotwire Native
 Hotwire Native•
 A Simple way to organize your code in Flutter
 A Simple way to organize your code in Flutter•
 Automate Your Flutter Environment Setup: One Script to Configure It All
 Automate Your Flutter Environment Setup: One Script to Configure It All•
 Realistic folder opening animation in Flutter
 Realistic folder opening animation in Flutter•
 2D Game in Flutter using Flame
 2D Game in Flutter using Flame•
 Multiplayer drawing with Flutter and Serverpod. Full tutorial.
 Multiplayer drawing with Flutter and Serverpod. Full tutorial.•
 Texty — текст с различными стилями, эффектами и анимацией для Compose Multiplatform
 Texty — текст с различными стилями, эффектами и анимацией для Compose Multiplatform Разработка
 Разработка• Чем можно заменить Firebase — Обсуждение на Reddit
• 10 SDK, чтобы улучшить ваше мобильное приложение
• 3 совета для улучшения читабельности кода
• Разработчики получают мало пользы (если вообще что-то получают) от ИИ-помощников
• Aspect Build получил $3.85M на улучшение работы с Bazel
• Самые высокооплачиваемые вакансии сентября в сфере разработки приложений
• Уволить нельзя терпеть
• Lua – идеальный встраиваемый язык
• ⅔ российских компаний используют ИТ-шеринг
•
 Shadow Calls and Circuit Breakers: Uber’s Safe Approach to Mobile Network API Migration
 Shadow Calls and Circuit Breakers: Uber’s Safe Approach to Mobile Network API Migration•
 It’s hard to write code for computers, but it’s even harder to write code for humans
 It’s hard to write code for computers, but it’s even harder to write code for humans•
 Don’t Be Afraid to Re-Invent the Wheel
 Don’t Be Afraid to Re-Invent the Wheel•
 Evolving GitHub Issue
 Evolving GitHub Issue•
 A Local-First Case Study
 A Local-First Case Study•
 Why do programmers need private offices with doors?
 Why do programmers need private offices with doors?•
 From Manual Pain to Automation Chaos: Finding the Right Balance
 From Manual Pain to Automation Chaos: Finding the Right Balance•
 Giving depth to your App Icons
 Giving depth to your App Icons•
 The reality of the developer job market with ex-Googler YK Sugi
 The reality of the developer job market with ex-Googler YK Sugi Аналитика, маркетинг и монетизация
 Аналитика, маркетинг и монетизация• Самые скачиваемые и зарабатывающие приложения в России в сентябре 2024
• Новый запрос на обмен контактами в iOS 18 стал угрозой для новых социальных приложений
• Epic подала в суд на Samsung и Google
• Napkin — приложение для заметок, которое не стремится сделать вас более продуктивным
• Новое приложение Wordy поможет вам учить язык во время просмотра фильмов и шоу
• Проектируем А/Б-эксперименты грамотно
 AI, Устройства, IoT
 AI, Устройства, IoT• Когда в автомобиле нет системы GNSS…
• Новый подход к безопасному управлению состояниями в Kotlin-приложениях
• Как в Купере масштабировали машинное обучение и что из этого получилось
• Ищем потерявшихся питомцев с помощью нейросетей
• OpenAI запускает «Холст» для программирования с ChatGPT
• Poolside, занимающийся ИИ-программированием, привлек $500 млн
• Nvidia открыла новую ИИ-модель, готовую соперничать с GPT-4
• Ello обучает детей чтению и с помощью ИИ позволяет детям создавать свои собственные истории
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
 
          