В новом выпуске быстрый старт и дело правительства США против Apple, цена Чистой Архитектуры и Android 15 Developer Preview 2, современный способ организации зависимостей, сила последовательности, топ быстрорастущих приложений в России в марте и многое другое.
Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

iOS
• Быстрый старт, или Как ускорить запуск iOS-приложений
• YandexMapKit и SwiftUI: обратный геокодинг
• Интерактивные виджет-подборки в Иви (iOS)
• Путь iOS-разработчика: как я много собеседовался и попал на стажировку
• Разработка под Apple Vision Pro
• Как встроить в TextField индикатор загрузки и кастомную View
• США подали в суд на Apple за незаконную монополию
• ЕС присматривается к Core Technology Fee
• Поваренная книга SwiftUI: тексты и шрифты — часть 1
• Apple может лицензировать ИИ-модели Google или OpenAI
•
Swift Tooling: Windows Edition
•
If you use UserDefaults in an app
•
SwiftUI Tasks Blocking the MainActor
•
Store a codable model into AppStorage
•
Oh Sh*t, My App is Successful and I Didn’t Think About Accessibility
•
Customizing a Chart in Swift Charts
•
How to support dark mode in SwiftUI programmatically
•
How SwiftUI & Concurrency Could Forward Fix Their Issues
•
How to migrate an iOS app to Bazel
•
XCUITest + SauceLabs + GitHub Actions = Incredible Mobile iOS CI/CD Automation
•
Async Unit Testing: The Comprehensive Guide
•
Mockirinha — a approach to write unit test for API requests
•
Getting Started with Structured Concurrency in Swift
•
Optimizing UI Testing Efficiency with Page Object Model
•
Our journey with Swift thus far — some notes and reflections
•
SwiftUI-Container View’s hierarchy
•
Prompt to code in Xcode with Claude 3
•
How to link to native type extensions in DocC
•
Tuist-ing TravelPerks iOS app for Faster Build Times
•
Your How-To Guide for Implementing Image Cropping and Rotating in iOS
•
Hacking Disneyland’s App to fix a Freeze
•
JSON Parsing With Pagination
•
Build 3D content for visionOS Apps
•
Long Press Button With Progress Bar
•
Create a 3D shiny card in SwiftUI
•
Sign In With Apple — Firebase
•
SwiftUI Horizontal Wheel Picker
•
JTAppleCalendar: библиотека календаря на Swift
•
Swiftfin: видеоплеер Jellyfin для iOS и tvOS
Android
• Вы за это заплатите! Цена Чистой Архитектуры. Часть 1 + Часть 2
• Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 1
• Вышел Android 15 Developer Preview 2
• Разработка под Android в 2024 году
• Зачем в мобильной разработке использовать Flow, если есть мощный ChannelFlow?
• Android TOML. Просто о каталогах зависимостей в Android Studio
• Современный способ организации зависимостей в Android. Version catalog (TOML) и Gradle convention plugin
• Разработка новостного приложения. Часть 4
• Мапим данные из domain в ui модуль в многомодульном проекте
•
Animations with Lookahead in Jetpack Compose
•
Adding Ktlint to your Android project
•
Optimize App Performance By Mastering Stability in Jetpack Compose
•
The Ktor Roadmap for 2024
•
Customize Clickables and Ripples
•
Stressing the JVM GC on Android
•
Automating Android App Deployment to Firebase App Distribution With Fastlane
•
Accessibility Checks with Jetpack Compose Previews
•
Jetpack Compose needs a Design System layer
•
Composition over Inheritance: My refactoring recipe
•
@Composable Modifier vs composed factory in Jetpack Compose
•
Stop Passing Event/UI-Action Callbacks in Jetpack Compose
•
Android Localization: List Formatter in Android
•
Kotlin’s JDK release compatibility flag
•
Build Wear OS application using Jetpack Compose
•
Detecting Banker Malware Installed on Android Devices
•
Optimizing CI/CD Processes with Selective Testing
•
Now in Android: 101 — Android 15 Developer Preview 2, TheAndroidShow, the Google I/O date, & more
•
How to Implement Biometric Auth in Your Android App
•
This Is My FAVORITE Error Handling Class
•
Java vs. Kotlin: The Ultimate Showdown of Virtual Threads & Coroutines
•
Gramophone: музыкальный плеер на Media3 и Material Design
•
Routine Tracker: календарь-планировщик для Android
Кроссплатформа
• ViewModel + Kotlin Multiplatform. Пробуем нативное решение
• Тестирование пользовательского интерфейса во Flutter
• Dart 3.1 и ретроспектива программирования в функциональном стиле в Dart 3
• Рецепт приготовления кроссплатформенного мобильного видеоредактора
•
Fixing FVM with an open source mindset
•
Flutter & ML Kit 1.0: AI powered Apps
•
How to use KMP library inside the Flutter plugin?
•
The power of open-source. Making Maestro work better with Flutter
•
Flutter-Clean Architecture
•
Introducing the Redacted Widget for Flutter: Enhance Your Loading Experience!
•
Advanced Theming Techniques in Flutter: Leveraging Extensions for Dynamic UIs
Разработка
• Как растратить свою карьеру — один комфортный год за другим
• Перехват трафика мобильных приложений
• Сила последовательности в побочных проектах
• Как рождаются идеи pet-проектов?
• О вреде Test Driven Development
• Почему навигация в Google, Booking и Spotify именно такая, и какую лучше выбрать вам
• Собеседование по System Design: проектируем клон Авито
• Не работал в FAANG — не программист: полгода работы в Apple
• Программисты не нужны
• Как инсайт Netflix удвоил конверсию Gett
• GitHub предлагает автоматическое исправление уязвимостей в коде с помощью ИИ
• JetBrains запускает TeamCity Pipelines для упрощения работы с CI/CD
• Visual Studio App Center закрывается
•
Interviewing at Staff+ level
•
How Figma’s databases team lived to tell the scale
•
Vision Pro is an over-engineered «devkit»
•
Make CI/CD Part of Your Development Flow With TeamCity Pipelines
•
How Tinder Scaled to 1.6 Billion Swipes per Day
•
Empirically supported code review best practices
•
Tooltip: A small design element with a big UX impact
•
This is the moment to reinvent your product
•
How to Solve 1000 Leetcode Problems in 300 Days?
•
Will AI Devices Kill UX?
•
AutoDev: ИИ-помощник для разработки
•
Shattered Pixel Dungeon: кроссплатформенный «рогалик»
Аналитика, маркетинг и монетизация
• Приложение для ведения бюджета Copilot переживает бум после закрытия Mint
• Epic Games запускает магазин на iOS и Android
• Топ быстрорастущих приложений в России в марте
• Sensor Tower покупает data.ai
• Приложение Apple Sports не смогло опередить конкурентов
•
Casual Gaming in 2024: Using Insights From 2023
AI, Устройства, IoT
• Quantization Deep Dive, или Введение в современную квантизацию
• Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++
• Расчёт вкусов пользователя для ленты рекомендаций с применением item2vec-подхода
• Умный офис в «Москва-Сити» на Home Assistant: автоматизируем только нужное
• Демистифицируем машинное обучение – из разработчика в ML-инженеры
• Исследователи обнаружили неисправимую уязвимость в чипах Apple Silicon
• Google DeepMind разработал ИИ ассистента для футбола
• Лучшие механические клавиатуры 2024
• xAI Илона Маска открыл код ИИ-модели Grok
• Новый метод обучения ИИ от Apple сохраняет конфиденциальность
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.


