Mobile Development Week #500 (July 31 – August 6)
In the new anniversary edition, we create default avatars and explore TipKit, write a completely native GUI application without Android and pass Android interviews, learn the rules for creating beautiful interfaces, defeat server tips, explore the mobile experience and much more!
In our Telegram channel Mobile Insightseven more materials for mobile developers, and in IT Insights — about interesting code and technologies. Connect!
We would like to once again invite you to Developer Nation survey. Tell us what you like or dislike about popular tools and platforms. The survey covers 13 areas: mobile, desktop, cloud and web applications, industrial Internet of things, games, machine learning, artificial intelligence, etc. The survey is available in 10 languages, including Russian. You can start and save to continue. You can win prizes. The main thing is to contribute to the development of the developer community.
iOS
• Create default user avatars in SwiftUI
• Adding learning moments to apps with TipKit
• Sticky Header in SwiftUI
• Who are you SwiftData
• GC, ARC, RAM. Part 3 iOS
• The Composable Architecture has reached version 1.0: what is it
• Thread Safety in Swift
• Adding teachable moments to your apps with TipKit
• Swift Macros
• Composable Architecture 1.0
• Animating Carrousel Transitions in SwiftUI
• DocC Tutorial for Swift: Automating Publishing With GitHub Actions
• Observation Framework in iOS 17
• Crafting a Swift Package Plugin for App Data Protection
• Unit Testing with async/await
• iOS Interview Guide: Custom higher-order functions in Swift
• Modularized Navigation in SwiftUI – An Enum-based Approach
• The Large Title UINavigationBar Glitches and How to Fix Them
• Localization testing in Xcode
• SwiftUI Tutorial: Navigation
• Streamlining Similar View Controllers: A Swift Tutorial to Embrace the Refactor Mindset
• Mastering StoreKit 2
• How to automate taking screenshots with fastlane for iOS
• How to use type erasure in Swift with a real example
• Advanced async testing: Unstructured concurrency
• Animate background with color gradient in SwiftUI
• Understanding iOS Memory Management With Toy Analogies
• What I’ve learned implementing Swift Macros: 5 takeaways
• SwiftUI Animated Tags View – Layout API
• SwiftData Basics Tutorial: How to Easily Persist Data in SwiftUI
• How to format physical units in Swift using MeasurementFormatter
• SharePlay – Turn your app experience into a shared experience
• SwiftUI: Scroll to Hide Tab Bar
• visionOS 30 Days: development lessons for visionOS
• iTorrent: torrent client for iOS
Android
• The sources are closed, but we will not give up: We write a completely native GUI application for a No-Name smartphone without Android
• On the other side of feedback: how Android interviews work and what we expect from candidates
• The best companion in your creative process: Android Studio Bot VS ChatGPT for Developers
• Animation optimization on Compose: we twist loaders, look for non-obvious functions
• Android indie development: pains, ideas and earnings
• How Google Defeated Android Fragmentation
• State of Databases 2023 study
• Designing a Functional Library
• Jetpack Compose for Maps
• Deep dive into Live Edit for Jetpack Compose UI
• Modeling the domain layer using composable use cases
• Lazy Grids for Android TV using Jetpack Compose
• Fluent and Fun Clean Architecture using Kotlin
• How to create a chatbot with Firebase Firestore and PaLM on Android
• Try the K2 compiler in your Android projects
• Android WorldwideJuly 2023
• Gradle Cache: Your build’s best friend
• Firebase Dynamic Links Depricated! Migrate to Android App Links
• Passing events from Composable functions to MVI ViewModels
• How I became an Android Developer
• Android 13 Runtime Notification Permission: XML & Jetpack Compose Guide
• Debugging Alarms with ADB
• Using String Resources in a ViewModel
• Debugging Google Maps App Issue on Android
• Debugging the recomposition in Jetpack Compose
• Clok: The math behind the clock
• Fixing touch target size in PLR
• Live Edit for Jetpack Compose
• Android Studio Giraffe stable release, New Samsung foldables, and more dev news!
• Top App Bar (Toolbar) – UX With Material3
• Selection UI Components (Checkboxes, Switches, Radio Buttons) – UX With Material3
• Android WorldwideJuly 2023
• Stable Diffusion AI: custom image generator for Android
• Compose Adaptive Scaffold: Easy Large Screen Support
Cross platform
• The future of iOS development on Flutter
• How we made an online code editor on Flutter
• Mobile multi-platform development at McDonald’s
• Kotlin Multiplatform Mobile (KMM) becomes Kotlin Multiplatform (KMP)
• Mobile application for eCommerce: cross-platform development experience
• Popular apps using Kotlin Multiplatform (KMP) in 2023 — and what you can learn from them
• Intercepting Ktor Network Responses in Kotlin Multiplatform
• A Deep Look Into Flutter Databases
• How we reduced bundle size by 15% with patching package
• How To Use Lints In Flutter
• Storing data from the Flutter app → Google Sheets
• Enhance your React Native Application Performance
• Understanding Keys, Elements, RenderObjects and their interplay in Flutter
• The basics of Layout Animations in React Native Reanimated
• Firebase Analytics in Flutter app
Development
• No designer needed. Rules for creating beautiful UIs
• How a small neurolinguistic model in Keyboard defeated server prompts
• BDUI, multi-step and backend driven analytics
• How we launched the official Russian app store RuStore
• How we implemented push notifications in the messenger — from basic sending to working out the conditions
• Nielsen heuristics on the example of real applications
• Development of mobile applications: key principles of product and project approaches
• Myths and legends about mobile app security
• Avito Security Meetup
• Podlodka #329: where does Big Data start
• July’s Highest Paid App Development Jobs
• What is mainline development
• A WWDC Design Lab Made My App So Much Better
• Before you try to do something, make sure you can do nothing
• Explaining Vector Databases in 3 Levels of Difficulty
• 5 UX Secrets Behind the Success of Threads App by Meta
• How DoorDash Migrated from StatsD to Prometheus
• ORIDE – UX Case Study
• A Realistic Day of a Product Manager’s Life at Microsoft
• vertical vs. Horizontal Cards: Which Are Better?
• Tidal Cycles – Live coding music with Algorithmic patterns
Analytics, marketing and monetization
• What is a good conversion to paying user?
• Bloom teaches Generation Z about investing
• The most downloaded and earning applications in Russia in July 2023
• DSP: differences and advantages of lookalike and predictive models. Part 2
• IronZen: how we solved the pain of thousands of anxious people by developing our own mobile application
• The Power of Streak: Increasing the Engagement of Learning Apps
• RuStore now has the ability to download applications for TV
• Mobile Experience 2023 Embrace Report
• $100 million: Inworld – AI for NPCs
• Amazon Clinic launched in all states
• Pokemon Sleep hits 2 million installs
• Which countries release the most mobile games?
• Rewind has released an iPhone app that will help you remember everything
AI, Devices, IoT
• Analytics and optimization of batteries in IoT devices
• We automate ventilation in an apartment of 200 m²: the budget is not limited
• Kincony KC868-A4S: like A4, only (S)UPER
• Yet another UDP transport
• Ray-Ban smart glasses are almost never used
• Snapchat launches new AR lens rewards program
• AI Companion App: A lightweight stack for creating and hosting your own AI companions
← Previous digest. If you have other interesting materials or you find an error, please send it to the mail.