• Быстрый старт, или Как ускорить запуск iOS-приложений
• YandexMapKit и SwiftUI: обратный геокодинг
• Интерактивные виджет-подборки в Иви (iOS)
• Путь iOS-разработчика: как я много собеседовался и попал на стажировку
• Разработка под Apple Vision Pro
• Как встроить в TextField индикатор загрузки и кастомную View
• США подали в суд на Apple за незаконную монополию
• ЕС присматривается к Core Technology Fee
• Поваренная книга SwiftUI: тексты и шрифты — часть 1
• Apple может лицензировать ИИ-модели Google или OpenAI
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Вы за это заплатите! Цена Чистой Архитектуры. Часть 1 + Часть 2
• Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 1
• Вышел Android 15 Developer Preview 2
• Разработка под Android в 2024 году
• Зачем в мобильной разработке использовать Flow, если есть мощный ChannelFlow?
• Android TOML. Просто о каталогах зависимостей в Android Studio
• Современный способ организации зависимостей в Android. Version catalog (TOML) и Gradle convention plugin
• Разработка новостного приложения. Часть 4
• Мапим данные из domain в ui модуль в многомодульном проекте
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• ViewModel + Kotlin Multiplatform. Пробуем нативное решение
• Тестирование пользовательского интерфейса во Flutter
• Dart 3.1 и ретроспектива программирования в функциональном стиле в Dart 3
• Рецепт приготовления кроссплатформенного мобильного видеоредактора
•

•

•

•

•

•

•


• Как растратить свою карьеру — один комфортный год за другим
• Перехват трафика мобильных приложений
• Сила последовательности в побочных проектах
• Как рождаются идеи pet-проектов?
• О вреде Test Driven Development
• Почему навигация в Google, Booking и Spotify именно такая, и какую лучше выбрать вам
• Собеседование по System Design: проектируем клон Авито
• Не работал в FAANG — не программист: полгода работы в Apple
• Программисты не нужны
• Как инсайт Netflix удвоил конверсию Gett
• GitHub предлагает автоматическое исправление уязвимостей в коде с помощью ИИ
• JetBrains запускает TeamCity Pipelines для упрощения работы с CI/CD
• Visual Studio App Center закрывается
•

•

•

•

•

•

•

•

•

•

•

•


• Приложение для ведения бюджета Copilot переживает бум после закрытия Mint
• Epic Games запускает магазин на iOS и Android
• Топ быстрорастущих приложений в России в марте
• Sensor Tower покупает data.ai
• Приложение Apple Sports не смогло опередить конкурентов
•


• Quantization Deep Dive, или Введение в современную квантизацию
• Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++
• Расчёт вкусов пользователя для ленты рекомендаций с применением item2vec-подхода
• Умный офис в «Москва-Сити» на Home Assistant: автоматизируем только нужное
• Демистифицируем машинное обучение – из разработчика в ML-инженеры
• Исследователи обнаружили неисправимую уязвимость в чипах Apple Silicon
• Google DeepMind разработал ИИ ассистента для футбола
• Лучшие механические клавиатуры 2024
• xAI Илона Маска открыл код ИИ-модели Grok
• Новый метод обучения ИИ от Apple сохраняет конфиденциальность
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.