Android
Articles on Android performance, Kotlin optimization, Gradle builds, and building responsive Android apps.
Recent Releases
Version history →Articles about Android (919)
Android 17: What Every Android Developer Should Know in 2026
Anjuka Koralage breaks down Android 17's biggest shift: Google is forcing developers to stop ignoring tablets and foldables. No more opt-outs for resizable windows.
Flutter Too Slow for Images? Rush It With Rust
Amorn Apichattanakul from KBTG just shattered a common Flutter myth: it's not the language that's slow, it's the codec. His benchmark results are eye-opening.
The Mistake That Taught Me to Use Flutter Flavors
Abdelrahman Khalil accidentally shipped a production app pointing to staging servers. That painful mistake led him to master Flutter Flavors—and he's breaking down exactly how to avoid the same fate.
How AI Learned to Investigate Mobile Build Failures Like an Experienced Support Engineer
Archana Indran's team at Salesforce turned years of mobile debugging expertise into AI that investigates build failures like a senior engineer. Eight people now support 60+ repositories with less firefighting.
Tuning Android build nodes for maximum throughput
Wealthfront's Android team cut their CI build times by rethinking how Gradle uses resources on AWS EC2 instances. Turns out, more workers doesn't always mean faster builds.
Building Arrive's Confetti in React Native with Reanimated
Joel Besada from Shopify reveals how they built a delightful confetti animation in React Native that runs at 60 FPS without blocking the JavaScript thread. The secret? Declarative animations that execute entire...
Remote Compose looks promising
Costa Fotiadis from Just Eat Takeaway just tested Google's Remote Compose in production scenarios, and the results are surprisingly good. Could this alpha library finally kill WebViews for server-driven UI?
How a Kotlin compiler plugin cut Android time to first render by 30%
Łukasz Kosmaty from Expo just shipped a compiler plugin that cuts Android app startup time by 30%. No code changes required for developers.
API Testing in Mobile Apps: The Backbone of Digital Experiences
Hafsa Amanulla from PickMe reveals why your beautiful mobile UI means nothing if your APIs are broken. A delayed menu load or failed promo code isn't just annoying—it's a business killer.
Flutter's multiplatform value for agentic development
Michael Thomsen from Google's Flutter team makes a bold claim: AI-driven development works better with a single codebase than platform-specific code. Here's why Flutter might be the secret weapon for agentic wo...
Scaling developer experience: How we improved Android Studio in a large monorepo
Grab's Android team turned 35-minute IDE syncs into a 2-minute flow. Their secret? A clever Gradle trick that required just three lines of code and zero workflow changes for 100+ engineers.
Surviving Production: The Performance Gauntlet
Berkay Özdemir from Getir's Market Discovery Team cut category page load times from 8 seconds to 2 seconds. Then production traffic hit, and everything started crashing.
Never Miss a Critical App Crash Again: Integrating Firebase Crashlytics with Google Chat
Chamod Lakmal shares how discovering hundreds of weekend crashes on Monday morning pushed him to build an automated alert system. No more silent failures destroying your app's reputation while you're offline.
That's a wrap: Everything Flutter at Google Cloud Next
Emma Twersky from Flutter just dropped the biggest news for cross-platform developers: full-stack Dart is here. If you've been context-switching between languages for frontend and backend, this changes everythi...
Beyond Local Rendering: Building a Server-Driven UI System with RemoteCompose
Theekshana Alwis from PickMe built a subscription screen that updates instantly—no app store approval, no waiting. He used RemoteCompose to turn Jetpack Compose UI into a binary format streamed from the server.
Building Shopify POS for Android Using MVVM
Richa Khanna from Shopify reveals how their team migrated a 3.5-year-old Android POS app from competing MVC/MVP architectures to MVVM without a full rewrite.
From GIFs to Lottie: Mastering Lottie Animations in Android with Jetpack Compose
Pavithra Chamod J from PickMe Engineering makes the case: if you're still using GIFs for Android animations, you're leaving performance and control on the table. Lottie animations offer vector-based crispness, ...
Flutter vs. Kotlin Multiplatform: 2026 Architecture Guide
The article content appears to be just promotional copy for Shorebird rather than the actual Flutter vs. Kotlin Multiplatform architecture guide. Without the real article content, I cannot provide an accurate s...
Stop Using FLAG_SECURE — Here's a Better Way to Protect Sensitive Screens in Jetpack Compose
Sanath Sajeeva Kumara from PickMe Engineering reveals why FLAG_SECURE is killing your Android app's UX. Banking apps block screenshots entirely—but there's a smarter way to hide sensitive data in Recent Apps wh...
Flutter vs .NET MAUI in 2026: Architecture, Tooling, CI/CD, and Migration Trade-offs
The article content appears to be just a promotional snippet for Shorebird's integration tool, not the full Flutter vs .NET MAUI comparison promised in the title. Without the actual article content, I cannot pr...
Revolutionizing Mobile App Profiling: From Days to Minutes with Automation using ADB (Android Debug Bridge) & Python
Mithila Karunarathne and Manuja Hapuarachchi from PickMe turned a days-long performance profiling bottleneck into a minutes-long automated process. Their solution? Python scripts, ADB commands, and a clever wra...
Performance for Everyone
Lin Wang from Pinterest's Android Performance team just solved a problem that costs most teams two engineer-weeks per feature: measuring user-perceived latency. Their solution? Make it completely automatic.
From Idea to Reality: Behind Flip Slip, 3-Finger Capture, and the Pinch-to-Zoom PoC #MAKEbyKBank
Weera Youngnam from KBTG turned a personal pain point into a feature that caught executive attention. His journey from gyroscope experiments to production reveals how small PoCs can create outsized impact.
How Dart and Flutter are thinking about AI in 2026
Mariam Hasnany from Google's Flutter team just dropped their AI strategy, and the numbers reveal a massive shift: 79% of Flutter developers already use AI assistants. But there's a trust problem.
Headless Screenshot Testing in Thumbtack's Android Apps
Brian Terczynski from Thumbtack reveals how they ditched emulators entirely for their 1,500+ screenshot tests. The result? Tests that run at unit test speed and actually gate code merges.
Performance as a Core Product Feature
Snapchat treats performance as a core product feature, not just a requirement. Their custom tracing system catches regressions that off-the-shelf tools completely miss.
Maestro at Scale: Architecting a Deterministic Mobile Test Platform
Emre Erkek from Getir reveals how they turned Maestro from a simple testing tool into a deterministic platform that runs thousands of tests daily. Most teams fail at E2E testing scale—here's the architecture th...
Making AI Write Android Code Our Way: A Practical Guide to Agent Skills
Pierrick CAEN from Medium's Android team reveals how they turned AI coding assistants from generic code generators into team-specific experts. The secret? Teaching the AI their exact conventions through structu...
Expo UI in SDK 55: Jetpack Compose now available for React Native apps
Kudo Chien, Nishan Bende, and Aleksander Mikucki from Expo just made it possible to use native SwiftUI and Jetpack Compose components directly in React Native apps. No JavaScript reimplementation required.
How to Make Your Mobile App Faster
Essam Fahmy from Deloitte reveals why 70% of users abandon slow apps—and shares the exact techniques that cut load times by up to 70%. If your mobile team treats performance as an afterthought, this breakdown w...
Enabling R8 optimization at scale with AI-assisted debugging
Grab's Android team cracked a 6-year problem that stumped multiple attempts: enabling R8 optimization across 9 million lines of code. One engineer led the charge, and AI was the secret weapon.
Reclaiming Terabytes: Optimizing Android image caching with TLRU
Grab's engineering team just reclaimed terabytes of storage across 100+ million Android devices without breaking a sweat. Their secret? A clever twist on a decades-old caching algorithm.
Patch Me If You Can: AI Codemods for Secure-by-Default Android Apps
Pascal Hartig explores how Meta's Product Security team uses AI to automatically patch security vulnerabilities across millions of lines of Android code. The challenge? Doing this at scale without disrupting th...
WTH is Remote Compose
Remote Compose sounds like science fiction: your server sends actual drawing operations to Android devices, and they render natively. No JSON schemas, no component mapping, just pure Compose instructions over t...
Level Up: Test Sidekick and Prepare for Upcoming Program Milestones
Maru Ahues Bouza from Google Play reveals how 600 million monthly gamers are now using Play Games Services, with Level Up features driving 2.5 billion incremental game installs in 2025 alone.
Remote Compose: Back to the Future
Arman Chatikyan just built a visual UI editor that deploys Android screens without app updates. Remote Compose lets you design layouts in a browser and render them natively on device—no WebViews, no JSON schema...
Instagram and Facebook Deliver Instant App Experiences on Android
Mayuri Khinvasara Khabya reveals how Meta eliminated video loading delays for billions of users. The secret? A complete rethinking of how Android apps prepare content before you even tap play.
Elevating AI-assisted Android development and improving LLMs with Android Bench
Matthew McCullough from Android just dropped something the AI coding world needed: a public leaderboard showing which LLMs actually understand Android development. No more guessing which AI assistant knows Jetp...
How WHOOP Decreased Excessive Partial Wake Lock Sessions by Over 90%
WHOOP's Android team turned a Google Play compliance warning into a masterclass in battery optimization. Their excessive wake lock sessions dropped from 15% to under 1% in just 30 days.
Ship Your Compose UI Updates in Seconds
Aditya Shinde (Developer Chunk) tackles the 24-48 hour app store review cycle that kills mobile iteration speed. His solution: Server-Driven UI that updates Compose screens without deployments.
Memory Leaks You Probably Missed in Jetpack Compose
Mahmut Yuce from Getir destroys the myth that declarative UI means no memory leaks. Compose apps leak differently, and these patterns are sneakier than the old View system bugs.
Supercharge your Android development with 6 expert tips for Gemini in Android Studio
Trevor Johns from Google just dropped 6 expert tips for using Gemini AI in Android Studio, and they're a game-changer for how we build apps. These aren't basic prompting tricks—this is how Google engineers and ...
Silent Killer in Production: Memory Leak Diagnosis and Solution Journey
Taha Selim Aksakal from Teknasyon Engineering tracked down a memory leak that silently grew RAM usage from 160MB to critical levels over 12 hours—with zero traffic. The culprit? An unexpected interaction betwee...
Kotlin Enums: Replace values() with entries
Ilyas Ipek from Teknasyon reveals a hidden performance killer in Kotlin that most Android devs hit daily. That innocent enum.values() call? It's silently allocating and cloning arrays every single time.
A Simple Guide to Version Catalog Implementation in Android
ilyas ipek from Teknasyon breaks down how Android teams can finally escape dependency management chaos. The solution? A single TOML file that centralizes every library version across your entire project.
Using Gradle in Android: Build Variants, Build Types, and Manifest Placeholders
Enes İğneci from Teknasyon Engineering breaks down the Gradle configuration secrets that separate amateur Android builds from production-ready apps. If you've ever shipped the wrong API key to production, this ...
The 5 Numbers That Decide Whether Users Keep or Delete Your App
Half of all users uninstall an app after a single performance issue. A peer-reviewed paper puts specific numbers on the thresholds that separate apps people keep from apps they delete.
Vision-Based Mobile App Testing CLI for Claude Code
Revyl introduces a CLI tool that gives Claude Code vision-based mobile app testing capabilities. The tool interacts with apps like a human — no scripts, selectors, or element IDs needed — enabling a full write-...
The Second Beta of Android 17
Matthew McCullough just dropped Android 17 Beta 2, and it's packed with APIs that fundamentally change how apps handle privacy, cross-device experiences, and local network access. This isn't just another increm...
The Intelligent OS: Making AI agents more helpful for Android apps
Matthew McCullough from Android reveals how Google is fundamentally changing app interaction: users won't open apps anymore, they'll just ask AI to handle tasks for them.
How a Learning Project Became Our Modern Mobile Test Framework
What started as one engineer's Appium 1 learning project at trivago became their production mobile test framework for six years. Here's how they evolved it through Appium 2 and 3 without another ground-up rewri...
Under the Hood: Android 17's Lock-Free MessageQueue
Shai Barack and Charles Munger from Android reveal how a 20-year-old lock in MessageQueue was secretly causing UI jank across the entire Android ecosystem. Their solution? A lock-free data structure that's up t...
Breaking Down Mobile App Vulnerabilities
Jija Bhattacharya from Guardsquare breaks down recent mobile app vulnerabilities that exposed millions of users. These weren't sophisticated exploits—they were logic flaws and authorization failures hiding in p...
Agent Device: AI-Native Mobile Automation for iOS and Android
Callstack just released a CLI tool that finally lets AI agents actually test mobile apps. No more agents that can write code but can't click a button.
App Resizability and Multi-Window Support
Miguel Montemayor from Android drops a major compatibility requirement: the developer opt-out for resizability is gone in Android 17. If your app still assumes portrait-only or fixed aspect ratios, you've got w...
Android 17 First Beta Release
Google just killed Developer Previews. Android 17 Beta 1 introduces a continuous Canary channel that delivers features as soon as they pass internal testing, no more waiting for quarterly drops.
React Native Version 0.84 Release
React Native 0.84 just dropped with automatic performance wins for every app. No migration needed, no config changes required—just faster execution and lower memory usage out of the box.
Automating Memory Leak Detection with AI
Ricardo Marin from Grindr turned memory leak debugging from a 2-4 hour manual slog into a minutes-long automated process. The secret? Recognizing that memory leaks are pattern-matching problems, not creative on...
How We Release the Spotify App: A Look Under the Hood (Part 2)
Spotify's release managers were drowning in Jira tabs, juggling dozens of tickets while fielding Slack questions. One dashboard changed everything.
Why Your Mobile App Is Not as Secure as You Think
Pavithra Chamod J from PickMe Engineering drops a hard truth: your mobile app's security measures are probably theater. Once an APK hits a rooted device, all bets are off.
Common Mistakes When Shifting Left in Mobile Testing
Russell Morley reveals why most mobile teams think they're shifting left in testing, but are actually just moving their pain earlier in the pipeline.
Migrating to Jetpack Compose: How AI Accelerated Our Journey at Caper
Instacart's Caper team turned a multi-quarter Fragment-to-Compose migration into a dramatically faster effort using AI coding assistants.
Protecting Your GraphQL
Stas Kravets shares how a Python GraphQL service's P99 timeout detection was so unreliable that only P50 requests actually timed out as expected. The culprit? IO operations under heavy load can bring down your ...
Java to Kotlin Conversion Comes to Visual Studio Code
JetBrains brings Java-to-Kotlin code conversion to Visual Studio Code through the Kotlin language plugin, extending a feature previously exclusive to IntelliJ IDEA. Developers can now convert Java files or snip...
How Automated Prompt Optimization Unlocks Quality Gains for ML Kit's GenAI Prompt API
Google just solved one of mobile AI's biggest challenges: how do you customize foundation models for your app without breaking device constraints? Their answer might surprise you—it's not fine-tuning.
Beyond the smartphone: How JioHotstar optimized its UX for foldables and tablets
Prateek Batra from Google reveals how JioHotstar transformed their streaming app for 400 million users. The secret? Treating tablets and foldables as first-class citizens, not just stretched phones.
Kotlin Intrinsics on Android
Rahul Ravikumar reveals how Android's tooling has been quietly carrying the weight of Kotlin's type safety. Every null check, every parameter validation adds overhead that pure Kotlin apps don't actually need.
Your Development Environment Is a Security Risk: What Every Android Developer Needs to Know
Sanath Sajeeva Kumara from PickMe reveals a chilling truth: simply opening a project in Android Studio can steal your credentials before you click a single button. A 2026 incident proves your IDE might be your ...
The Silent Performance Killer: How a Single Lambda Nearly Destroyed My Compose UI
Raditya Gumay from GoTo discovered his navigation UI was recomposing 60+ times per minute. The culprit? A single lambda inside a data class that looked completely innocent.
Update Your Projects for AGP 9
Márton Braun from JetBrains drops a critical update: Android Gradle Plugin 9.0 just landed with breaking changes that will affect every Kotlin Android project. Time to update your build configs.
Supercharging Mobile Development with Permanent Work Trees and Claude
Umair Ali from ZAR Engineering turned weeks of mobile development work into single days by eliminating a hidden productivity killer. The secret? Rethinking how Git worktrees interact with AI coding assistants.
LLM Flexibility and Agent Mode Improvements
Sandhya Mohan and Trevor Johns from Google just dropped a game-changer: Android Studio now lets you use ANY LLM—OpenAI, Claude, or even local models—to power your AI coding assistant.
Compose Multiplatform 1.10.0
Elvira Mustafina from JetBrains just dropped Compose Multiplatform 1.10.0, and it's solving one of the most annoying pain points in cross-platform development. Three different @Preview annotations? Gone.
NavEntryScope: The missing scope in Android Hilt
Luca from Mercari's Logistics team hit a wall: multiple ViewModels on one screen needed to share data, but Hilt's built-in scopes forced them into Singleton hell with manual cleanup. So they built their own sco...
The Journey to Compose Hot Reload 1.0.0
Sebastian Sellmair and Azat Abdullin from JetBrains reveal how they built Compose Hot Reload 1.0.0—a zero-config tool that lets you update Kotlin UI code instantly while preserving app state. The engineering be...
Project Butter: A Journey for App Performance Improvement
Gojek's Android app was taking 14.35 seconds to launch. With 500+ modules and millions of lines of code, something had to change.
Unlock Native Power in Flutter Part 2
Flutter developers: still treating native integration like a black box? You're leaving serious performance on the table.
From PNGs to GIFs: Mastering Animated Images in Android with Coil
Pavithra Chamod J from PickMe Engineering tackles a common Android performance trap: GIFs that look great but silently drain memory and tank your UI responsiveness.
HashMap and Set Performance Optimization in Android Kotlin
Using List.contains() instead of Set.contains() in your Android app? You might be making it 900x slower than it needs to be.
Mastering Location Services in Mobile Apps — A Guide for Android (Jetpack Compose) & iOS (SwiftUI)
Pavithra Chamod J from PickMe Engineering breaks down the biggest challenge in mobile dev: making location services work seamlessly across Android and iOS without draining batteries or violating privacy.
Unlock Native Power in Flutter Part 1
Flutter's cross-platform magic hits a wall when you need native APIs. Here's how to bridge that gap without losing your mind.
Demystifying user journeys: Revolutionizing troubleshooting with auto tracking
Ever tried debugging a mobile app crash without knowing what the user actually did? You're flying blind.
JioHotstar Android App — Road to 99.9% CFUR
JioHotstar pushed their Android app from 99.5% to 99.8% crash-free rate by hunting down invisible memory killers. Here's how they did it.
The ViewModel Manager Pattern: How We Tamed a 2000+ Line ViewModel Into Clean, Testable Code
Chamod Lakmal from PickMe Engineering turned a 2,100-line ViewModel nightmare into 350 lines of clean, testable code. His team's test coverage jumped from 12% to 87%, and onboarding time dropped from 2 weeks to...
Building a Production-Ready Custom Slider in Jetpack Compose: A Deep Dive into Haptic Feedback, Snapping Logic, and Custom Theming
Chamod Lakmal from PickMe Engineering built a slider that users actually *feel*. Most custom sliders look good but feel dead—this one snaps, vibrates, and eliminates float drift with surgical precision.
Adaptive Design: Moving Beyond Mobile-Only Apps
Fahd Imtiaz from Google's Android team reveals a stark reality: tablet and foldable users spend 9-14x more on apps than phone-only users. The mobile-only era is officially over.
How Mobile Development Teams Use Kotlin in 2025
José Luis González, a JetBrains-certified Kotlin Trainer, reveals the production bugs that still plague mobile teams in 2025. One tiny mistake in exception handling can silently break your entire app's lifecycl...
Exploring the Swift SDK for Android
The Android workgroup just dropped Swift 6.3 SDK nightly previews for Android, and several production apps with millions of downloads are already proving it works at scale.
Kotlin 2.3.0 Released
Kotlin 2.3.0 just dropped with some serious multiplatform firepower. If you're building cross-platform apps, this release fundamentally changes how you work with Swift, Wasm, and native code.
Profiling MLC-LLM's OpenCL Backend on Android: Performance Insights
Running LLMs on Android devices just got a serious performance deep-dive. Callstack profiled MLC-LLM's OpenCL backend to uncover what actually happens when you run local AI on mobile hardware.
Supercharging User Engagement: How Mercari is Using Server-Driven UI to Reduce Time-to-Market
Stefan from Mercari's Growth Platform team reveals how they eliminated app releases for marketing campaigns. Their server-driven UI solution turned weeks of development into minutes of drag-and-drop configurati...
How AI Is Transforming the Adoption of Secure-by-Default Mobile Frameworks
Meta just shared how they're using AI to automatically fix security vulnerabilities across billions of lines of code. The twist? The AI doesn't need to be perfect to be incredibly useful.
Enhancing Android Security: Stop Malware
Bennet Manuel and Rob Clifford from Google just dropped a security feature so simple it's almost embarrassing we didn't have it sooner: one line of code that blocks malware from reading your app's sensitive dat...
Exploring KotlinX Benchmark Results with Kotlin Notebooks
Filipp Zhinkin and Teodor Irkhin from JetBrains show how staring at raw benchmark tables is costing you insights. Kotlin Notebooks turn those text dumps into interactive visualizations that actually tell a stor...
React Native Version 0.83 Release
React Native 0.83 just dropped with a historic first: zero breaking changes. The team is finally delivering on their promise of predictable, painless upgrades.
Building for Android XR: AI Glasses Development
Matthew McCullough from Google just dropped the toolkit that could make AI glasses actually useful. Developer Preview 3 brings purpose-built libraries for augmented experiences that keep users present in the re...
Android Studio Otter 2 Feature Drop
Sandhya Mohan and Trevor Johns from Google just dropped Android Studio Otter 2, and it's packing Gemini 3 Pro with a 1 million token context window. Your AI coding assistant just got a serious upgrade.
The Complete Guide to Offline-First Architecture in Android
Your Android app crashes when the WiFi drops. Your users' apps shouldn't. Offline-first architecture flips the script: the network becomes optional, not essential.
Building AI Agents In Kotlin Part 3: Under Observation
Denis Domanskii from JetBrains tackles a problem every AI agent developer faces: your agent works, but you can't see what it's doing. When debugging takes hours and costs are invisible, you're flying blind.
Strategic Guide to Migrating Legacy Android Apps from XML to Jetpack Compose
Getir's Android team learned the hard way: migrating millions of users from XML to Jetpack Compose isn't about rewriting screens. It's about avoiding the performance traps that come with mixing old and new.
RemoteCompose: Another Paradigm for Server-Driven UI in Jetpack Compose
Jaewoong Eum explores RemoteCompose, AndroidX's experimental framework that lets you update Android UI layouts without recompiling or redeploying your app. Ship UI changes in minutes instead of weeks.
Core/Core-Impl Pattern: Build-Performance Superpower of DI & Gradle
Your modular Android app is building like a monolith. One shared :core module is killing your build times, even when you change a single private implementation detail.
Mobile App Release Challenges: Why Code Persistence Matters
Daniel Tome from Qantas reveals why mobile releases are fundamentally different: once your code ships to a user's phone, you've lost control of it forever.
The Ultimate Kotlin Multiplatform Watchlist
Ekaterina Petrova curated 10 KotlinConf talks that show how Duolingo, McDonald's, and StoneCo achieved massive scale with Kotlin Multiplatform. Skip the beginner mistakes and learn from teams already shipping t...
Fully Optimized: Wrapping up Performance Spotlight Week
Ben Weiss and Sara Hamilton from Google wrap up Performance Spotlight Week with a roadmap to faster Android apps. Reddit cut ANR errors by 30% with one configuration change.
Raising the bar on battery performance: excessive partial wake locks
Google Play is about to start penalizing apps that drain your users' batteries. Starting March 2026, excessive wake lock usage could get your app buried in search results or flagged with a warning label.
Android Developers Blog: Leveling Guide for your Performance Journey
Google's Android team just dropped a performance framework that meets you where you are. Whether you're a solo dev or leading a performance team, there's a clear path forward.
Behind the Global Launch: Decoding the Android Engineering Strategy for Our New App
Karthi from Mercari's Cross Border team reveals why they chose native Android over Flutter and React Native for their global marketplace launch. The decision wasn't about theory, it was about leveraging 10M+ do...
How Reddit used the R8 optimizer for high impact performance
Ben Weiss from Google shares how Reddit achieved 40% faster cold startup and boosted Play Store ratings in under 2 weeks. The secret? Finally enabling R8 optimizer's full potential.
Orchestrating our UI test suite with Maestro
Doist's Android team faced a brutal reality: their UI test suite was so flaky that only 50% of runs passed on the first try. PRs sat idle for hours waiting for reruns.
Android Engineering Strategy for Global App Launch
Karthi from Mercari's Android team reveals why they ditched cross-platform frameworks for their global marketplace launch. The decision wasn't about native vs. hybrid ideology, it was about leveraging 10M+ down...
Modernizing ExoPlayer with Media3’s Compose UI
For years, video playback was the one piece of Android UI that refused to go fully declarative. That changed when Google shipped Media3's Compose UI module.
Deeper Performance Considerations
Ben Weiss, Breana Tate, and Jossi Wolf from Google just dropped a performance goldmine: Trello cut startup time by 25%, and Meta saw improvements up to 40%. All from one optimization technique most teams haven'...
Android VPAT journey
Slack's Android team tackled a VPAT accessibility audit and found critical gaps that affected screen reader users. Here's what they fixed and why it matters for your mobile app.
Going Universal: From a brownfield React Native and Next.js stack to one Expo app
Gunnar Torfi shares how a single developer maintained 40+ mobile screens AND a full web app by merging them into one universal codebase. No big rewrite required.
Cash Android Moves to Metro
Egor Andreevich just shipped a DI framework migration across 1,500 modules serving tens of millions of users. The build speed improvements? Nearly 60% faster incremental builds.
Use R8 To Shrink, Optimize, and Speed Up Apps
Ben Weiss from Google reveals the single most impactful, low-effort change you can make to Android app performance. Reddit saw 40% faster cold startup and Disney+ cut ANRs by 25% with one configuration tweak.
Android Developers Blog: Get your app on the fast track with Android Performance Spotlight Week!
Google is dedicating an entire week to helping Android developers ship faster apps. If performance has been on your backlog, this is your moment.
Improve your Android App Performance by 10X with Compose Stability
Your Jetpack Compose app might be recomposing 10X more than it needs to. The culprit? Stability.
Making Android WebView 2.5× Faster (And Proving It with Data)
Timur Borgalinov from Uzum Market turned Android WebView from a performance black hole into a predictable, measurable component. His team achieved 2.5× faster load times with data to prove it.
What's New in Flutter 3.38
Kevin Chisholm from Google's Flutter team just dropped Flutter 3.38, and it's packed with the kind of productivity wins developers have been asking for. Dot shorthands alone will save you countless lines of boi...
How Pinterest Cut Android Testing CI Build Times by 36%+
Pinterest's Android CI builds were bleeding 9 minutes per run because one slow test shard held everything hostage. Their fix? Stop counting tests and start counting seconds.
I achieved 0% ANR in my Android app. Spilling beans on how I did it - part 1.
After a year of relentless optimization, one Android dev achieved the impossible: 0% ANR rate in production. Here's how they did it.
Reddit: Making Android Videos Super Fast
Reddit cut video loading time in half on Android. Here's how they did it with ExoPlayer optimization, player pooling, and smart prefetching strategies.
5 Jetpack Compose Tricks That Simplify UI Logic
Anjuka Koralage from PickMe Engineering discovered that migrating to Jetpack Compose wasn't just about replacing XML layouts. It required a complete mental shift in how to think about UI architecture.
Scaling Mobile UI Testing with AI
Trendyol scaled from 4,869 to 10,400 UI tests in under a year — while keeping execution under one hour. Here's how AI became their test generation engine.
Android Clean Architecture: Understanding the Data Layer
Sean Coyle from ASOS breaks down the Data Layer in Android Clean Architecture—the unsung hero that keeps your networking, databases, and caching from bleeding into your business logic.
Migrating from KAPT to KSP: A Complete Guide to Kotlin's Future
Chamod Lakmal from PickMe reveals how switching annotation processors can cut Android build times in half. If you're still using KAPT, you're leaving serious performance gains on the table.
What's New in Swift October 2025
Joe Heck and Dave Lester just dropped the first edition of a new monthly Swift digest, and it's packed with signals that Swift is expanding way beyond iOS. Server-side Swift is heating up with performance gains...
Evaluating Kotlin for Real-World Mobile Projects
Urs Peter, a JetBrains-certified Kotlin trainer, reveals the hidden pitfalls that turn promising Kotlin projects into Java-with-different-syntax nightmares. Most teams waste months writing 'Java-ish Kotlin' ins...
Nightly Swift SDK for Android
Joannis Orlandos just announced something that could reshape mobile development: you can now write Android apps in Swift. After a decade of Swift expanding to cloud, Windows, and browsers, it's finally landing ...
Enhanced Accessibility Gestures for Custom Components on Android
Nicolas Mayer Weiler from leboncoin shows why your 'accessible' Android component might still be failing users. Three stepper implementations, wildly different user experiences.
Performance Optimization for Android XR Devices
Google just dropped a comprehensive guide for Android XR performance optimization, and the stakes are higher than traditional mobile: miss your frame rate target and users get motion sickness, not just frustrat...
Delivering Mobile App Updates Faster
Manoj Kumar Gubba from Mercari's iOS team reveals how they ship mobile updates in just 3-7 days. Most teams take 1-2 weeks, but Mercari's approach cuts that in half while maintaining stability.
How We Deliver Mobile App Updates Faster
Manoj Kumar Gubba from Mercari's iOS team shares how they cut mobile release cycles from weeks to just 3-7 days. Their secret? A combination of trunk-based development and aggressive automation that most teams ...
The Hidden Engine: How QA Powered the Driver App Transformation
Mohomed Nawab reveals how QA became the unsung hero in PickMe's driver app overhaul. Most teams treat testing as a final checkpoint, but this approach flipped the script entirely.
Building Native Trading Charts for Android
The Groww Engineering Team just open-sourced their playbook for building trading charts that render 2,000+ candlesticks at 60fps. No third-party libraries, pure native Android.
How to add native code to your app with Expo Modules
Jacob Clausen from Expo shows how to break free from SDK limitations. Building custom native modules doesn't mean abandoning Expo's developer experience.
Kotlin Multiplatform Contest 2026
Students and recent grads: JetBrains is offering free trips to Munich for building Kotlin Multiplatform projects. The 2026 contest is open now, and the bar might be lower than you think.
Flutter for Enterprises: Everything CTOs and Engineering Leaders Need to Know
Very Good Ventures reveals why global leaders like Disney, Toyota, and BMW are ditching fragmented native development for a single framework. The shift isn't just technical—it's transformational.
React Native Version 0.82 Release
React Native just dropped its most significant release ever. Version 0.82 completely removes the Legacy Architecture, marking what the team calls 'the start of a new era' for mobile development.
Medium Android App — Migrating from Apollo Kotlin 3 to 4: Lessons Learned
Pierrick CAEN from Medium thought upgrading Apollo Kotlin would be straightforward. Instead, it exposed hidden cache issues that had been silently failing for months.
Managing Dependency Hell in a 400-Module Android Project
Erdem Topak from Flink reveals how their Android team scaled from 30 to 437 modules—then discovered 400 unused dependencies silently killing their build times. Here's how they built a custom solution when exist...
Accelerating Mobile App Development at Zalando with Rendering Engine and React Native
Zalando is migrating 90+ screens across iOS and Android to React Native without rebuilding their entire app. Here's how they're pulling it off for 52M+ customers.
Cross-Platform TV Apps with React Native for tvOS, Android TV, and Tizen
Callstack just dropped their Ultimate Guide to React Native TV Development 2026. If you're building streaming apps, this changes the game for cross-platform TV.
How Uber Standardized Mobile Analytics for Cross-Platform Insights
Ben Hjerrild and the Uber Mobile Data Platform team just solved a problem every mobile org faces: analytics chaos. Over 40% of their events had become meaningless custom logs, and iOS/Android were tracking thin...
How Uber Standardized Mobile Analytics for Cross-Platform Insights
Uber runs 50+ mobile apps across iOS and Android. How do you get consistent analytics when every team tracks things differently?
Accelerating our Android apps with Baseline Profiles
Meta just shipped a masterclass in Android performance optimization. Their apps now load up to 40% faster thanks to one underutilized Android feature.
Scaling Swiggy's Mobile Ecosystem [1/n]
Tushar Tayal from Swiggy reveals the hidden complexity behind managing 6+ consumer apps (Snacc, Instamart, Toing, Dineout, Crew) in production. Spoiler: it's not just about shipping faster.
Centralized Dynamic Navigation at Scale: Zero Crashes, Module Independence, Faster Delivery
Aditya Singh from slice engineering solved a problem that haunts every Android team at scale: navigation crashes from circular dependencies. His team hit zero navigation crashes in production with a runtime gra...
Weekly Mobile App Release Process and Deployment Strategy
Jawad Mashhadiea from Flink reveals how his team ships 4 mobile apps every single week with almost zero manual work. The secret? Treating releases like trains, not planes.
Compose Multiplatform 1.9.0 - Compose for Web Beta
Ekaterina Volodko and Alejandra Pedroza Marchena from JetBrains announce a game-changer: Compose Multiplatform for web just hit Beta, powered by Wasm. Your Android Compose skills now work in the browser with mi...
Android 16 QPR2 Beta 2 Release
Android 16 QPR2 Beta 2 is here, and it's time for developers to start testing. Google continues its quarterly platform release cadence with another beta drop.
Debugging Android Connectivity Issues with Metro Bundler
Ever spent hours debugging why your React Native Android app won't connect to Metro during development? You're not alone.
Swift 6.2 Released
Holly Borla from Apple's Swift Core Team just dropped Swift 6.2, and it's tackling the biggest pain point in modern development: making concurrent programming actually approachable. This isn't just another incr...
Building a Modern Android Location Manager: From Legacy Approaches to Clean Architecture Excellence
Chamod Lakmal from PickMe Engineering just open-sourced a LocationManager that turns Android's notoriously messy location APIs into clean, testable code. No more callback hell or mystery crashes.
Improve App Performance With Optimized Resource Shrinking
Johan Bay from Google just dropped a game-changer for Android app size. Apps sharing resources across form factors are seeing 50%+ size reductions with one configuration change.
Migrating Lyft's Android Codebase to Kotlin
Oleksii Chyrkov from Lyft just closed the book on a 7-year migration journey. The final push to eliminate Java from their entire Android codebase revealed some brutal truths about automated tooling.
Optimize your app battery using Android vitals wake lock metric
Google is cracking down on battery-draining apps. Starting March 2026, excessive wake lock usage could get your app demoted in the Play Store or flagged with battery warnings.
Elevating Android Security
Suzanne Frey from Google just announced a major shift in Android's security model. Starting 2026, every app installed on certified Android devices will need a verified developer behind it.
Gemini Nano with On-Device ML Kit and GenAI APIs
Caren Chang, Joanna Huang, and Chengji Yan from Google reveal how they're making Gemini Nano v3 940 tokens/second fast while keeping quality consistent across devices. The secret? LoRA adapters and rigorous eva...
Building a Maestro Plugin for IntelliJ: From Mobile Test Automation to IDE Excellence
Trendyol's mobile team turned Maestro test automation from a terminal-only workflow into a full-featured IDE experience. Writing YAML tests without syntax highlighting, validation, or auto-complete was slowing ...
64-bit app compatibility for Google TV and Android TV
Fahad Durrani from Google drops a major requirement: TV apps need 64-bit support by August 2026. If your app has native code, you've got work to do.
Securing API Keys and Sensitive Data in Android Apps: A Practical, Modern Guide
Numesh Dilusha from PickMe Engineering drops a hard truth: Android malware surged 40% in 2024/2025, and your hardcoded API keys are basically an open invitation. This comprehensive guide shows exactly how to lo...
Test on a fleet of physical devices with Android Device Streaming, now with Android Partner Device Labs
Adarsh Fernando and Grant Yang from Google just made device fragmentation testing dramatically easier. No more buying dozens of phones to test your Android app.
Android Developers Blog: What’s new in the Jetpack Compose August ’25 release
The Jetpack Compose team just dropped their August '25 release, and it's packed with updates Android devs have been waiting for.
React Native Version 0.81 Release
React Native 0.81 just dropped with a game-changing performance boost: iOS builds up to 10x faster. But there's a catch that'll affect every Android developer.
Media3 1.8.0 Release: New Features and Improvements
Toni Heidenreich from Google just dropped Media3 1.8.0, and the scrubbing mode alone will change how your users interact with video playback. This release packs performance wins that directly impact user experi...
The Android Memory Revolution That Will Make Your Apps Fast
Chamod Lakmal from PickMe reveals why November 1, 2025 marks Android's biggest performance shift since Android 5.0. Apps could launch 40% faster, but most developers aren't ready.
The evolution of native engineering at Tripadvisor: Part 2
Tripadvisor's mobile team was drowning in nearly-identical UI components. Their server-driven UI framework promised speed but delivered the opposite.
Recomposition Is Not a Bug — You Are
If your Jetpack Compose UI is recomposing like crazy, the framework isn't broken—your code is fighting it instead of working with it.
From Biology to Code: How Android’s Zygote Enables Fast and Efficient App Launching
Ever wonder why Android apps launch so fast? The answer lies in a clever biological hack borrowed from how human cells divide.
Pincode Migration Journey with Compose Multiplatform
Chethan N from PhonePe's Pincode team just shared how they migrated their Android seller app to desktop using Compose Multiplatform. The twist? They kept both codebases running in the same repo during migration...
Our Buildkite Brings All the Devs to the Yard: (Re)Building Reddit Mobile CI in 2025
Reddit's mobile team had zero professional CI experience. Then they cut build times in half and transformed developer happiness.
Accelerating on-device ML on Meta’s apps with ExecuTorch
Meta just shared how they moved billions of daily users to their new on-device ML framework. The performance gains are substantial.
Rebranding on Android Apps: Behind the Scenes
Hannah Olukoye from mobile.de reveals how her team pulled off a complete Android rebrand in just 2 weeks—but only after tackling 8 years of technical debt first.
Debugging OOMs: SQLite Query Optimization
Brian Terczynski from Thumbtack tracked down a brutal Android OOM bug that was crashing apps at startup—and the culprit wasn't a memory leak. It was hiding in plain sight: their SQLite queries.
Jetpack Compose State Management: The Three Musketeers
Mohanad Abdelaziz from Deloitte tackles the question every Android dev asks: how do I improve state management this time? His answer: three distinct patterns, each with serious trade-offs.
Building a Dynamic Curve Spinner in Jetpack Compose
Sanath Sajeeva Kumara from PickMe just dropped a stunning tutorial that turns mathematical curves into mesmerizing loading animations. Who knew trigonometry could look this good in production Android apps?
UNISOC Leverages ADPF for Enhanced Android Gaming Performance | Developer stories | Android Developers
UNISOC just proved that Android's Dynamic Performance Framework (ADPF) isn't just theory. Their implementation with LineageW delivered a 50% frame rate boost in real-world testing.
Link Inlining Optimization for Android
Alex Dadukin from Just Eat Takeaway reveals how inline links in Android apps create a localization nightmare. Their team evaluated three common approaches and found them all fundamentally broken.
Agentic AI Integration in Android Studio with Gemini
Sandhya Mohan and Jose Alcérreca from Google just dropped Agent Mode for Gemini in Android Studio. This isn't another code completion tool—it's an AI that creates execution plans, makes multi-file changes, and ...
Stop Storing Secrets Wrong: The Right Way to Encrypt Data in Android
Chamod Lakmal from PickMe reveals why most Android apps store secrets dangerously wrong. Hardcoded keys and SharedPreferences encryption are fundamentally broken, leaving user data vulnerable to extraction.
Server-driven UI SDK on Android: how RevenueCat enables remote paywalls without app updates
Jaewoong Eum breaks down how RevenueCat's Android SDK lets product teams update paywall screens remotely—no app releases, no developer bottlenecks, no waiting on store reviews.
Duolingo's Android Performance Case Study and DAU Growth
Chenglai Huang and Michael Huang from Duolingo reveal how 39% of entry-level Android users were abandoning their app before it even loaded. Their fix? A masterclass in performance optimization that saved hundre...
Android 16 Release Announcement
Matthew McCullough from Google just dropped Android 16, and it's not just another annual release. Google is fundamentally changing how Android evolves with a new two-release-per-year SDK strategy.
The Story of Pixels
Piyal Madushanka from PickMe breaks down why that 500x500px button looks completely different on your Pixel vs. your Samsung. The answer lies in understanding three deceptively simple concepts that every mobile...
Testing Lottie Animations in Jetpack Compose
Jordi Coll Marin from Just Eat Takeaway reveals a testing challenge most Android devs overlook: how do you verify a Lottie animation actually completes when it only runs for half a second?
Cross-Platform Web3 dApps With React Native
Callstack explores how React Native is becoming the unexpected bridge between traditional mobile development and the Web3 ecosystem. Building decentralized apps just got a lot more practical.
Swift at Apple: Migrating Password Monitoring Service from Java
Apple's Password Monitoring team just shared something remarkable: they rewrote their entire backend service from Java to Swift and the results are staggering. This isn't a client-side migration story—it's bill...
The Journey to Faster Android Builds: How Slice Slashed Build Times
Ankit Sharma from slice reveals how his team reclaimed 167 hours of developer time annually by tackling Android build performance head-on. Their systematic approach turned a productivity blocker into a competit...
How We Decomposed Tinder's Monolith
Maxwell Elliott and Connor Wybranowski from Tinder turned what seemed like a 12-year project into a 6-month sprint. Their secret? Letting the compiler do the heavy lifting instead of manually untangling 150,000...
Declarative vs Imperative Programming: A Practical Comparison with XML and Compose
Chamod Lakmal from PickMe Engineering breaks down the imperative vs declarative debate with side-by-side Android code that makes the difference crystal clear.
On-Device Generative AI APIs: ML Kit and Gemini Nano
Caren Chang, Chengji Yan, and Taj Darra from Google just made on-device AI dramatically easier for Android developers. Four new ML Kit APIs let you integrate Gemini Nano without any prompt engineering or fine-t...
Peacock Optimizes Streaming with Jetpack Compose
NBCUniversal's Peacock just proved that building for foldables isn't just about supporting bigger screens. It's about future-proofing your entire streaming experience.
Real-time audio processing with Expo and native code
Braulio Ríos built a production-ready guitar tuner app using React Native that processes audio in real-time with near-native performance. Here's how he combined TypeScript, C++, Swift, and Kotlin to solve a pro...
Preparing Apps for 16KB Page Size Devices
Dan Brown from Google Play just dropped a requirement that'll affect every Android app targeting Android 15+. Starting November 1st, 2025, your app must support 16 KB page sizes or risk breaking on next-gen dev...
Android Network Observability: Shedding Light on Performance Blind Spots
Shaurya Jaiswal from Slice reveals how his team cut app launch API calls from 28 to 12, improving startup time by 40%. The secret? A custom observability system that exposes what Firebase Performance Monitoring...
How We Slashed Android Startup Time by 30% with Baseline Profiles
Duolingo's Android team cut startup time by 30% with baseline profiles. But the path from 'easy setup' to production was anything but smooth.
How Dropbox leverages testing to maintain high level of trust at scale
Dropbox maintains 1B+ downloads with under 30 Android engineers. Their secret? A testing strategy that evolved from complete chaos to surgical precision.
How to Reduce Android Studio Memory Usage
Android Studio eating your RAM? You're not alone. A few strategic tweaks can reclaim gigabytes and slash build times by 20-50%.
Enhancing Android Development Productivity with Convention Plugins
Fauzi Mubarok from IDN Engineering tackles a problem every Android team hits: copy-pasting the same build configurations across dozens of modules. His solution? Convention plugins that centralize it all.
Netflix App Testing At Scale
Netflix runs 1,000+ device tests on every PR for an app with 1M lines of code across 400+ modules. Here's how they evolved their testing strategy over 14 years.
Android Migration from XML to Jetpack Compose
Gary Dameme from Yubo just wrapped up migrating 70% of their social app to Jetpack Compose. The results? 20% better rendering performance and 30% less code in their main feature.
Tenant-Specific Theming with Material 3 in Jetpack Compose
Chamod Lakmal from PickMe Engineering just cracked white-label theming for Android apps. If you're building B2B platforms that need per-tenant branding, this implementation guide is gold.
Android Migration: From XML to Jetpack Compose - Part 2
Gary Dameme from Yubo shares hard-won lessons from migrating a production Android app to Jetpack Compose. Spoiler: rewriting XML is the easy part.
Mastering SOLID Principles in Android with Jetpack Compose & Kotlin
Chamod Lakmal from PickMe Engineering breaks down SOLID principles with real Jetpack Compose code examples. No theory fluff—just practical refactoring patterns that actually work in production Android apps.
Android Migration: From XML to Jetpack Compose - Part 1
Gary Dameme from Yubo shares how they're migrating a nearly 10-year-old Android app from XML to Jetpack Compose. Spoiler: it's not just about swapping UI frameworks.
A Behind-the-Scenes Look at How We Release the Spotify App (Part 1)
Spotify ships weekly releases to 675 million users across iOS and Android. Here's how they balance speed with quality at that scale.
Revamping PickMe Passenger Android App: Moving from Java/XML to Kotlin/Compose
Numesh Dilusha from PickMe reveals how a team of just 5 developers completely rewrote their ride-hailing app in record time. The secret? Strategic modularization and keeping the UI design unchanged.
Design Android build variants for Multi-Tenant
Piyal Madushanka from PickMe Engineering tackles a problem every scaling mobile team faces: how do you manage multiple regional apps without drowning in build configuration chaos?
Building Scalable Jetpack Compose Android Applications with a Multi-Module Architecture
Chamod Lakmal from PickMe breaks down how multi-module architecture transformed their Android development. If your Compose app is becoming a monolithic nightmare, this is your roadmap out.
Make WebViews edge-to-edge in Android
Android 16 just made edge-to-edge mandatory for all apps. If your WebViews aren't ready, they'll break on launch.
How server-driven UI is revolutionizing mobile app experiences
Careem was losing weeks waiting for app releases just to update a banner. During Ramadan, when customer behavior shifts daily, that delay was killing their food business.
Skyscanner’s journey to effective observability
Skyscanner was drowning in observability chaos: multiple vendors, fragmented tools, and engineers losing confidence in their ability to debug production issues.
Clean Architecture for Android Applications
Chamod Lakmal from PickMe breaks down Clean Architecture for Android with a practical folder structure that actually makes sense. If your codebase feels like spaghetti, this is your roadmap out.
State Management in Jetpack Compose
Chamod Lakmal from PickMe Engineering breaks down why basic `remember` and `mutableStateOf` won't cut it for production Jetpack Compose apps. Here's what actually scales.
Android Clean Architecture: Understanding the Domain Layer
Sean Coyle from ASOS breaks down the most misunderstood layer in Clean Architecture. If your ViewModels are bloated and your business logic is scattered everywhere, this deep dive into the Domain Layer will cha...
Battery Optimization in Android Jetpack Compose
Chamod Lakmal from PickMe Engineering reveals how unnecessary recompositions in Jetpack Compose can silently drain your users' batteries. Most Android devs are missing these optimization wins.
Future for Java: Virtual Thread
Woowa Brothers needed to handle massive I/O in their authentication gateway. Java's traditional threads couldn't keep up, so they explored virtual threads.
How Meta is Translating Its Java Codebase to Kotlin
Pascal Hartig from Meta sits down with the engineers tackling one of Android's biggest migration challenges: converting tens of millions of lines of Java to Kotlin. How do you pull off a transformation this mas...
Mobile Payments SDK General Availability and Terminal API Features
Square just launched their Mobile Payments SDK to GA with a twist: your phone becomes the card reader. No external hardware required for contactless payments.
Profiling Native Code in React Native with Tracy
Profiling React Native apps just got a serious upgrade. Tracy, the real-time profiler that game developers swear by, now works seamlessly with React Native's native layer.
The Quest to Understand Metric Movements
Your key metric just tanked 20%. Was it a code change? An OS update? A data pipeline bug? Pinterest built a platform to answer this question at scale.
How we reduced manual regression tests by 70% using AI tools
Duolingo's QA team cut manual regression testing by 70% using AI. Here's how they made it work at scale.
10 Reasons To Choose Flutter for Your Mobile App
Very Good Ventures makes the case for Flutter with data that's hard to ignore: 93% developer satisfaction and 24% user growth in a single year. If you're evaluating cross-platform frameworks, this breakdown cut...
The Next Chapter in Swift Build Technologies
Owen Voorhees from Apple just dropped a bombshell: the build engine that powers millions of App Store apps is now open source. This changes everything for Swift developers working across platforms.
Building 3D Animations in Mobile Apps
Yağız Gürgül from Wise Engineering reveals how they shipped interactive 3D animations in their mobile app—and crushed a 324 MB asset bundle down to just 3.7 MB. The secret? A clever web-based approach that deli...
Adopting Jetpack Compose for Etsy’s Android App
Etsy just rewrote major parts of their Android app with Jetpack Compose and saw conversion rates climb. Here's how they pulled off the migration without breaking production.
How We Reduced the WINK+ Android App to Less Than 10MB
A solo Android engineer at WINK+ crushed their APK down to under 8MB while competitors bloat past 20MB with fewer features. Here's the playbook.
Bringing Jetpack Compose to Instagram for Android
Instagram just migrated to Jetpack Compose. But when you're operating at Meta scale, you can't just import some AARs and start coding.
Orientation and Resizability Changes in Android 16
Maru Ahues Bouza from Google just dropped a bombshell: Android 16 is killing off portrait-only and fixed-orientation apps on large screens. If your app locks orientation, you've got work to do.
Code Optimization with ProGuard and R8 in Android
Enes İğneci from Teknasyon Engineering breaks down why your Android app might be bloated, slow, and vulnerable. The fix? Two powerful code optimization tools most developers underutilize.
React Native Version 0.77 Release
React Native 0.77 just dropped with over 1,061 commits from 161 contributors. The team is bringing web-standard CSS properties to mobile and making a bold move to Swift for iOS templates.
RxJava in 2025: Relevance and Best Practices for Android Development
Muhammad Zuhriyan Sauqi from IDN Engineering makes a bold case: RxJava isn't dead in 2025, it's just misunderstood. While Kotlin Coroutines dominate modern Android development, he argues there's still a compell...
Android Developers Blog: Performance Class helps Google Maps deliver premium experiences
Google Maps just pulled back the curtain on how they deliver smooth experiences across Android's massive device fragmentation. The secret? Performance Class.
Simplify In-App Purchases on Android with RevenueCat and Kotlin
Husein Murtadlo from IDN Engineering shows how RevenueCat can replace Google Play Billing Library's complexity with just a few lines of Kotlin code. If you've ever wrestled with in-app purchase implementation, ...
Leading a project to migrate hundreds of screens to SwiftUI/Jetpack Compose from UIKit/AndroidView in Merpay
Merpay just migrated hundreds of payment screens to modern UI frameworks while keeping their app running in production. Here's how they managed a 2-year engineering transformation.
Kotlin Multiplatform Development and Compose
The article content appears to be missing, but based on the title and page structure, this looks like a Callstack piece on Kotlin Multiplatform and Compose. Unfortunately, the actual article text didn't load.
Translating Java to Kotlin at Scale
Meta is rewriting 10 million lines of perfectly good Java code into Kotlin. Why would anyone do that?
How we sped up Android and iOS builds by 68% on CI
Duolingo's engineers were stuck waiting 50 minutes for every CI build. That's hundreds of hours wasted every week across the team.
Boosting App Performance: Strategies to Optimize Network Requests
Coinbase cut network requests by 64% during traffic spikes without degrading user experience. Here's how they engineered their way to massive scale.
Reddit Improved App Startup Speed Using Baseline Profiles & R8
Reddit just proved that Android's built-in performance tools can deliver massive wins without custom engineering. Their app startup improvements are eye-opening.
How We Enhanced Our Android App’s Startup Time by Over 50%
Back Market slashed their Android app startup time by 60%. Here's the engineering breakdown that made it happen.
How We Engineered a Scalable Architecture to Power Videos, Social, and Picks in Our Delivery App
Victoria Perelló and Hernán Malatini from Glovo shipped three major social features in 90 days—without breaking their app. Their secret? An architecture that let 10+ teams work in parallel without stepping on e...
Upgrading React Native in Brownfield Applications
Upgrading React Native in a brownfield app isn't just harder than a greenfield project. It's a completely different beast that most teams underestimate.
Measuring Product Impact Without A/B Testing: How Discord Used the Synthetic Control Method for Voice Messages
Discord wanted to measure Voice Messages impact, but A/B testing would break the feature. Network effects meant users in control groups couldn't receive voice messages from treatment users.
Why is there so much obsession on app size reduction?
Why do engineering teams obsess over shaving megabytes off their apps? A Reddit thread reveals the hidden costs of bloat.
Integrating React Native into Existing Applications
Callstack reveals how to add React Native to existing native apps without a full rewrite. This brownfield approach is changing how engineering teams think about cross-platform development.
How We Reduced GrabX SDK Initialisation Time
Grab's SDK was taking 4 minutes to initialize with 400MB of config data. That's a cold start problem that kills autoscaling.
Building a Floating View in Android: A Practical Approach - Final Part
Fauzi Mubarok from IDN Engineering wraps up his floating view series with the polish that separates good Android UIs from great ones. That magnetic snap-to-edge effect you see in TikTok and Shopee? Here's how t...
Building a Floating View in Android: A Practical Approach - Part 1
Fauzi Mubarok from IDN Engineering breaks down how to build those addictive floating reward bubbles you see in TikTok and Shopee. Turns out, creating smooth overlay views in Android requires some clever system-...
Brownfield Development with React Native
Callstack reveals how brownfield React Native integration lets you modernize native apps without the dreaded full rewrite. This collection of insights shows exactly how companies like Shopify and Zalando pulled...
Flutter Myths: Clearing Up Common Misconceptions
Still think Flutter is too slow for production apps? Very Good Ventures just dismantled the 6 biggest myths holding teams back from adopting this cross-platform framework.
Building a Compose Design System at Scale
Matias Isella from Glovo reveals how they built a Compose Design System that serves multiple apps at scale—without being locked into Material Design. Their API decisions could save you months of architectural h...
How server-driven UI keeps our shop fresh
Duolingo ships UI changes in minutes, not weeks. Their server-driven UI system bypasses app store releases entirely.
Jetpack Compose Performance
Hasan Kuşçu from Trendyol reveals why your Jetpack Compose app might be recomposing way more than it should. The culprit? Compose treats most classes as unstable by default.
Extending Detekt for Android Code Quality
Costa Fotiadis from Just Eat Takeaway shows how custom Detekt rules caught edge-to-edge violations before they hit production. No more relying on reviewers to remember Android 15's breaking changes.
Enabling Out Of The Box Performance Insights In The Unity SDK
Stefan Jandl from Sentry just cracked a tough problem: how do you auto-instrument performance monitoring in Unity games without asking developers to write a single line of code?
Android SDK Release Update
Matthew McCullough just dropped a bombshell: Android is ditching its annual release cycle. If you're building for Android, your entire 2025 planning timeline just changed.
What's New in Gemini in Android
Sandhya Mohan from Google just dropped the biggest Gemini in Android Studio update since launch. If you're still manually writing commit messages and test scenarios, this changes everything.
How we reduced peak memory and CPU usage of the product configuration management SDK
Grab's configuration management SDK was crushing service performance with memory spikes and CPU throttling. 98% of services were loading 100x more data than they actually needed.
Enhance App Performance and Business with Real User Monitoring (RUM)
Real User Monitoring isn't just a performance tool. It's the bridge between what you think users experience and what actually happens in production.
Tales of Performance Engineering
Diego Parra from Mercado Libre's Performance Engineering team just shared how they slashed API response times by 60% with one strategic fix. The culprit? Regex compilations eating 40% of CPU cycles.
Precision in Motion: Deep Learning for Smarter ETA Predictions
DoorDash handles 2 billion orders annually, and every ETA prediction matters. Their old tree-based models couldn't keep up with the complexity.
Gemini Nano Experimental Access Available on Android
Taj Darra just announced that Google is opening Gemini Nano to all Android developers. On-device AI just became accessible for production-ready mobile apps.
Mobile App Launch Profiling
Andrew McKnight from Sentry just solved one of mobile performance monitoring's biggest blind spots. Ever wondered what's actually happening in your app before main() even gets called?
5 Mobile app optimization tips to enhance user engagement
Your mobile app's first impression isn't just important. It's everything. The Fullstory Team breaks down why most teams are optimizing blind, relying on assumptions instead of actual user behavior data.
Snappy, Not Crappy: An Android Health & Performance Journey
Your Android app might be bleeding users before they even finish launching it. Performance isn't a feature anymore. It's table stakes.
Announcing Swift 6
Holly Borla from Apple's Swift Core Team announces Swift 6, bringing data-race safety from opt-in warnings to compiler-enforced guarantees. After a decade of development, Swift now targets embedded systems, ser...
Android 15 Release to AOSP
Android 15 just dropped to AOSP, and Google's bringing some serious developer firepower. Edge-to-edge enforcement, 16KB page size support, and a complete overhaul of how we handle app profiling on user devices.
Tophat: Crafting a Delightful Mobile Developer Experience
Shopify doubled developer productivity by turning the most tedious part of mobile development into a one-click experience.
How We Improved Our 1Weather Android App Cold Startup Time by Over 70%
The 1Weather team slashed their Android app cold start time by over 70% and reduced slow starts by 24%. Here's the systematic approach that got them there.
Speed Up Your Android Tests: Gradle Plugin for Unit Test Filtering
Wealthfront's Android team had a problem: their test suite was slowing down every PR merge. Running all tests on every change wasn't scaling.
Building the Pincode Android App with Jetpack Compose
The Pincode Android Team at PhonePe built an entire app with Jetpack Compose while it was still maturing. 2.5 million downloads later, they're sharing what actually worked and what didn't.
App Health Through Metric-Aware Rollouts
DoorDash was shipping experiments that crashed their app and degraded performance for weeks before anyone could identify the cause. They built an automated system to catch issues before customers feel the pain.
Unfold's Modern Mobile Release Process And The Subtle Art Of Making Them Boring
Alan Cooke from Squarespace reveals how Unfold turned chaotic mobile releases into boring background events. Boring is the goal, and here's why that's brilliant.
Ready for Swift 6
Dave Verwer and Sven A. Schmidt from Swift Package Index reveal that 43% of Swift packages are already data race safe. The Swift 6 migration is happening faster than expected.
Good Practices When Creating E2E Tests at Skeelo
Skeelo's QA team built a scalable E2E testing framework using Python + Appium. Here's the architecture that keeps their mobile tests maintainable as the app grows.
How Baseline Profiles Improve Skeelo Android App Performance
Skeelo's Android app had a problem: too many users were experiencing painfully slow startup times. They needed a solution that didn't require rewriting their entire codebase.
Developers for adidas CONFIRMED build features 30% faster using Jetpack Compose
Nick Butcher and Florina Muntenescu from Google reveal how adidas CONFIRMED slashed feature development time by 30% with a single technology shift. The results speak for themselves: happier users, fewer crashes...
How We Optimized Concurrency Using Node.js at Skeelo
Skeelo's engineering team achieved a 30% performance boost by rethinking one simple thing: when NOT to use await in Node.js.
What's New in the Mobile Payments SDK Beta
Square just launched the successor to their Reader SDK after 6 years, and KIOS was among the first to build with it. Their integration story reveals what's actually possible when payment SDKs are built for deve...
Boost Your Android App’s Performance with Baseline Profiles
Delivery Hero's Android team achieved 30% performance gains without writing a single line of new feature code. Here's how baseline profiles transformed their app.
Drawing a Ribbon Background in Compose
Anton Begeima from OkCupid shows how to create eye-catching ribbon backgrounds in Jetpack Compose using custom Path drawing. No third-party libraries needed—just pure Canvas API magic.
Transitioning to Appcraft: Evolution of Zalando’s Server-Driven UI Framework
Zalando powers 13 dynamic mobile pages without waiting for app store releases. Here's how they built a server-driven UI framework that ships changes same-day.
Java Is Dead Long Live Kotlin Part 2
Emily Fujimoto from Thumbtack just closed the book on a 6-year migration journey. The final push to eliminate Java from their Android codebase revealed lessons every mobile team needs to hear.
Enhancing Chat Performance on PhonePe Android - Part 2
Ayush Bagaria from PhonePe reveals how CPU profiling and thread optimization slashed chat load times by 30%. Most Android apps are sitting on similar performance gains.
DragonCrawl: Generative AI for High-Quality Mobile Testing
Uber's mobile testing was broken. Engineers spent 30-40% of their time maintaining test scripts that broke with every UI change. So they built an AI that tests apps like a human would.
Introducing Trio | Part III
Airbnb just shipped 230+ production screens with their new Compose architecture. Here's how they solved the hardest problem: making screens talk to each other.
Should I continue learning Flutter or start with KMM?
Flutter or KMM? If you're building cross-platform mobile apps in 2024, this question is keeping a lot of engineering leaders up at night.
Building AI-powered games with Gemini and Flutter
Very Good Ventures took the stage at Google Cloud Next 2024 to show how Flutter and Gemini are changing the game development playbook. Literally.
How we transformed the AirAsia Superapp into AirAsia Move — A Tech Journey\!
Caeser Bakabulindi from AirAsia reveals how a complete app rewrite slashed launch time by 35% and cut memory usage by 120MB. The secret? Jetpack Compose and a bold commitment to building a product, not just fea...
Introducing Trio | Part II
Airbnb's Android team just solved one of mobile architecture's hardest problems: navigation in massive, modularized apps. Their solution? Store navigation state right in the ViewModel.
Introducing Trio | Part I
Airbnb just open-sourced the architecture powering a significant portion of their Android app. After 2+ years of development, Trio is their answer to Fragment-based pain points.
Bringing HDR photo support to Instagram and Threads
Meta serves trillions of image downloads daily. Now Instagram and Threads are pushing the boundaries of mobile photo quality with HDR support.
incident.io harnesses the power of native modules and CNG
Dan Kelly explores how incident.io shipped a production mobile app in months without hiring a single mobile engineer. Their secret? Leaning hard into Expo's 'golden path.'
Macramé: Untangling the Knot on the Etsy Android Listing Screen
Etsy's Android listing screen had 4,000+ lines of code in a single file, single-digit test coverage, and 200 experiments running. Something had to give.
Enhancing Chat Performance on PhonePe Android - Part 1
Ayush Bagaria from PhonePe set out to cut chat latency by 50% in their P2P payment flow. The journey taught some expensive lessons about the gap between POC results and production reality.
Performance Measurement for Native Apps
Supriyo Mondal from Walmart reveals how they shaved 500-600ms off view rendering times by changing a single boolean flag. Sometimes the biggest performance wins come from the smallest tweaks.
Real-Time Communication on Android with AWS AppSync GraphQL
Arvel Alana from IDN Engineering breaks down how to add real-time features to Android apps without the WebSocket headaches. AWS AppSync handles the heavy lifting while you focus on the user experience.
How dogfooding helps us build a better Duolingo
Duolingo catches critical bugs before users ever see them. Their secret? 70% of employees actively use internal builds daily.
Refining Compose API for Design Systems
Yury from Bumble Tech tackles a problem every Android team faces: how do you build design system components that are both easy to use and flexible enough for edge cases?
Pareto Principle in Action: Boosting Performance with Smart Caching
CRED Engineering faced a nightmare: caching every query combination would require 45,768+ TB of storage. Here's how they got it down to 135 MB.
Benefits of Flutter for Cross-Platform App Development
Still running separate iOS and Android teams in 2024? The economics of native development just stopped making sense. Here's why Flutter is quietly becoming the default choice for engineering leaders who need to...
How We Improved Performance Score Accuracy
Edward Gou from Sentry reveals why their performance scores were lying to developers. A single slow pageload could tank your entire app's score, even when 99% of users had fast experiences.
Learn About the Leading Multi-Platform Frameworks
Still running separate iOS and Android teams in 2024? VGV breaks down why Flutter and React Native are replacing the old playbook for multi-platform development.
Optimising the Swiggy Restaurant App
Swiggy's restaurant app was crashing under load. Their React Native app couldn't handle more than 100 orders on budget devices, and they needed to scale 10x.
Slashing Lead Times by 30%: The Impact of Using Explicit Types in JVM
alexxozo from Glovo's engineering team discovered that a single line of code change slashed their build time by 30%. The culprit? Java's type inference struggling with large Map definitions.
Leveraging Generative AI in Your Android Apps
Dave Burke, VP of Engineering at Google, just dropped the playbook for integrating Gemini AI into Android apps. If you've been waiting for the right moment to add generative AI to your mobile stack, this is it.
Evolution of Bid Notifications to Courier
Gojek was sending 97-99% of driver bid notifications successfully. They rewrote the system and hit 99.9%+.
Micro-Feature Architecture for Mobile
Delivery Hero tackled a tough problem: how do you let 15+ teams build features independently for the same mobile screen without chaos?
A New Foundation for AI on Android
Dave Burke from Google just dropped the blueprint for running foundation models directly on your Android device. No cloud required, no network dependency, just pure on-device AI.
Evolution of Translations Management for Android
Yaroslav T from Revolut reveals how managing translations for 6 apps across 330 modules and 33 languages evolved from a simple library to a custom Gradle plugin. The journey took 7 years and countless iteration...
Reddit Recap: State of Mobile Platforms Edition (2023)
Reddit's mobile team just dropped their brutally honest take on iOS vs Android development in 2023. Spoiler: neither platform makes it easy.
Performance monitoring in Mercari mobile apps
Mercari rewrote their entire mobile app and faced a nightmare scenario: millions of users reporting the new version felt slower than the old one.
Android Developers Blog: NordVPN boosted the speed of its login user flow by 60% using Baseline Profiles
NordVPN just made their Android app 60% faster in one critical flow. The fix? A performance feature most Android devs still aren't using.
How DoorDash Manages Mobile Releases
Manolo Sañudo from DoorDash reveals how their iOS team ships weekly releases without breaking things. Spoiler: it's not about having more QA people.
Distributed Job Scheduler: Zero to 20k Concurrent Jobs
Glance built a distributed job scheduler that went from zero to handling 20,000+ concurrent jobs. Here's how they did it with Redis and smart architecture.
Building Your Next Casual Game With Flutter
Zoey Fan from Google's Flutter team just dropped a major update to their Casual Games Toolkit—and it's packed with templates that could save you weeks of setup time. If you've been curious about Flutter for gam...
Optimising Scrolling Performance with Litho
Swiggy's Android team was hitting scroll performance walls with traditional RecyclerViews. Their solution? Facebook's Litho framework, which delivered massive performance gains.
Leveraging Flink to Detect User Sessions and Engage DoorDash Consumers with Real-Time Notifications
DoorDash was sending cart abandonment notifications to users who were still actively browsing. The result? Annoying customers and missing conversion opportunities.
Accelerate Your Android Development: Essential Tips to Minimize Gradle Build Time (Part II of II)
Rolgalan from Glovo's Mobile Platform team reveals how they slashed Android build times through hardware and JVM tuning. Most teams are leaving massive performance gains on the table by ignoring these fundament...
How Meta built Threads in 5 months
Meta shipped Threads to 100M users in 5 days. The timeline? Just 5 months from idea to launch.
Real-Time Analytics for Mobile App Crashes using Apache Pinot
Uber deploys 11,000 code changes weekly. How do they catch crashes before users notice? They built Healthline, powered by Apache Pinot.
The What, Why, and How of Mastering App Size
Spotify's mobile apps generated 930+ petabytes of network traffic in 2022, equivalent to 65,000 tons of CO2 emissions. Their solution? A comprehensive app size management system that's both environmentally cons...
Accelerate Your Android Development: Top Techniques to Reduce Gradle Build Time (Part I of II)
Rolgalan from Glovo cut Android build times by 75%—from 1 hour down to 15 minutes. Here's how they did it, and why most teams are leaving massive performance gains on the table.
GoTransit: Unifying Our Mobility Products with Public Transportation
Gojek discovered that 11 of their top destinations in Jakarta weren't restaurants or malls. They were train stations and bus hubs.
Scaling Glance Game Centre to Support 100 Million Daily Active Users
Glance Game Centre serves millions of daily users playing HTML5 games on their lock screens. Their leaderboard system hit a wall with a single-node MongoDB struggling under 1000 QPS.
Media on Swiggy's Mobile Apps
Swiggy's mobile apps serve millions of users across wildly different devices and network conditions. How do you deliver high-quality images and videos without killing performance or burning through bandwidth co...
From 30 Minutes Down to 10: Taming our Monolith's CI Build Times
Cash App's monolith CI builds were taking 30 minutes at p50. Developers were stuck waiting through multiple build cycles just to get a green merge.
Making Direct Messages Reliable and Fast
Instagram DMs handle millions of messages per second. How do they make every send feel instant, even when your network drops mid-tap?
Modularizing Our Driver App for Android: Benefits & Way Ahead (Part-3)
Gojek's driver app modularization cut CI build times by 33% and unlocked team-level productivity metrics. Here's what they learned from breaking up their monolith.
Glance TV Optimization Part 1: Shrinking APK Size by 65%
Glance TV's engineering team faced a brutal challenge: their Android TV app was 20.6MB and eating 515MB of RAM. Here's how they fixed it.
Making Swiggy's Order Tracking a Magical Experience
Swiggy discovered customers were anxiously checking their order tracking screen multiple times during the 20-45 minute delivery window. Their solution? Let users track orders while doing literally anything else...
The Android Backstage of Mercado Libre Warehouses
Victor Oliveira from Mercado Libre reveals how they ditched traditional Android architecture to scale their warehouse operations across Latin America. The problem? Too many duplicate screens, too much boilerpla...
Os Bastidores Android Dos Armazéns Do Mercado Livre
Victor Oliveira from Mercado Libre reveals how their warehouse management system went from drowning in duplicate code to shipping features without app updates. The secret? A bold architectural bet that changed ...
Building a Better Instagram App for Android
Instagram cut their Android app startup time in half and reduced APK size by 50%. Here's how they did it.
Inside Slack: Overcoming Challenges to Craft a Seamless Mobile App
Slack's mobile team faces a unique challenge: users expect desktop-level performance while bouncing between subway tunnels and spotty cellular networks.
Why Mobile Application Performance Testing Is Key to App Success
Amazon's QA team just shared their playbook for mobile performance testing. Here's what separates apps that scale from those that crash.
Slack Behind the Scenes: Overcoming Key Challenges to Craft a Seamless Mobile App
Tracy Stampfli from Slack reveals how her infrastructure team keeps 120+ mobile engineers shipping features without breaking the app. The secret? Treating mobile connectivity like a first-class problem, not an ...
Native End-to-End Testing for Mobile Apps
Joana Melo from Klarna turned a 6-month diversity program into company-wide impact by solving a pain point that had defeated multiple engineering teams before her.
A Rundown of Android Intent Selectors: Building Intents Correctly
Jack Webb from ASOS discovered a common Android Intent mistake that could trap users in infinite loops. Most developers use ACTION_VIEW to open URLs, but there's a critical flaw hiding in plain sight.
Server-Driven UI Architecture for Mobile Apps
Daniel Tome from Qantas explores how Server-Driven UI lets you update your mobile app's interface without waiting for App Store approval. It's basically bringing HTML's flexibility to native apps.
Optimizing CI/CD Efficiency with Git Hooks
Bevan Christian from IDN Engineering breaks down a CI/CD cost problem most teams ignore: GitHub Actions bills can hit $1,440/month for a 10-person team doing basic PR testing. His solution? Move testing local w...
Making Swiggy Buttery Smooth
Swiggy's iOS team cut their app launch time in half and reduced app size by 8MB. Here's how they did it.
Improving Comment Rendering on Android
Instagram's Android team faced a brutal problem: complex captions with emojis and links were causing 50ms UI thread blocks, making scrolling feel janky even on flagship devices.
Exploring the Rotate Button Composable in Jetpack Compose
Sanath Sajeeva Kumara from PickMe breaks down a custom Jetpack Compose button that rotates in 3D space and morphs colors on touch. This isn't your standard Material button.
Poko goes multiplatform
Drew Hamilton just took Poko, the Kotlin compiler plugin that generates equals/hashCode/toString, fully multiplatform. This solves a real API compatibility headache for library authors.
Quick Preview Compose Multiplatform in Our Existing Project
Sinj Menarucho from KBTG took Compose Multiplatform for iOS (still in Alpha) for a test drive with an existing native project. His verdict? Promising, but not production-ready yet.
Supercharging Continuous Integration with Gradle
Paul Hundal and Pablo Baxter from Square reveal how they slashed CI analysis time by 80% on a monorepo with 5,000+ modules. Their secret? Getting creative with Gradle's internals.
Enhancing App Performance: A Practical Approach at Glance
Glance powers lockscreens for millions across India, Indonesia, Latin America, and Japan. Zero tolerance for lag when you're the first thing users see.
Slaying the Monolith: API Implementation and Modularization in Android
Sean Coyle from ASOS reveals how they're dismantling their Android monolith using a pattern that slashes recompile times. The secret? Splitting every feature into API and implementation modules.
Customising Android App UI with Themes
Maxim Kostenko from Revolut reveals how they built one of the most customizable Android apps on the market. Their approach goes far beyond basic dark mode—and it required reverse-engineering Android's own frame...
Fast Auto-Generated Streaming JSON Parsing for Android
Instagram's Android app had a JSON parsing problem that was killing their News feed performance. Traditional solutions weren't cutting it.
Login & Signup Result Improvement in Swiggy Android App
Swiggy was losing users during login and signup despite optimizing app size and launch time. The culprit? Manual data entry errors.
Being first to market with rideshare on CarPlay and Android Auto
Michael Ramdatt and the Lyft team reveal how they beat every competitor to launch the first rideshare app on CarPlay and Android Auto. The secret? Building their own mapping platform from scratch.
Bringing HDR video to Reels
Meta just solved a problem most users never notice: making HDR video look great on billions of devices with wildly different capabilities.
Multiplatform image loading: Coil 3.0
Colin White reveals how Coil 3.0 is breaking free from Android to become truly multiplatform. The image loading library that powers countless Android apps is making a bold leap to iOS, web, and desktop.
Enhancing User Experience: Reducing ANR Rates with DataStore in Skeelo Android App
Skeelo's Android app was freezing on users. The culprit? SharedPreferences blocking the main thread and triggering ANR errors.
Preventing App Performance Degradation Due to Sudden Ride Demand Spikes
Grab's engineering team faced a brutal problem: rain in Southeast Asia would crash their entire ride-hailing system. When demand spiked locally, users everywhere suffered.
Native UI and multiplatform Compose with Redwood
Cash App just open-sourced Redwood, their answer to the multiplatform UI problem. Unlike other solutions, it renders with native UI toolkits instead of recreating them.
Optimising Page Load Times in Flipkart Mobile App
Flipkart shaved 30% off page load times in their React Native app with 500M weekly visits. Here's how they did it without rewriting everything.
How we lowered Fullstory for Android’s impact on app startup time by 75% thanks to Emerge Tools
Fullstory got a wake-up call when a prospect flagged a 6% startup time increase from their Android SDK. Even when disabled, the SDK was adding 100ms to app launches.
Keeping Up with Android App Size Growth
Square manages hundreds of mobile engineers in a monorepo, all contributing to apps that must stay under Google Play's 150 MB limit. How do they prevent app bloat at scale?
Page not found - Engineering at Meta
Meta's Engineering blog just hit a 404. Sometimes even the biggest tech companies deal with broken links and content migrations.
Flow testing with Turbine
Cash App just open-sourced Turbine 1.0, solving one of the trickiest parts of Kotlin coroutines: testing Flows without the headache.
Modularizing Our Driver App for Android: The Process (Part-2)
The article link appears to be broken or unavailable. This is a 404 error page from Medium, not the actual Gojek engineering article about modularizing their Android driver app.
Beautiful Performant Android UI
Instagram built a full-screen video viewer that needed to feel buttery smooth on every Android device. Here's how they made animations delightful without killing performance.
Improving Video Cache Hits on Swiggy Apps
Swiggy was bleeding money on video bandwidth costs. The culprit? Videos being requested at 270px, 272px, 275px... you get the idea.
Unit Testing Android Apps with MockK
Emre Muhammet Engin from Getir tackles a truth bomb: if your code is hard to test, your design probably sucks. His deep dive into MockK shows Android developers how to fix that.
Distributed Load Testing Using Locust
Glance's engineering team scaled their load testing from basic scripts to a full Kubernetes-powered distributed system. Here's how they did it with Locust.
Benchmarking your Mobile App with Rooted Android Private Devices and AWS Device Farm | Front-End Web & Mobile
AWS Device Farm now supports rooted Android devices, unlocking granular performance benchmarking that was previously impossible at scale.
Kotlin Multiplatform Money Formatter
Patrick Tyska and Terry Yiu from Cash App reveal how the same $1,000 needs to display four different ways across their app. Their solution? Kotlin Multiplatform to consolidate 10 separate money formatters into ...
Using Gradle Enterprise to Detect Configuration Regressions in an Android Gradle Build
Premise's mobile team caught a sneaky 3x build time regression that only showed up in CI. Here's how they hunted it down using Gradle Enterprise.
Testing Android UI Performance Part 2
You found the jank in your Android app. Now what? Most teams stop at identifying the problem—but that's only half the battle.
Network Latency Issues in Mobile Apps
Anatole Beuzon and Bowen Chen from Datadog turned what seemed like a simple deployment alert into a months-long debugging odyssey. What they uncovered reveals how deceptively complex network latency issues can ...
Android App Performance and Optimization
70% of users expect apps to launch in 3 seconds. 63% will abandon yours if it takes more than 5.
How We Improved Testing Processes Using Ephemeral Environment
Swiggy was missing production deadlines because their UAT environments were constantly unstable or unavailable. Sound familiar?
Testing Android UI Performance
Glance's engineering team serves 100M+ users where visual experience is everything. When UI performance drops, users notice immediately—and they leave.
Improving API Response Time with Java Multi-Threading
Pepperfry's engineering team cut API response times by parallelizing requests. Here's how they used Java multi-threading to handle scale without blocking.
How Server Driven UI is Helping Frontend Engineers Scale Impact
Robinhood was taking weeks and multiple engineers just to make minor UI tweaks. Their Server Driven UI platform cut that to hours with one engineer.
Cork: Thumbtack's Android UI Framework
Dominic Zirbel from Thumbtack reveals how they modernized 300+ Android screens without a complete rewrite. Their new framework cut code by 30% while maintaining production stability.
2023 Google Mobile Ads Updates for Flutter
Timothy Hoang from Google just dropped major updates to Flutter's mobile ads plugin. If you've been writing platform code just to customize native ads, that pain point is officially solved.
Modularizing Our Driver App for Android: The Need (Part-1)
Gojek's Android driver app was drowning: 30-minute CI builds, 10-minute local builds, and a team that had outgrown its monolithic codebase. Something had to give.
Building an Open Source Carefree Android Disk Cache
Instagram's disk cache was causing more crashes than any other component in their Android app. The culprit? A well-intentioned open source library that made error handling a developer nightmare.
Migrating from XML to Jetpack Compose in an MVVM Android Project
Jyoti Sheoran from Getir shares how her team successfully migrated their multi-module MVVM Android app from XML to Jetpack Compose without breaking production. The secret? Their decoupled architecture made grad...
How We Improved Our Android App Cold Start Time by 53%
Swiggy's Android team cut cold start time by 53% in three months. Here's the playbook that drove a 2.2% conversion lift.
Photo Picker API Across Android Versions
Yacine Rezgui from Google just solved one of Android's biggest photo picker headaches. Developers can now ship a single, permission-free implementation that works all the way back to KitKat.
How We Built User Interaction Tracking For Jetpack Compose
Markus Hintersteiner from Sentry reveals how they cracked a tricky problem: tracking user interactions in Jetpack Compose without cluttering developers' code or killing performance.
Supercharge your (Android) terminal experience
Jack Webb from ASOS turned his Android team into terminal power users. His secret? A toolkit that slashes thousands of keystrokes daily and makes complex git operations feel effortless.
Why xHE-AAC is being embraced at Meta
Meta serves billions of users with wildly inconsistent audio uploads. Their solution? A codec that adapts audio quality in real time without burning in compression.
How we built the Favourites feature on the Airasia superapp
Joojo Dadzebo Amoquandoh Dontoh from AirAsia reveals how a simple heart icon became a complex engineering challenge. Building a favorites feature across multiple lines of business meant solving data synchroniza...
Measuring Render Performance with Jetpack Compose
Premise's Android team put Jetpack Compose 1.0 through rigorous performance testing before adopting it in production. The results? Surprising insights about render times, cold starts, and optimization strategie...
Load Testing for 2022 Spotify Wrapped
Spotify Wrapped serves 150M+ users in a single morning. How do you load test for that kind of thundering herd?
Enhancing Our Android App's Launch Performance
Pepperfry's Android app launches 130,000+ times daily. Every millisecond of delay risks losing customers at the door.
How Swiggy Uses In-App Update API for Better App Adoption
Swiggy got 700,000 users to update their app in one week without sending them to the Play Store. Here's how they did it.
Android Developers Blog: Mercari reduces 355K lines of code, a 69% difference, by rebuilding with Jetpack Compose
Mercari just deleted 355,000 lines of code from their Android app. And it works better than ever.
Building Wear OS apps with Flutter: A very good guide
Flutter on your wrist? Very Good Ventures proves it's not just possible but production-ready. After shipping a real Wear OS game, they've cracked the code on building smartwatch apps with Flutter.
The Fundamentals of Android Development at Revolut
Revolut's Android team ships features to 25+ million customers every Tuesday at 9am sharp. Here's how 100+ engineers coordinate releases across 70 autonomous teams without QA.
Lens Performance Toolkit
Snap's Lens Performance Toolkit has been sunset, but its replacement Mobile Monitor offers AR developers something better. Here's what changed and why it matters for your lens performance.
Mobile Monitor
Snap's Lens Studio just gave AR developers a powerful weapon against performance issues. If your lenses are failing submission due to slow activation or low FPS, this tool is your answer.
Mobile Lens Profiler: Case Study
Snap's engineering team just dropped a masterclass in mobile performance debugging. Ever wonder why your AR lens stutters on the first frame?
Performance Optimization Guide
Snap's AR Lenses reach millions, but performance issues can kill engagement before users even see your creation. Here's how Snap ensures their AR experiences work across every device.
From Snail to Sonic: How Baseline Profiles Supercharged Meetup's Android App
Meetup cut their Android app startup time by 36% without writing much code. Here's how a simple Google technology delivered massive performance gains.
The Journey to Server Driven UI At Lyft Bikes and Scooters
Lyft Bikes & Scooters was drowning in complexity: 3 vehicle types, multiple markets, and endless switch statements. Their solution? Move the UI logic to the server.
App Modularization and Module Lazy Loading at Instagram and Beyond
Instagram's app was getting bloated. More engineers, more features, slower cold starts, and ballooning app size threatened the lean experience users loved.
Building a Multi-Pipeline CI Setup for Running Automated Tests in GitLab
Gojek's engineering team cracked a common CI/CD headache: how do you run automated tests from a separate repo without creating pipeline chaos?
ShareChat addresses Jank issues to increase feed scrolling by 60% | Developer stories | Android Developers
ShareChat cut janky frames by 75% and boosted feed scrolling by 60%. Here's how they debugged their way to a 4.3-star rating.
Handling Multiple Caches in App
Swiggy's mobile team faced a common problem: juggling disk caches, LRU caches, and databases without creating a maintenance nightmare. Here's their elegant solution.
Getting Started With Jetpack Compose
Lazar Nikolov from Sentry explores Jetpack Compose, Google's declarative UI toolkit that's already powering 160 of the top 1,000 Android apps. If you're still building with XML Views, this deep dive shows what ...
MVI Architecture Pattern in Android
Jyoti Sheoran breaks down MVI architecture with a complete Jetpack Compose implementation that actually makes sense. No theory overload, just practical code you can use today.
Get you your Android Performance Score with Flashlight
BAM just launched Flashlight, a Lighthouse-inspired tool that finally brings performance scoring to mobile apps. Android developers now have a standardized way to measure app performance.
React Native 0.71 RC1 Android Outage Postmortem
A single character in a Gradle config file took down Android builds for every React Native version simultaneously. Here's how the React Native team handled a 4-day global outage.
Gradle Incremental Test Runner
Swiggy's Android team was stuck in a painful cycle: rebasing PRs, waiting hours for full test suites to run, then doing it all over again. One frustrated engineer decided to fix it over a weekend.
Detecting Android Memory Leaks in Production
Lyft discovered memory leaks affecting only 1% of users—issues that would never show up in local testing. Here's how they built a production monitoring system to catch what profiling tools miss.
Balancing Performance and Security with Android Baseline Profiles and DexGuard
Here's a performance optimization problem most Android teams don't see coming: your security tooling might be silently breaking your baseline profiles. Guardsquare just solved it.
Nested Scroll with Jetpack Compose
Syntia from Blibli.com tackles one of Jetpack Compose's most frustrating gotchas: the dreaded nested scroll crash. If you've ever hit that 'infinity maximum height constraints' error, this one's for you.
Android Studio Electric Eel Release Celebration
Roger Hu from Square reveals how Android Studio Electric Eel slashed their sync times by 60%. For a team managing 3,000+ Gradle subprojects, that's not just faster—it's 1,600 hours of developer time saved annua...
Lottie vs Rive: Optimizing Mobile App Animation
Animations can make or break your app's performance. Choosing between Lottie and Rive isn't just about features: it's about understanding the tradeoffs that impact your users' experience.
GoTransit: Unifying Our Mobility Products with Public Transportation
The article link appears to be broken or unavailable. I cannot access the content about GoTransit's mobility integration.
How to Stop Worrying About Image Freshness and Reduce the Image Network Traffic
Delivery Hero was burning through 9TB of image data daily. Their apps were sluggish, their network costs were astronomical, and users were waiting too long for images to load.
Optimizing Testing for Server-Driven Mobile Development at Strava
Strava's Android team hit a wall: testing server-driven UI meant wrestling with Charles Proxy crashes, EOF errors, and 3-4 minute build times. An intern decided to fix it.
Screen Response Time: A Critical Metric for User Experience
OkCredit reduced frozen frames by 40% by obsessing over a metric most Android teams ignore: screen response time.
Fan-tastic Search for Blazing Fast Results
Swiggy's search feature was a mess: 2,000+ lines in a single ViewModel, monolithic XML files, and performance issues. Time for a complete rewrite.
Saving 5,400 Hours a Year: Developer Productivity with Gradle
Paul Hundal from Square's Mobile Developer Experience team reveals how one Gradle feature saved their Android team the equivalent of watching 60 football games worth of waiting time. The ROI? $1.1 million annua...
Reddit Recap: State of Mobile Platforms Edition (2022)
Reddit's mobile team just dropped their unfiltered take on iOS vs Android development in 2022. Spoiler: both platforms have some explaining to do.
Mobile The Future Is Declarative
Lazar Nikolov explores why Android and iOS are finally catching up to React Native and Flutter. The shift to declarative UI is reshaping native mobile development.
EfficientFormer: Vision Transformers at MobileNet Speed
Snap Research just proved that Vision Transformers can run as fast as MobileNet on actual mobile devices. Yes, really.
Mercado Libre Android app is on a diet: Dynamic Features
Rodrigo Pintos from Mercado Libre reveals how they're tackling a massive problem: keeping 120 million active users happy while their app keeps growing. Their solution? Put the app on a diet.
Rewriting the Network Connection Layer in Our Android Apps
Zomato's Android app was slow. Their network layer was the bottleneck, costing them speed, bandwidth, and user patience.
Swiggy App on Diet
Swiggy slashed their Android app size by 22.6% in just one day. Here's how they did it without the usual complexity.
Retrofitting null-safety onto Java at Meta
Meta tackled the billion-dollar mistake: NullPointerExceptions causing 27% of their Android crashes. Here's how they retrofitted null-safety onto millions of lines of Java without rewriting everything.
OKLayoutInflater
OkCredit's Android team was hitting a wall: complex XML layouts were causing frozen frames and ANRs. AndroidX's AsyncLayoutInflater wasn't cutting it.
How We Sped Up Zipline Hot Reload
Cash App's team turned a frustrating 20-second hot reload into a blazing 2.7 seconds. Here's how they systematically hunted down every millisecond.
Applying DORA Metrics to Mobile Development
rolgalan from Glovo tackles a question mobile teams keep asking: how do you actually use DORA metrics when you don't control app distribution? Turns out, the answer isn't to abandon them—it's to adapt them.
Improving the Player on Android
Pinterest's Android team faced a unique challenge: playing multiple videos simultaneously in a two-column grid without killing performance. Here's how they optimized ExoPlayer to handle it.
Elevating the Swiggy Experience with Voice Search on Android
Swiggy shipped voice search in just 2 weeks and now drives 2,500+ incremental orders daily. Here's how they built it fast without sacrificing quality.
Improving Auto Pause for Everyone
Strava's engineering team faced a deceptively hard problem: how do you automatically detect when a runner stops moving without draining their battery or showing the wrong pace?
6 Lessons Learned from Optimizing the Performance of a Node.js Service
Klarna's A/B testing platform needed single-digit millisecond latency at 99.9%. Their Node.js service was spiking to seconds under load.
Nuestra aplicación Android está a dieta: ¡Dynamic Features!
Rodrigo Pintos from Mercado Libre reveals how they tackled a critical problem: keeping 120M active users from uninstalling their app due to storage constraints. Their solution? Putting their Android app on a di...
Announcing Multiplatform Paging
Veyndan Stuart from Cash App just open-sourced a solution to one of mobile development's most annoying problems: writing pagination logic twice for Android and iOS.
Scaling Mobile Device Management
Uber's Client Platform Engineering team faced a massive challenge: rolling out MDM to 20,000+ employees across hundreds of global offices where standard Apple enrollment wouldn't work everywhere.
Measuring Android App Performance with Profileable Builds
Yi Yang from Google reveals why your Android performance measurements might be completely wrong. Debug builds can show 2-3x worse performance than what users actually experience.
Strategies and Tools for Performing Migrations on Platform
Spotify migrated 2,200+ mobile components and moved their entire iOS/Android codebase to Bazel across 100+ squads. Here's how they survived the chaos.
From zero to 10 million lines of Kotlin
Meta just migrated 10+ million lines of Android code from Java to Kotlin across Facebook, Instagram, and Messenger. Here's how they automated the impossible.
Planting Trees One Ride at a Time
Gojek turned ride-hailing into climate action with a simple toggle. One developer said it best: 'For the first time in my life, writing code generated physical outputs.'
Debugging High Latency in the Market Store
Grab's ML feature store went from 200ms to 2 second latency. The culprit? A single line of code in an async library.
Introducing Nibel: A Navigation Library for Adopting Jetpack Compose in Fragment-Based Apps | by Pavlo Stavytskyi | Turo Engineering | Medium
Turo open-sourced Nibel, their solution to the messy problem of migrating fragment-based Android apps to Jetpack Compose without breaking everything.
Detecting App Cloning & Location Spoofing on Android
Swiggy discovered 8% of their delivery drivers were running cloned apps and spoofing GPS locations. This was breaking their live order tracking system and creating chaos for customers.
How We Reduced Our ANR by Three Times
OkCredit slashed their ANR rate by 67% and cold startup time by 70%. Here's how they debugged one of Android's most frustrating problems.
Our Android App Has Been Eating but Shedding Weight
Zomato's Android app was 23MB to download and hogging up to 700MB of cache. Their platform team decided to put it on a diet while still shipping new features.
Conquering Our Android Crash Count
Strava thought they had a few hundred crashes per day. Crashlytics revealed they were missing 42,000 crashes per week.
How Meetup Scales Notification Queue Consumers
Meetup sends 8-10 million notifications daily. Their queue kept backing up, sending messages late or not at all.
Recovering from Crashes with Safe Mode
Lyft engineers faced a nightmare scenario: feature flags causing infinite crash loops on app launch, requiring emergency hotfixes and losing revenue. They built Safe Mode to break the cycle.
Image Loading and Optimization on Android
Arlind Hajredinaj from SoundCloud reveals how a beautiful UI redesign accidentally tanked their image loading performance. The fix? A deep dive into Android optimization that every mobile team should read.
Mobile Developer Experience at Slack
Slack's 8-person Mobile DevXp team saved $240K annually just by improving PR notifications. Most companies are massively underinvesting in developer experience.
Removing SMS support from Signal Android (soon)
Nina from Signal just announced they're killing a feature that's been in the Android app since before Signal even existed. After nearly a decade of supporting plaintext SMS alongside encrypted messages, they're...
How Optimizing Memory Management with LMDB Boosted Performance on Our API Service
Pinterest's API team just freed up 4.5GB of memory per host with a clever database swap. The result? Fewer servers, happier users, and a masterclass in optimization.
Accessibility in prices, our learning from the Android perspective
Juan Ignacio Unzurrunzaga from Mercado Libre's team reveals how they fixed a critical accessibility gap that affected millions of users: price components that screen readers couldn't interpret correctly.
Precios accesibles, nuestro aprendizaje desde la perspectiva Android
Juan Ignacio Unzurrunzaga from Mercado Libre reveals how a simple price component became a masterclass in Android accessibility. Their team discovered screen readers were announcing dollars instead of pesos, re...
Lessons Building Android Widgets
Matt Bowen and the Shopify team discovered their Android widgets were making up to 5 unnecessary network calls per update cycle. Their solution? A clever 60-second cache that transformed widget performance.
App Performance Monitoring Strategies and Tools
Your app crashes in production and you have no idea why. Callstack breaks down the monitoring strategies that catch issues before your users do.
How We Reduced Our Android Startup Time by 77%
Turo's Android team slashed their app startup time by 77%. Here's how they turned a sluggish launch into a lightning-fast experience.
Consent Matters
Swiggy's Android team faced a UX dilemma: auto-reading OTPs felt magical to some users, creepy to others. How do you balance convenience with transparency?
Android Network Traffic Tracking and Monitoring
Ahmed Alnaami from AirAsia reveals how they solved a debugging nightmare: tracking network traffic across Native, React Native, and WebViews in one super app.
Performing Due Diligence As Android Engineers
Ishan Khanna from Tinder shares a hard-earned lesson: that shiny third-party SDK could be a ticking time bomb for your app. Here's the framework his team uses to avoid disaster.
Productionizing Envoy Mobile at Lyft
JP Simard from Lyft reveals how they replaced URLSession and OkHttp across all their mobile apps with a single networking library—and the results weren't what anyone expected.
Android Launch Performance
Strava's Android team cut app launch time in half by treating performance optimization like athletic training: consistent measurement, strategic improvements, and relentless focus on efficiency.
How OkCredit Android App Improves UX Writing by Changing Strings on the Fly
OkCredit found a way to A/B test UI copy without shipping new app versions. The results? A 1.7% lift in user activation from changing just two words.
Automating Android Build Benchmarking with Gradle Profiler
Doni Winata from Traveloka's Android Infra team reveals how his team automated build benchmarking to catch performance regressions before they hit production. For projects with 300+ modules and 15-20 minute bui...
Molecule: Build a StateFlow stream using Jetpack Compose
Cash App open sourced Molecule, a library that lets you write reactive code as simple if/else statements. No more complex RxJava chains.
Android Developers Blog: Precise Improvements: How TikTok Enhanced its Video Social Experience on Android
TikTok slashed app startup time by 45% and reduced video lag by 27%. Here's how they did it using Android's native toolchain.
Uploading Files to AWS S3 with Progress - Kotlin
Mehmet Gür from Getir tackles a common Android pain point: uploading files to S3 with real-time progress tracking. His solution avoids the MultipartBody pitfalls that trip up most developers.
Comparing Jetpack Compose Performance with XML
OkCredit ran a fascinating A/B test: Jetpack Compose vs XML layouts in production. The results surprised them—and reveal what most teams miss about Compose performance.
How We Made Unit Testing Part of Our Engineering Culture
Instawork runs over 1 million tests daily in their CI pipeline. Here's how they made unit testing a core engineering practice, not an afterthought.
Designing Jetpack Compose Architecture for a Gradual Transition from Fragments on Android
Turo's Android team faced a challenge: how to adopt Jetpack Compose without rewriting their entire fragment-based app overnight.
Simplifying Navigation in Multi-Module Android Apps
Meetup's Android team ditched Activities and Fragments for pure Jetpack Compose—and immediately noticed the performance difference. Here's how they navigated the complexity of multi-module apps.
How We Cut the Build Time for Our Android App by 95%
Zomato's Android team was losing 7 hours of productivity every single day just waiting for builds. A 10-person team, 20 builds per day, 2+ minutes each time. The math was brutal.
Building m.uber: Engineering a High-Performance Web App
Uber built a web app that loads in 3 seconds on 2G networks. Here's how they made it smaller than a typical image file.
Sparking Jetpack Compose at Tinder
Tinder adopted Jetpack Compose before it hit 1.0. Here's how they navigated the alpha/beta chaos in a massive production app.
Appyx vs Jetpack Compose Navigation
Andrey Kovalev from Bumble's engineering team challenges a fundamental assumption: what if Jetpack Compose Navigation's string-based routes and hardcoded BackStack are holding your Android app back?
Android Community Month at Delivery Hero
Sid Patil from Delivery Hero shares how his team turned Droidcon Berlin into a masterclass on scaling Android apps across 50 countries. Over 300 developers stopped by their booth to learn what it takes to build...
Four Lessons in Making Pinterest Faster on Android
Pinterest was bleeding user engagement on Android. With 75% of signups coming from outside the U.S. and 90% of global smartphones running Android, they had to fix their performance problem fast.
Android Guild Week 2: More Modules
Strava's Android team hit a wall trying to modularize their codebase the traditional way. So they flipped their entire architecture upside down.
Performance Bottlenecks in Go Apps
Grab's engineering team discovered their Go apps were mysteriously throttling at 1.94 CPU cores but flying at 2 cores. The culprit? A sneaky interaction between Kubernetes VPA and GOMAXPROCS.
Android App Modularization Strategy
Seongchul Park from Coupang reveals how they tamed a 300,000+ line monolithic Android codebase. The build times were spiraling, new features were getting tangled, and Google's modern deployment features were ou...
Android Integration in Analytics Infrastructure
Alexander Dadukin and Dhriti Chawla reveal what it's like being the only 2 Android engineers supporting analytics infrastructure for all of Yelp. Spoiler: they can't see or touch what they build.
Introducing Skynet: Infrastructure as Code for Gojek
Gojek runs 15,000+ VMs across 250+ GCP projects serving millions of customers. How do they manage infrastructure at this scale without chaos?
How OkCredit Android App Boosted Network Performance by 30%
OkCredit serves millions in India's Tier-2/3 cities where flaky networks are the norm. Their Android team just cut network call times by 30% with some clever client-side optimizations.
How Removing Caching Improved Mobile Performance by 25%
Klarna's team removed their caching layer and saw a 25% performance boost. Wait, what?
Android UI Testing with Firebase
Turo's Android team hit a wall: their single-device test setup couldn't keep up with their growing UI test suite. Hours of wait time for a single test run wasn't going to cut it.
Automating Mobile Event Verification
Swiggy was drowning in analytics chaos. Thousands of events per session, scattered specs across docs, and manual verification eating up engineering time.
Improving the CI/CD pipeline for mobile app development
Johnson Li from Coupang reveals how migrating from Mac minis to AWS EC2 transformed their mobile CI/CD pipeline. Their team was drowning in 3,000+ daily builds with 1-hour wait times.
Hermes Engine Becomes React Native Default
React Native just made a massive default change that could speed up your app launches and shrink your bundle size. Here's what the benchmarks show.
How We Improved Our Android Apps Performance by Up to 24%
Mercado Libre's Android team achieved a 24% performance boost without using Google's recommended Baseline Profiles or Macrobenchmark tools. How did they pull it off?
Rendering Performance Monitoring on Android
Booking.com's Android team built their own rendering performance monitoring system. Here's why Google Play Console metrics weren't enough.
Android UI Development with Jetpack
Neil Davies from Just Eat Takeaway reveals how his team eliminated manual theme updates across multiple Android apps. Their solution? A design token system that cut redesign time by 80%.
How Tinder Solves Complex Lottie Localizations with Server Driven UI
Tinder was manually creating 40+ localized Lottie animations for every campaign. Their solution? A clever architecture that reduced it to just one.
Build a Flutter app with Very Good CLI and Supabase
Very Good Ventures shows how to build a production-ready Flutter app with Supabase that achieves 100% test coverage. This isn't your typical Firebase clone tutorial.
How OkCredit Android App Improved Cold Startup by 70%
OkCredit slashed their Android app cold startup time by 70%. Here's the engineering playbook that made it happen.
Why Mobile Apps Performance Matters
Mercado Libre's mobile apps serve 4.5 billion active devices. A Galaxy A10 might take 5 seconds to load a screen—or just 1.67 seconds, depending on conditions.
Scaling Android Apps with Gradle Build Types and Product Flavors
Sahil Jain from OLX reveals how they manage multiple market versions of their Android app without maintaining separate codebases. The secret? Strategic use of Gradle's build configuration.
Faster media delivery to optimize app performance
LazyPay was serving unoptimized images directly from S3, killing app performance and burning bandwidth. Their migration to Cloudinary cut image sizes by 70%.
The Benefits and Challenges of Android Dynamic Feature in Tokopedia
Tokopedia cut their Android app download size by 10% using Dynamic Features. But the implementation wasn't as simple as Google's docs suggested.
How Server-Driven UI Is Helping Frontend Engineers Scale Impact
Robinhood was taking weeks and multiple engineers just to make simple UI changes. Their solution? Server-Driven UI that lets them ship to all platforms without app releases.
Async Jersey + Kotlin Coroutines
ClassPass engineers were hitting a wall: their Jersey-based APIs couldn't handle traffic spikes without exhausting thread pools. The culprit? Synchronous request processing blocking precious I/O threads.
Giving Android a security boost (Part Two)
Zomato's Android team breaks down SSL certificate pinning: the security feature that could brick your app if done wrong.
Managing Deep Scope Hierarchies in Large Codebases
Uber rewrote their Android rider app in 2016 and made an architectural choice that most Android teams avoid: deeply nested dependency injection scopes.
Giving Android a security boost (Part One)
Zomato's Android team is tackling a critical vulnerability that most apps ignore. Your encrypted HTTPS traffic might not be as secure as you think.
Evolution of Android Message Passing Mechanism
Ju Cai from Coupang reveals how their Android app went from Stone Age message passing to a custom LiveData-based event bus that cut development time in half. The journey through three architectural eras offers ...
Scaling Slack’s Mobile Codebases: Modernization
Slack just wrapped a massive mobile refactor. The results? 68% of iOS and 92% of Android codebases modernized, with CI times slashed by over 60%.
Scaling Slack’s Mobile Codebases: Modularization
Slack's mobile codebase was slowing teams down. Their solution? Break the monolith into hundreds of independent modules.
Custom color elevation effect in Compose
Alexandre Bruneau from Medium Engineering discovered that Jetpack Compose's elevation overlay only works with default Material theme colors. His workaround unlocks custom color elevation for any design system.
How We Applied Client-Side Caching
DoorDash makes millions of ML predictions per second, but their Redis-based feature store was becoming a massive cost and scalability bottleneck. Could client-side caching be the answer?
Continuous Load Testing
Slack's engineering team ran into a classic performance testing problem: spinning up load tests was so time-consuming that teams avoided doing it. Their solution? Never stop testing.
Mobile DevOps Journey: Evolving Mobile Development at Swiggy (Episode 1)
Swiggy's mobile team was drowning in Jenkins bottlenecks. Build times were slow, machines crashed frequently, and manual interventions killed velocity.
One Activity to Rule Them All: Reducing Crashes in the Etsy App
Etsy was getting 1,000 Out of Memory crashes per day on Android. The culprit? A navigation architecture from 2012 that couldn't handle modern browsing behavior.
Stop Wasting Time on Unit Testing: How Tokopedia Achieved 8X Faster Results | by Andrean Lay | Tokopedia Engineering | Medium
Tokopedia's iOS team was drowning in 30-minute unit test cycles with 65 developers fighting over 9 CI/CD machines. They cut that time by 8X.
Monitoring CPU Performance of Lyft’s Android Applications
Lyft's Android app serves millions of users daily, but how do you track CPU performance when hundreds of engineers ship code constantly? The team built a custom monitoring system from scratch.
Animate on a Path with Android Jetpack Compose UI
Phil Boyd from OkCupid shows how to build smooth path animations in Jetpack Compose using just high school math. No complex animation libraries required.
Profile-Guided Optimisation
Grab's engineering team just unlocked 30% memory savings and 38% storage reduction with a simple compiler flag. Here's how Profile-Guided Optimization (PGO) delivered massive gains with minimal code changes.
Introducing Focus: A New Open Source Gradle Plugin
Ryan Harter from Dropbox just open-sourced a Gradle plugin that cuts Android Studio sync time by 87%. If you're tired of waiting on builds in large Android projects, this is for you.
Designing Swiggy to Be Truly Accessible (Episode 4)
Swiggy tackled mobile web accessibility and discovered that following W3C guidelines was just the starting point. The real challenge? Making a food delivery app work seamlessly for screen reader users.
Android Developers Blog: How a single Android developer improved Lyft’s Drivers app startup time by 21% in one month
One Android developer at Lyft cut app startup time by 21% in just 30 days. Here's how they convinced leadership to prioritize performance over features.
Query Hashing to Reduce GraphQL Payload Size
Tokopedia's mobile team was sending massive GraphQL queries with every API call. The network overhead was killing performance on slower connections.
Making Camera Uploads for Android Faster and More Reliable
Dropbox rewrote their Android camera uploads feature from scratch. It took 2 engineers 2 full years, but first-time uploads now finish 4x faster.
Measuring Mobile Apps Performance in Production
Booking.com discovered that standard performance monitoring tools from Apple, Google, and Firebase couldn't meet their needs. So they built their own—and just open-sourced it.
Building a Thoughtful Scaling Framework for Engineering
Robinhood doubled their engineering team in a year while scaling to handle unpredictable market swings. Here's the framework that made it possible without breaking their systems or culture.
Delivering a Million Downloads Every Week
Swiggy's Android team serves 1M+ downloads weekly with 52% of users updating within 5 days. That velocity could be a disaster without bulletproof automation.
Instrumenting App Flows for Performance Monitoring
The Paytm Editorial Team reveals how they measure the real cost of user friction: tracking payment flows down to the millisecond, excluding network delays that mask app performance issues.
Designing the Swiggy App to Be Truly Accessible (Episode 3)
Swiggy made their food delivery app fully accessible for visually and physically challenged users. The result? A measurable increase in orders from users with disabilities.
Introducing Ruler: Our Tool for Measuring Android App Size
Spotify just open-sourced the tool that helped them slash their Android app size by 9%. Here's why app size matters more than you think.
Designing the Swiggy App to Be Truly Accessible (Episode 2)
Swiggy saw 5x growth in accessibility sessions after fixing one critical UX problem: their Android app treated screen reader users like robots, not humans.
Releasing Features with Confidence in Mobile Apps
Shubhnik Singh Mann from Razorpay reveals why most mobile teams are testing wrong. Their approach eliminated P0 production issues entirely.
Fixing Performance Regressions Before They Happen
Angus Croll from Netflix reveals how his team slashed false performance alerts by 90% while catching more real regressions. The secret? They stopped using static thresholds entirely.
Designing the Swiggy App to Be Truly Accessible (Episode 1)
Swiggy ignored accessibility for years, effectively locking out millions of users with disabilities. A Change.org petition changed everything.
How We Solve the Sideloading Crash After App Bundle Implementation
Tokopedia shipped Android App Bundles and immediately hit a wall: mystery crashes on random devices. The culprit? Sideloaded APKs missing critical resources.
Stabilize, Modularize, Modernize: Scaling Slack's Mobile Codebases
Tracy Stampfli and Bryan Stern reveal how Slack's mobile teams tackled crippling tech debt that was actively slowing product roadmaps. Their solution? A bold 6-month stabilization sprint that transformed both i...
How we ship GitHub Mobile every week
GitHub Mobile ships to production every single week with a tiny team. Their secret? Ruthless automation that turns a multi-day release process into a Saturday morning workflow.
Flutter Revitalized Our Codebase and Transformed Our Engineering Team
Sam Moore from Betterment shares how his team rewrote 85% of their mobile app in just over a year without disrupting users. The secret? A methodical approach to adopting Flutter that prioritized team buy-in ove...
Balancing Native and JavaScript Code in React Native
React Native's bridge can be your bottleneck or your superpower. Callstack explores the critical tradeoff between JavaScript flexibility and native performance that determines whether your app flies or crawls.
Cross-Platform Messaging Experience
Snap rewrote their entire messaging system in C++ to solve a problem that plagues most mobile teams: platform inconsistency causing bugs and doubled engineering effort.
Airbnb's Page Performance Score on Android
Airbnb moved beyond Time To Interactive to measure what users actually see. Their Page Performance Score tracks visual wait time, not just code execution.
Nextdoor Notifications: Using ML to Keep Neighbors Informed
Karthik Jayasurya from Nextdoor reveals how they transformed notifications from random spam into personalized updates that neighbors actually want. The result? A 40% jump in engagement without sending more mess...
Jetpack Compose UI Testing Strategies
Karan Saimbhi from Just Eat Takeaway compares testing Jetpack Compose to watching Back to the Future on different formats—the content stays the same, but the method evolves. Here's what changes when you move fr...
Mobile Developer Productivity at Reddit
Reddit's mobile team ships features 30% faster after overhauling their developer productivity infrastructure. Here's how they did it.
Creating Airbnb's Page Performance Score
Airbnb ditched single-metric performance tracking and built something better. Here's how they unified web, iOS, and Android performance into one 0-100 score.
Reducing Android Build Time at Scale
Patrick Brochado from BlaBlaCar turned a 13-minute Android build into a 4-minute one. His team was losing 8 hours of productivity every single day to slow builds.
Android Developers Blog: Improving App Startup: Lessons from the Facebook App
Facebook's Android app serves 2.9 billion users monthly. Their startup optimization strategy cut bad starts by focusing on one counterintuitive metric.
The state of managing state (with Compose)
Cash App's Jake Wharton just open-sourced their solution to a problem every mobile team faces: state management code that's impossible to read.
The Beginner's Guide to Kotlin Coroutine Internals
Sonic Wang from DoorDash breaks down Kotlin coroutines from bytecode to scheduler. If you've ever wondered what actually happens when you call 'suspend', this deep dive reveals the magic.
Beyond Mobile First: Modern Mobile Development Strategy
Ryan O'Neill from Square reveals why 9 out of 10 mobile shoppers think their experience could be better. His team's solution? Stop thinking mobile-first and start thinking app-first.
Mobile Performance @ Lyft
Lyft was serving 17.1M riders while their Android app launched 15-20% slower than competitors. Time to fix that.
Traveloka Android Dynamic Feature Module Migration
Anisha Inas Izdihar and Yusuf Cahyo Nugroho from Traveloka cut build times by 37% and saved users 15MB of storage. Here's how they migrated 26 modules to Android's Dynamic Feature Module framework.
Making Hermes the Default JavaScript Engine
Meta's Hermes team cut app startup time in half and reduced GC pauses by 34x. Here's how they're making it the default engine for React Native.
Browse Page Refactoring on Android
Jintin from Carousell reveals how a 3,000+ line Presenter became their team's productivity nightmare. Their solution? A strategic mix of refactoring AND rewriting that didn't require months of downtime.
Android Jetpack Compose
Buğra Yetkin from Teknasyon Engineering breaks down why Android teams are ditching XML and fragments for Jetpack Compose. The promise? Less code, better performance, and a completely new way of thinking about U...
We release our Android apps every day (Android App Continuous Deployment)
Doist went from scary 2-hour manual Android releases to shipping every single day. Here's the engineering playbook that made it possible.
8 Tips Learned from Adding Payments to DoorDash's Android App
DoorDash's Android team learned the hard way that adding payments isn't just about processing transactions. It's about building a system that scales across countries, payment methods, and user expectations.
A Importância da Performance Para Apps Mobile
Victor Oliveira from Mercado Libre reveals a harsh truth: 53% of users uninstall apps due to performance issues. With 4.5 billion active Android and iOS devices worldwide, each performing differently, mobile pe...
Open Sourcing Thumbprint Native Design System
Mallika Potter and Kevin Beaulieu from Thumbtack reveal how they open-sourced their entire native design system—and the surprising technical challenges they had to solve first.
Identifying and Handling Android Build Memory Issues
Doni Winata from Traveloka's Android Infra team reveals why constantly increasing Gradle's heap size actually makes your build problems worse. His deep dive into Android build memory issues shows how to stop fi...
Designing Resilient Systems Beyond Retries (Part 1: Rate Limiting)
Grab's engineering team learned the hard way: retries and circuit breakers aren't enough when you're running hundreds of microservices at scale.
Tech Modernization at scale — Blog Series
Walmart's engineering team learned the hard way: breaking up a monolith without fixing team structure just creates a distributed mess.
Improving Product Reliability by Imposing Constraints as a Part of CI/CD Process
Revolut built a system that automatically blocks code deployments based on security risk and bug count. Here's how they shifted security left without slowing down 165,000+ pull requests.
A Saga of Improvement in Android App Performance (Part 3)
Tokopedia built an internal tool that automatically finds Android performance bottlenecks. No more manual trace analysis or guessing which methods are slowing you down.
Superpack: Pushing the limits of compression in Facebook’s mobile apps
Meta's Superpack compression tech achieves what traditional tools couldn't: keeping app size in check while developers ship code at massive scale daily.
Android Hilt Dependency Injection
Mehmet Agah Balbay from Teknasyon Engineering makes the case for ditching Dagger2's boilerplate hell. His team's switch to Hilt for dependency injection delivered real performance wins and faster development cy...
Publishing Variant-Aware Android Libraries with Source Distribution
Guillermo Mazzola from Glovo cracked a problem that's been frustrating Android library publishers since AGP 7.0: how to ship variant-aware libraries without breaking source code navigation in your IDE.
Checkmate on Compose Part 2
Zsolt Kocsi discovered that Jetpack Compose's lack of shared element transitions wasn't a limitation. It was an opportunity to build something better.
Preparing Your App for iOS 15 and Android 12
New OS releases can break your app overnight. The React Native team shares critical changes in iOS 15 and Android 12 that could impact your users.
Implementing caching for pipeline resolvers in AWS AppSync GraphQL APIs
Eric Robertson from AWS AppSync reveals how pipeline resolver caching slashed database requests by 99% for some customers. If your GraphQL API is hitting backend services too hard, this changes everything.
Checkmate on Compose Part 1
Zsolt Kocsi from Bumble built a chess app in Jetpack Compose to solve a problem that's frustrated beginners for years: engines tell you a move is bad, but never explain why.
Android App Excellence: Duolingo
Duolingo's Android app was degrading 5-10% every month. New features meant guaranteed performance regressions every 90 days.
Building Android Conversation Bubbles
Mathias Roth from Slack reveals how a hardcoded Android display name prefix saved their Conversation Bubbles implementation. What started as straightforward API work turned into a detective story involving work...
Kotlin Multiplatform: Shared Test Resources
Victoria Gonda from Square tackles a tricky KMP problem: Kotlin/Native doesn't support I/O, yet your shared tests need to read fixture files. Here's the workaround that makes it possible.
Best Practices for Writing Compose Code
GJ Kooijmans from Just Eat Takeaway compares writing software to Bruce Springsteen's E Street Band. Both succeed by composing simple parts into harmonious wholes—but most developers struggle with the compositio...
Preventing Pipeline Calls from Crashing Redis Clusters
Grab lost 95% of ride bookings for a full minute when a single Redis slave node failed. Their highly available cluster with multiple replicas somehow became a single point of failure.
React Native 0.65 Release
React Native 0.65 just dropped with performance gains that'll make you rethink your mobile architecture. The Hermes engine upgrade alone is delivering 20-50% improvements on CPU-intensive workloads at Facebook.
Project Bonsai
Grab's Android app had 4 million lines of code and was bleeding users. Google's research showed every 6MB increase costs 1% of conversions.
Jetpack Compose Support in Workflow
Zach Klippenstein from Square reveals how they bridged their state machine architecture with Google's declarative UI toolkit—a year before Compose hit 1.0.
A Saga of Improvement in Android App Performance (Part 2)
Tokopedia built an automated performance testing pipeline that catches regressions before they hit production. Here's how they measure every build, every night.
Android Architecture for the Rocketship - Part 1: Modularisation
Huan Nguyen from Afterpay reveals how they architected their Android rewrite to support hundreds of future developers. The secret? A three-tiered modular structure that makes parallel development actually work.
Best Practices for Unit Testing at Revolut
Revolut's iOS team ships weekly updates with minimal regression. Their secret? Making unit tests actually fun to write.
How We Improve Android App Performance (Part 1)
Tokopedia's Android team achieved a 40% improvement in app start time and page load speed. Here's the systematic approach that got them there.
Spotting Latency Regressions Ahead of Time at Teams Mobile
Microsoft Teams Mobile merges 50+ commits daily from 350+ developers. How do they catch performance regressions before users feel the pain?
Building an Enterprise IntelliJ Plugin for Android Developers
Pierce Johnson from Lyft reveals how a custom IntelliJ plugin transformed productivity for 60+ Android developers. The secret? Automating the repetitive tasks that were quietly draining engineering velocity.
Carbon: Dual Binary Mobile App
Uber rewrote their entire driver app serving 3 million drivers. How do you ship that without breaking your business?
Scaling Android Apps with Gradle: Different Source Sets (Part 2)
OLX Engineering scaled their Android app across multiple markets without creating code chaos. Here's how they used Gradle source sets to keep things clean.
A Deep Dive into Airbnb’s Server-Driven UI System
Airbnb ships features simultaneously across web, iOS, and Android without waiting for app store releases. Their secret? Server-driven UI.
ACF Automated Code Formation Engineering Excellence
Walmart's engineering team cut time-to-market for cloud self-service platforms from 26 weeks to under 2 weeks. Here's the framework that made it possible.
Trusting Metrics at Pinterest
Pinterest relies on data to drive decisions and ML models. But what happens when a metric as simple as Daily Active Users gets counted wrong?
Sharp Edges in Kotlin Coroutines Testing Tools
Kevin Cianfarini from Cash App discovered a sneaky threading bug that stumped his entire team. The culprit? A misunderstood feature in Kotlin's coroutine testing tools that silently breaks thread assertions.
App Modularisation at Scale
Grab went from one monolithic mobile app to over 1,000 modules. Here's what they learned about scaling a superapp.
Improving Platform Channel Performance in Flutter
Aaron Clarke from Google's Flutter team eliminated unnecessary memory copies in platform channels and achieved up to 52% performance gains. Here's how he debugged his way through Objective-C class clusters and ...
Structured Logging: The Best Friend You'll Want When Things Go Wrong
Grab's logging bills were spiraling out of control. Their solution? A complete rethink of how they capture what happens in production.
Scalable Jetpack Compose Navigation
Lachlan McKee from Bumble Tech tackles a critical scalability problem in Jetpack Compose Navigation that Google's docs don't address. His solution? Delegate route creation to feature modules using Dagger Hilt f...
Scaling Mobile Development at Microsoft: Mental Model
Microsoft's mobile teams were drowning in duplicate code. Every app rebuilt the same file picker, calendar, and sharing experiences from scratch.
Announcing Flutter 2.2 at Google I/O 2021
Tim Sneath from Google reveals Flutter 2.2 just hit a major milestone: it's now the #1 cross-platform framework, powering 1 in 8 new Play Store apps. The momentum is undeniable.
Optimizing OpenTelemetry's Span Processor for High Throughput and Low Latency
DoorDash's OpenTelemetry adoption hit a wall: 72% CPU utilization versus 56% without tracing. That's a costly tax for observability.
Reducing Android app size in practice at LinkedIn | by Chao Zhang | Microsoft Mobile Engineering | Medium
LinkedIn reduced their Android app size by 27.5MB through aggressive optimization. Here's how they did it without compromising features.
Traveloka Android Dynamic Feature Module Pilot Project
Anisha Inas Izdihar and Yusuf Cahyo Nugroho from Traveloka tried implementing Dynamic Feature Modules in 2019 when documentation was scarce and critical tools were broken. Their workarounds got creative: they l...
Client Tracing: Understanding Mobile and Desktop Application Performance at Scale
"My app is slow" - every engineer's nightmare. Slack's mobile team was tired of hitting dead ends when debugging performance issues.
CDN Caching Improvements for Better App Performance
AWS Amplify just shipped CDN caching improvements that delivered a 98% reduction in response times for static assets. Cookie handling was the culprit.
Detecting Memory Leaks in Android Applications
Dropbox's Android team was fighting OutOfMemoryError crashes. The culprit? Memory leaks hiding in activity lifecycles that traditional debugging couldn't catch.
Automating Integration Tests To Ensure Android App Quality
Brian Terczynski from Thumbtack reveals how his team eliminated weekly manual QA sessions that were draining engineering time. Their solution? A fully automated integration testing pipeline that catches bugs be...
Flexbox Layout Behavior in Jetpack Compose
Zalando's engineering team is evaluating Jetpack Compose to replace Litho for their backend-driven mobile screens. But there's no Flexbox composable, so they mapped it themselves.
Boosting Developer Success with Android Tools
Sameer Samat from Google just announced a move that will put more money back into 99% of Android developers' pockets. Starting July 2021, the economics of building on Google Play are fundamentally changing.
React Native 0.64 Release
React Native 0.64 just brought Hermes to iOS, and it's a game-changer for app performance. The team is finally closing the gap between Android and iOS optimization.
How Pinterest Leverages Honeycomb to Enhance CI Observability and Improve CI Build Stability
Pinterest sends 1 million CI build events to Honeycomb daily. Here's how they turned that data into a competitive advantage for mobile development.
Improve Reliability with Observability Tracing in Your CI/CD Pipeline
Walmart's engineering team reveals how observability tracing transformed their CI/CD pipeline reliability. The secret? Treating data requests like package tracking.
Speeding Up Android Unit Tests with Test Sharding on GitLab CI
Fadel Trivandi Dipantara from Bukalapak faced a brutal reality: 3,000+ test classes taking 2.5 hours to run. His team couldn't ship fast enough, and traditional solutions kept failing.
Private libraries in Android — how to manage them.
Jean-Baptiste Vincey from Deezer reveals how their team manages private Android libraries across multiple apps—without the chaos. Their approach handles 3 major libraries with bi-weekly releases and keeps depen...
Announcing the Mobile Native Foundation
Keith Smiley from Lyft just announced something that could change how we all build mobile apps. Instead of every company rebuilding the same infrastructure in silos, major tech players are finally collaborating...
Low-Power Sleep Tracking on Android
Nick Grayson from Google reveals how Android's new Sleep API can track your sleep patterns while barely touching your battery. No more choosing between sleep insights and phone longevity.
JSON Serialization Libraries Performance Comparison
Israel Abramov from Just Eat Takeaway tested 10 JSON serialization libraries across 8 scenarios. The results? Your default serializer might be costing you serious performance.
How We Designed Our Continuous Integration System to Be More Than 50% Faster
Pinterest's Engineering Productivity team slashed CI build times by over 50% in one week. Here's the architecture that made it possible.
Designing a Custom Progress bar with timed breaks in Android
Sarina Dhamija from OLX Engineering tackles a tricky Android UI challenge: building a circular progress bar that shows pause breaks during video recording. Think Instagram Stories meets custom video capture.
How We Sped Up Dropbox Android App Startup by 30%
Dropbox's Android app was slowly dying by a thousand cuts. Over 4 months, startup time crept up unnoticed until they finally looked at the bigger picture.
Measuring Android App Size in CI
Microsoft SwiftKey's team knows that reducing app size once isn't enough. The real challenge? Keeping it small with every code change.
Solving Native Memory Leaks in Mobile Apps
Sid Rathi from Expedia Group debugged a production nightmare: KStream apps dying in an endless OOM loop. The culprit? A single unclosed iterator eating native memory.
Optimizing the Aural Experience on Android Devices with xHE-AAC
Phill Williams and Vijay Gondi from Netflix reveal how a codec upgrade is solving one of mobile streaming's most annoying problems: constantly adjusting your volume.
Time to Camera Ready
Snap's engineering team obsesses over one metric: Time to Camera Ready. Miss the bear crossing the street because your app was too slow? That's exactly the problem they're solving.
Tokopedia Android Engineering 2020 Review
Rico Harisin from Tokopedia reveals how their Android team shipped weekly releases while building a complete performance infrastructure from scratch. Their secret? Treating CI/CD like a product.
Using Android Screenshot Tests To Verify View Correctness
Emily Fujimoto from Thumbtack reveals how her team caught critical layout bugs that traditional testing completely missed. The solution? Screenshot tests that verify what your UI actually looks like, not just w...
Introducing Pulse: Envoy Mobile's stats library
Jingwei Hao from Lyft reveals how real-time stats APIs caught a production crash spike at 9:55am, enabling engineers to ship a hotfix before most users even noticed the problem.
How we achieved a 6x reduction of ANRs - Part 1: Collecting Data
Bumble's Android app was bleeding users to ANR dialogs. Their ANR rate sat above Google Play's threshold, threatening search rankings and user trust.
How we achieved a 6x reduction of ANRs - Part 2: Fixing ANRs
Bumble's Android team slashed their ANR (Application Not Responding) rate by 6x. Here's how they debugged one of mobile's most frustrating problems.
Modernising a Legacy Android App Architecture: Part Three - Applying the Refactor
Rob Pridham from BBC Sport reveals how his team tackled a massive Android refactor—migrating from multiple activities to a single-activity architecture while keeping the app running in production.
Modernising a Legacy Android App Architecture: Part One - Single Activity
Rob Pridham from BBC Sport reveals how they modernized a 7-year-old Android codebase without a full rewrite. The secret? A strategic refactor that tackled navigation chaos first.
Modernising a Legacy Android App Architecture: Part Two - MVVM
Rob Pridham from BBC Sport ditched the trendy frameworks and went old school—callback listeners and view controllers—to modernize their Android app. Controversial? Maybe. Effective? Absolutely.
Revamping the Android Testing Pipeline at Dropbox
Dropbox cut their Android CI pipeline from 75 minutes to 25 minutes without switching build systems. Here's how a team of 60+ mobile engineers solved testing at scale.
How Grammarly Built a Native Keyboard for Android
Grammarly's Android keyboard gets used 70+ times per day by the average user. Building it meant solving problems most app developers never face.
Monitoring Android Codebase
Fajar Ulin Nuha from Tokopedia reveals how their 50+ Android engineers manage a codebase that changes so dramatically every single week that assumptions become dangerous. Their solution? Become data-driven deve...
Logging And Alerting in Android Tokopedia
Hendry Setiadi from Tokopedia reveals how they built a custom logging system that catches production issues before users even notice. Firebase Crashlytics is great, but what if you need more?
Leak Canary: What Is It?
Memory leaks are silent killers of Android app performance. They're hard to spot manually, but there's a tool that does the heavy lifting for you.
Mobile App Launch Performance
Gonçalo Alvarez from Farfetch drops a hard truth: 86% of users uninstall apps after one use due to poor performance. Your launch time might be costing you customers before they even see your product.
Mobile App Launch Performance II
At Farfetch, a 0.1 second delay in warm app launch costs $4.2M annually. That's less time than it takes to blink.
Our Counterintuitive Fix for Android Path Normalization
Dropbox Android users couldn't see folders with Cyrillic characters or certain special names. The obvious fix? Way too risky to attempt.
Decomposing network calls on the Lyft mobile apps
Lyft's mobile apps used to poll a single endpoint every 5 seconds for everything. That "Universal Object" became their biggest reliability nightmare.
Pre-submit UI Tests at Pinterest
Pinterest's UI test suite was failing more than 50% of the time. Engineers were drowning in false positives, and tests had lost all credibility.
Improve Android App Screen Launch Times Using LazyLifecycle Callbacks
Microsoft Teams Android engineers faced a critical problem: heavy initialization code in lifecycle callbacks was killing app launch times. Their solution? Get lazy.
Learning Flutter's new navigation and routing system
John Ryan from Flutter's team tackles one of mobile dev's messiest problems: navigation. But the solution might be more complex than the problem itself.
Custom View from Scratch Part III: Performance and Optimisation
Eugene Zubkov from Revolut hit a wall building a custom Android chart: it literally disappeared due to texture size limits. His debugging journey reveals critical performance traps most Android devs don't see c...
GitHub Mobile and GraphQL
Hesham Salman from GitHub reveals how GraphQL eliminated over-fetching and let their mobile team ship features at warp speed. The secret? Letting the client define exactly what data it needs.
New Rider App Architecture
Uber threw away years of code and rebuilt their rider app from scratch. Here's why that radical decision paid off.
5 Minute DevOps Effective Testing
Walmart's DevOps team has a bold claim: if you're not testing during development, you're risking the business. Here's why your testing strategy might be fundamentally broken.
Motion Engineering at Scale
Airbnb was shipping hundreds of features, but custom animations were getting cut due to complexity. Their solution? A declarative framework that reduced transition code from hundreds of lines to just a few.
Seamlessly Swapping the API backend of the Netflix Android app
Netflix Android engineers migrated 170 API endpoints from a monolith to a new microservice without users noticing. Here's how they pulled it off over a year.
Data Storage Best Practices with Jetpack
Florina Muntenescu and Rohit Sathyanarayana from Google reveal why SharedPreferences has been secretly blocking your UI thread and causing ANRs. Their solution? Jetpack DataStore, a complete reimagining of Andr...
Android GPU Inspector: Open Beta Release
Jay Kong from Google's Gaming and Graphics team just opened the beta for Android GPU Inspector, and early results are impressive. Diablo Immortal cut vertex bandwidth by 45%, while Crash Bandicoot slashed frame...
Tracing at Slack: Thinking in Causal Graphs
Slack processes 8.5 billion spans daily, but their tracing system looks nothing like traditional distributed tracing. Here's why they rebuilt it from scratch.
Improved Localization with Custom TextView Effects
Anton Begeima from OkCupid's engineering team turned a localization nightmare into an elegant solution. Instead of managing separate images for every language, his team built a custom TextView that handles text...
Clean Android WebView Caching
Microsoft Teams Android engineers cut WebView initialization time by 70% using a clever caching technique. Here's how they avoided memory leaks while sharing WebViews across activities.
Migrating Tokopedia Academy App From Dagger Android Into Hilt!
Yehezkiel L from Tokopedia cut their dependency injection boilerplate dramatically by migrating from Dagger Android to Hilt. The result? Cleaner code, faster onboarding, and way less confusion for their team.
Implementing the Android Navigation Library
Maria Sharkina from DoorDash discovered that Android's Navigation Library has a critical flaw: it forces navigation before your app is ready. Here's how her team solved it without breaking deep links or the bac...
Using Gradle Composite Builds as a BuildSrc Replacement
Yury from Bumble Tech tackles a painful Gradle problem: buildSrc invalidates your entire build cache with every change. Here's how composite builds solve it without sacrificing IDE support.
Shipping Two Apps In One Android
Snapchat shipped two complete Android apps in a single APK to A/B test their rewrite. The engineering challenge? Android wasn't designed to support this at all.
Improve Android Testability with Fakes and Factories
Brian Plummer from OkCupid hit a wall adding a simple analytics event: his unit tests broke because static constructs were calling the analytics library directly. Here's how he fixed it with a pattern that made...
Leveraging Mobile Infrastructure with Data-Driven Decisions
Spotify's mobile infrastructure team turned build time chaos into predictable performance. Their secret? Making every engineer a data scientist.
React Native Core Principles and Best Practices
The React Native team at Facebook just pulled back the curtain on how they decide what to build next. Spoiler: cross-platform consistency isn't their top priority.
App Size Matters II
What if I told you a single 15MB increase in your app size could cost your business $1M annually? Farfetch's mobile team did the math, and the numbers are eye-opening.
App Size Matters I
Gonçalo Alvarez from Farfetch drops a hard truth: your bloated app is costing you users, installs, and market share. Here's why app size is a business problem, not just an engineering one.
How We Ensure Credible Analytics on Dropbox Mobile Apps
Marianna Budnikova from Dropbox reveals why your mobile analytics are probably lying to you. And it's costing you two weeks every time you get it wrong.
Optimizing Notifications in Games
Google Play analyzed platform-wide notification data across all games and found something surprising: more notifications actually hurt retention.
Managing App Size for Super Apps
Hendro Riyadi from Bukalapak reveals how his team slashed their super app size by 35% while shipping new features in parallel. In emerging markets where users have limited data plans and older devices, this was...
Android: Leveraging RecyclerView Effectively with ViewModel
Ninad MG from JioHotstar challenged Android best practices and won. His team's unconventional approach to RecyclerView architecture now powers a social feed with 20+ card types across multiple teams.
React Native 0.63 Release
React Native just fixed the two biggest complaints from mobile teams: cryptic error messages and interactions that scream 'this isn't a native app.'
Making Slack Faster By Being Lazy
Slack cut load times by 65% for large teams by doing less work, not more. Their secret? Strategic laziness.
Making Slack Faster By Being Lazy: Part 2
Slack's desktop client was grinding to a halt as teams scaled. The culprit? An over-reliance on browser LocalStorage that seemed smart at first.
Faster testing on Android with Mobile Test Orchestrator
LinkedIn's Android test suite hit tens of thousands of tests, pushing execution times into the danger zone. Developer productivity was tanking.
App Size Reduction at Microsoft SwiftKey
Microsoft SwiftKey slashed their Android app size by 50% and boosted install conversions. Here's the playbook they used to get there.
WebRTC on Android: Enabling Hardware Encoding Across Devices
Ivan Dyatlov from Bumble Tech discovered that WebRTC's H.264 hardware encoding failed on most Android 5.x devices despite official support claims. His deep dive into codec implementations reveals why video call...
Automation for WebView Testing
Ferawati Hartanti Pratiwi from Bukalapak breaks down WebView automation with Appium. If you've struggled with context switching between native and web elements in mobile testing, this practical guide cuts throu...
A Great Way to do Android Presenters
Cash App's Android team chose presenters over ViewModels and MVVM. Here's why their "boring" code wins.
Spotify Modernizes Client-Side Architecture to Accelerate Service on All Devices
Spotify lifted the 10,000 Liked Songs limit. But that simple feature request triggered a year-long architecture overhaul affecting 100,000 lines of code.
Find and Fix Issues with Android Studio Static Code Analysis
Brian Plummer from OkCupid reveals how their team uses Android Studio's built-in static analysis to systematically improve code quality. But running the tool is the easy part—merging those changes without break...
How We Gave Superpowers to Our macOS CI
Spotify cut iOS pre-merge CI times by 75% with one infrastructure change. Here's how they validated and scaled their approach.
Measuring Frame Rate Performance Per Fragment in Android
Wesley Ong from Grindr Engineering tackles a blind spot in Android performance monitoring: Firebase tracks frame rates per Activity, but what about the Fragments inside them?
Making Airbnb's Android App More Accessible
Airbnb's Android app serves millions of travelers daily. But how many users were being left behind due to accessibility barriers?
Bank of America Amps Up In-App Experiences
Bank of America cut their mobile app response time in half. Here's how they did it with a simple API consolidation strategy.
Better Android Testing at Airbnb (Part 6)
Airbnb's Android tests take 2 hours to run but finish in minutes. Here's the CI infrastructure that makes it possible.
Madman: An Open-Source Ads Framework for Android
Anirudh Ramanan from Flipkart reveals how Google's IMA library was causing 15% of users to bail before videos even started. Their solution? Build their own ads framework from scratch.
How Apollo Android Client Cache Works at Vrbo
Vrbo eliminated loading screens in their Android app entirely. Here's how they used Apollo GraphQL's normalized cache to make navigation feel instant.
Better Android Testing at Airbnb (Part 5)
Airbnb automated screenshot testing across thousands of Android screens to catch UI regressions that manual QA kept missing. Here's how they built it.
React Native 0.62 Release
React Native 0.62 just shipped with Flipper debugging built in by default. This release fundamentally changes how mobile developers debug cross-platform apps.
Better Android Testing at Airbnb (Part 4)
Airbnb's Android tests were failing randomly. The culprit? Everything from cached drawables to delayed runnables creating unpredictable test behavior.
How to Fix App Quality Issues with Android Vitals (Part 2)
Your Android app's crash rate could be killing your Play Store rankings without you realizing it. Google's Android Vitals dashboard now has powerful new features to help you catch issues before users do.
Better Android Testing at Airbnb (Part 3)
Airbnb's Android team built a custom testing framework that runs thousands of automated tests across fragments without writing repetitive test code. Here's the architecture that makes it possible.
How to Fix App Quality Issues with Android Vitals (Part 1)
Over 40% of one-star reviews on Google Play mention app stability issues. Google's Android Vitals can help you fix them before users bail.
How a One-line Change Decreased Our Build Times by 99%
Pinterest found a single tweak that slashed their build times by a jaw-dropping 99%.
Reducing Our Build Time by 50%
Gojek's iOS team was bleeding 11 minutes per build. 100 engineers, 350 daily CI pipelines, and a productivity crisis that demanded action.
Better Android Testing at Airbnb (Part 2)
Airbnb's Android team was drowning in manual QA and flaky Espresso tests. Then they built a testing framework that changed everything.
Our Android testing process
Headspace went from <20% test coverage to 80%+ during a complete app rewrite. Here's how they built a testing strategy that actually works.
Better Android Testing at Airbnb (Part 1)
Airbnb built a system that automatically tests every click in their Android app without writing a single Espresso test. Here's how they turned interaction testing from tedious to automatic.
Bringing AV1 Streaming to Netflix Members’ TVs | by Netflix Technology Blog | Netflix TechBlog
Netflix just brought AV1 streaming to TVs, marking a major milestone for the royalty-free codec. The result? Measurably better streaming for millions of members.
Lyft's Journey Through Mobile Networking
Michael Rebello from Lyft reveals how they scaled from hand-written APIs to a unified networking architecture serving 500+ endpoints. The journey involved killing technical debt, slashing payload sizes by 50%, ...
Store Grand Re-opening: Loading Android Data with Coroutines
Dropbox just took over Store, the popular Android data loading library, and rewrote it from scratch in Kotlin. The reason? RxJava was making it too easy for developers to leak memory.
Journey to a Faster Everyday Super App: Where Every Millisecond Counts
Grab reduced their super app's startup time by 60% while shipping dozens of new features. Here's how they saved users 59,582 hours per day.
Journey to a Faster Everyday Super App
Grab cut app startup time by 60% while shipping dozens of new features. Here's how they did it without compromising velocity.
Better Android Testing at Airbnb (Part 4: Testing ViewModels)
Airbnb built a testing framework so elegant that their ViewModels tests read like plain English. Here's how they made testing actually enjoyable.
Targeted Code Coverage Reports For Android Continuous Builds
Brian Terczynski from Thumbtack reveals how their Android team solved a critical problem: developers couldn't see which specific lines in their code changes lacked test coverage. The solution? Two custom report...
Reactive Data Flow in Revolut Android App
Roman Iatcyna from Revolut reveals how they built a reactive data layer that handles offline-first architecture at scale. Their solution? A custom DataObservableDelegate that abstracts away the complexity of mu...
Improving GraphQL API performance and consistency with AWS AppSync Caching and DynamoDB Transactions support
AWS just shipped two features that solve opposite problems: making GraphQL APIs blazing fast and keeping DynamoDB writes bulletproof. Here's how they change the game for mobile backends.
React Native Doctor Diagnostic Tool
How much time does your team waste debugging React Native environment setup? The React Native Community just shipped a solution that auto-fixes your dev environment issues.
Modernizing Our Android Build System Part I: The Planning
Dropbox's Android build system was so painful that engineers 6+ months in still couldn't create new modules. Time for a rebuild.
Modernizing Our Android Build System Part II: The Execution
Dropbox migrated 75 Android modules from a custom build system to Gradle without breaking their engineering team's workflow. Here's how they pulled it off.
A Summer of Android at Strava
Artem Sharypov from Strava's Experience team rebuilt their entire Android upload service from scratch. Why throw away working code? Because sometimes technical debt costs more than a rewrite.
Building High-Performance Mobile Applications at Netflix
Netflix hosted their first mobile engineering event to tackle a problem every mobile team faces: building performant apps on resource-constrained devices.
React Native 0.61 Release
React Native's hot reloading was so broken that most developers just turned it off. The 0.61 release completely reimagined it from scratch.
Dagger and Multi-Module Architecture in Traveloka Android App
Alifa Nurani Putri and Yusuf Cahyo Nugroho from Traveloka reveal how their single Dagger component ballooned to 17,705 lines of code across 25+ products. Their refactoring journey cut initialization time and bu...
OOM Bitmap Resource Analysis and Optimization
Ansgar Lin from Grindr Engineering found a single placeholder image consuming 8.3MB of memory at runtime. On devices with only 16-32MB Java heap, that's a recipe for constant crashes.
Integrating React Native into Existing Android Applications
Callstack explores how to add React Native to existing Android apps without a full rewrite. This brownfield approach lets teams ship cross-platform features while keeping their native codebase intact.
A Day in the Life of a Mobile Product Engineer at Slack
Kevin, a Staff Engineer at Slack, shares how a distributed mobile team ships features across Vancouver and San Francisco without stepping on each other's toes. His secret? Strategic work separation and dogfoodi...
Gradle Remote Build Cache Optimization
Nelson Osacky from SoundCloud reveals how simply turning on Gradle's remote build cache got them almost zero cache hits. The real work was hunting down why.
Running Android Instrumentation Tests on Circle CI Without a Third Party Service
Doğu Deniz Uğur challenges CircleCI's own documentation. While the official docs say Android emulator tests aren't supported on their Linux VMs, he found a workaround that eliminates the need for Firebase Test ...
The Not-So-Hidden Cost of Sharing Code Between iOS and Android
Eyal Guthmann from Dropbox shares a hard truth: writing code once in C++ cost them more than writing it twice in native languages. Here's why their cross-platform strategy backfired.
Transitioning to Android
Bianca Gandolfo spent 7 years mastering JavaScript—then faced an identity crisis when asked to switch to Android. Her internal debate reveals a tension every specialist faces: go deeper or go broader?
Ad Metrics Quality And Testing On Mobile
Maya Reddy from Pinterest reveals how their team eliminated last-minute P1 bugs by automating ad metrics testing. The shift from bi-weekly manual QA to continuous integration transformed their release confidenc...
Introducing Nanoscope: An Extremely Accurate Method Tracing Tool for Android Development
Uber's Android team hit a wall: their profiling tools were either too slow or too inaccurate to debug real performance issues.
Android Inter-Module Navigation with Dagger
Robinhood's Android team cracked a tough modularization puzzle: how do you navigate between completely decoupled feature modules without creating dependencies?
Hermes JavaScript Engine for React Native
Facebook just open-sourced Hermes, a JavaScript engine built specifically for React Native on Android. This isn't just another optimization tweak. It's a ground-up rethink of how JS should run on mobile.
Handling WebP OutOfMemoryError in Android
Ansgar Lin from Grindr Engineering discovered their app was crashing with OutOfMemoryErrors, and the culprit wasn't bad code. It was a tiny WebP image causing massive runtime memory allocation.
React Native Version 0.60 Release
React Native 0.60 just dropped with changes so significant, they're calling it a migration milestone. If you're still manually linking native modules, this changes everything.
OkHttp 4 Goes Kotlin
Jesse Wilson from Square just rewrote 25,000 lines of Java code in Kotlin without changing a single feature or fixing a single bug. Here's why that matters for your Android app.
Android Jetpack Benchmark: JSON Parser Performance
Mootaz Ltaief from OLX Engineering put four popular Android JSON parsers head-to-head using Jetpack Benchmark. The results reveal a brutal tradeoff: the fastest parser costs you 1.1 MB of app size.
Best Practices for Video Playback in Android
Saurabh Arora from Viki reveals the video playback mistakes that shock users and kill engagement. Most Android apps get at least 3 of these wrong.
Mobile Release Engineering at Scale: ShipIt Mobile
Alejandro Rodriguez Salamanca from Shopify reveals how manual mobile releases were killing their velocity. The solution? A platform that cut release cycles from 3 weeks to 1 week.
Employing QUIC Protocol to Optimize Uber’s App Performance
Uber operates across 600+ cities on 4,500+ mobile carriers. Their HTTP/2 stack was failing users in lossy wireless networks.
Blibli x Android Room
Andrew Winata from Blibli shows how ditching raw SQLite queries for Room cut boilerplate code and made database operations type-safe at compile time. The migration took just a few strategic refactoring steps.
The Story of Our Big Android App Rewrite
Gojek's driver app serves 2 million+ partners who depend on it for their daily income. When the app goes down for even an hour, drivers lose significant earnings—so a rewrite was high stakes.
Optimizing App Subscriptions with New Tools
Daniel Schramm from Google Play just dropped new analytics tools that could transform how you think about subscription revenue. If you're leaving money on the table with failed payments, this matters.
Quality Assurance and Testing for Mobile Applications
Julio Zynger from SoundCloud reveals how they ship mobile releases every two weeks without breaking things. Their secret? A release train model that turns chaos into predictability.
Implementing Infinite Scrolling Efficiently
Phong Lam from Walmart Global Tech tackles a problem every mobile dev faces: infinite scroll that doesn't tank performance. His solution? Stop rendering everything and start being strategic.
Measuring Kotlin Build Performance
Uber ran 129 experiments across 354 projects to answer one question: What's the real cost of adopting Kotlin at scale?
Breaking up the App Module Monolith: The Story of Robinhood's Android App
Robinhood's Android app hit a wall: 100k+ dex count, skyrocketing build times, and features breaking each other. Sound familiar?
Amplify Framework adds authentication features and enhancements for iOS and Android Mobile SDKs
AWS Amplify just made mobile authentication dramatically simpler. Device tracking, OAuth 2.0, and SAML federation now work out of the box for iOS and Android developers.
React Native 0.59 Release
React Native 0.59 just dropped with the biggest Android performance upgrade in years. If your app still feels sluggish compared to iOS, this changes everything.
Building a Dynamic UI System at Carousell (Part 1)
Siaw Young from Carousell reveals how they built a system that lets them update thousands of product categories without pushing app updates. The secret? A cross-platform markup language that operates at a highe...
Building a Dynamic UI System at Carousell (Part 2)
Siaw Young from Carousell reveals how they built a server-driven UI system that lets them ship features without app releases. Think HTML for mobile apps—but way more powerful.
Android Development with GraphQL
Efe Karasabun from Thumbtack reveals how GraphQL solved their biggest mobile API headaches. No more over-fetching data or coordinating breaking changes across teams.
OkHttp 3.13 Requires Android 5+
Jesse Wilson explains why Square is cutting off 11% of Android devices with OkHttp 3.13. Spoiler: your web servers might break too.
AIR GO and APK Signing
Seunghoon Kim from LINE's AIR GO team breaks down Android's APK signing evolution. If you're still using v1 signing, you're leaving security holes wide open.
Introducing Inclusive Beauty Searches for Mobile
Pinterest just shipped a feature that 60% of their top beauty searches were literally asking for. Yanis Markin walks through how they combined ML with inclusive design to solve it.
Engineering Uber Lite
Uber's main app hit 60MB and struggled on older Android devices in emerging markets. So they built something radically different.
Coupang Android Architecture Part 3
Seongchul Park from Coupang reveals how their Android team escaped the 'big ball of mud' by rethinking how they organize code. Spoiler: it wasn't just about modules.
How To Maximize Android's UI Reusability: 5 Common Mistakes
Carlos Palacin Rubio from Groupon's Android team reveals why your "optimized" UI code is actually killing reusability. Spoiler: that single ConstraintLayout you're so proud of? It's a maintenance nightmare.
Mastering Kotlin Conventions: Get, Set, and Range Operations
Gopinath Langote from N26 shows how Kotlin's operator overloading can transform verbose getter/setter code into elegant, readable syntax. Instead of date.getMonth() or date.setMonth(6), what if you could just w...
Performance comparison of video coding standards: an adaptive streaming perspective
Joel Sole and the Netflix encoding team reveal why codec comparison studies often contradict each other—and how they're fixing the problem. Their findings challenge conventional wisdom about H.264, H.265, and V...
Mastering Kotlin Conventions: Operators and Arithmetic Operations
Gopinath Langote from N26 shows how Kotlin's operator overloading turns verbose code like Number(1).plus(Number(2)) into elegant Number(1) + Number(2). This isn't just syntactic sugar—it's a fundamental shift i...
Hate to Wait: How Skyscanner Used Module Caching to Cut App Build Speed in Half
Skyscanner's iOS developers were waiting hours for builds to complete. Their CI/CD team cut that time in half with a clever caching strategy.
Consistent Caching Mechanism in Titus Gateway
Netflix's Titus container platform hit a wall: their singleton leader couldn't handle the API query load. Here's how they scaled horizontally without breaking consistency guarantees.
Coupang Android Architecture Part 2
Seongchul Park from Coupang reveals how they tackled a monolithic Android codebase with hundreds of thousands of lines of code. The solution? Strategic modularization that transformed both build times and code ...
What We've Learned at KotlinConf 2018
Rares Musina from N26 shares how their mobile bank went all-in on Kotlin—and what they learned at KotlinConf 2018. Spoiler: coroutines, DSLs, and faster backends are changing everything.
MobileLab: Prevent Mobile Performance Regressions
Facebook ships thousands of commits daily to their mobile apps. How do you catch a 1% performance regression before millions of users feel it?
Using Kotlin extensions to make the Android SDK friendlier
The Android SDK's rough edges force developers into verbose workarounds. Kotlin extensions offer a cleaner path forward.
Building Reactive Component Systems with Kotlin
Zsolt Kocsi from Bumble reveals how his team tamed the chaos of reactive Android components. The secret? Two minimal interfaces and a powerful abstraction that makes subscription management disappear.
Why We Decided to Rewrite Uber's Driver App
Uber rewrote their entire driver app with hundreds of engineers over 18 months. Joel Spolsky once called rewrites 'the single worst strategic mistake' a software company can make.
Blibli.com Android Evolution
Cesario Putera from Blibli.com shares a brutally honest story: their Android app went through 4 complete rewrites, each time drowning in technical debt. The fourth attempt? They couldn't afford to stop and rebu...
Mobile Tophatting at Shopify
Pedro Piñera from Shopify reveals how they turned a 15-minute context switch into a single command. No QA team? No problem when developers can test each other's work this fast.
How Discord Handles Two and Half Million Concurrent Voice Users Using WebRTC
Discord handles 2.6 million concurrent voice users with just 850 servers across 13 regions. Here's how they built a custom WebRTC architecture that scales.
Universal Links for Android and iOS
Konstantin Yakushev from Bumble Tech reveals the brutal truth about universal links: Apple and Google's 'simple' solution is riddled with undocumented bugs that break user experience in shocking ways.
Universal Links for Android and iOS
Konstantin Yakushev from Bumble reveals the brutal truth about universal links: Apple and Google's 'simple' solution is riddled with undocumented bugs that break user experience. Here's how Badoo's team catalog...
Guide to Mobile App Autotesting Tools
Arseny Batyrov from Badoo's QA team built the mobile testing guide he couldn't find anywhere else. After combing the internet for tool comparisons and finding nothing comprehensive, he created this definitive b...
Guide to Mobile App Autotesting Tools
Arseny Batyrov from Badoo's QA team built the mobile testing guide he couldn't find anywhere else. His comprehensive breakdown of autotesting tools reveals which ones actually matter in 2018.
MVI Beyond State Reducers: A Modern Kotlin-Based MVI Architecture
Zsolt Kocsi from Bumble reveals how their chat module had bugs so elusive that QA could record them happening but developers could never reproduce them. The culprit? Uncontrolled state management in a massively...
A Modern Kotlin-Based MVI Architecture
Zsolt Kocsi from Badoo reveals how their chat module kept losing first messages despite a full Clean Architecture rewrite. The culprit? Uncontrolled state mutations in a massively asynchronous app.
Unified Cross-Platform Performance Metrics
Slack's engineering team faced a classic scale problem: three platforms, three definitions of 'app launch,' and zero ability to compare performance meaningfully.
Android Face Detection Using ML Kit
Cesario Putera from Blibli.com shows how Google's ML Kit brings powerful face detection to Android apps with surprisingly little code. No PhD required.
Android Emulator AMD Processor Hyper-V Support
Jamal Eason from Google just opened up hardware-accelerated Android emulation to thousands of developers who were stuck with slow software emulation. If you've been running AMD processors or Hyper-V, this chang...
Android App Bundle: Distribution and Size Optimization
Dmytro Khmelenko breaks down how Android App Bundle reduced their app size by 20% without changing a single line of code. Here's how Google's 2018 feature actually works under the hood.
3 Years of Android Development at Traveloka
Ahmad Fadli Basyari from Traveloka watched build times balloon from 3 minutes to 10 minutes as the app grew from 3 products to 20+. His team's solution? Rewrite the entire app twice in three years.
A New Era of Launching Mobile Games
Emily Putze from Google Play reveals why your mobile game launch strategy is probably outdated. The old playbook that worked in 2014's gold rush era is now a recipe for expensive failure.
Loading Time Matters
Zalando proved that every 100ms of loading time equals real money: a 0.7% revenue lift per session. When 75% of your traffic is mobile, milliseconds become millions.
Reducing APK Size: A Journey to Smaller Android Apps
Dmytro Khmelenko shares how a job candidate's pointed question about their 63 MB APK sparked a complete optimization overhaul. The results? A 62% size reduction that every Android team should study.
Coupang Android Architecture Part 1
Joris Abale from Coupang reveals how they rescued a massive Android app drowning in God Activities and Fragment chaos. Their journey from architectural debt to 80% test coverage is a masterclass in pragmatic re...
Android Search Performance Improvements (Part 2)
Yelp's Android team cut search render time nearly in half while slashing dropped frames by 48%. Here's how they did it.
Improved Mobile Performance
Teamweek just made a bold move: they killed their native mobile apps. Instead of maintaining separate iOS and Android codebases, they bet everything on a mobile-optimized web experience.
5 Reasons Why N26 Is Moving to Kotlin
Pat Kua from N26 shares how the fintech company moved from Java to Kotlin for backend services. Their pragmatic, incremental approach turned a language migration into a productivity win.
Android Search Performance Improvements (Part 1)
Yelp users were literally grunting while waiting for search results to load. That's when the Android team knew they had a performance problem.
Android Guild Week at Strava
Todd Santaniello from Strava reveals what happened when their entire Android team stopped shipping features for a week. The goal? Break apart a 6.5-year-old monolithic codebase that was crushing build times and...
The Mobile Crash Reporting Pipeline at LinkedIn
LinkedIn processes massive volumes of mobile crash data to keep their app stable for millions of users. Here's how they built the pipeline.
A Massively Multi-User Datastore Synced with Mobile Clients
Tad Book from Square reveals how they built a datastore that handles massive merchant catalogs while keeping mobile devices in sync, even when offline for days. The secret? An append-only architecture that make...
Android O Migration: Lessons Learned
Alizée Camarasa from BlaBlaCar shares hard-won lessons from migrating to Android O. Spoiler: their first solution caused app-wide deadlocks.
Smarter ToDos With Kotlin
Kotlin's built-in TODO() is great, except it crashes your app in production. Kaushik Gopal built something smarter.
Profilo: Understanding App Performance in the Wild
Meta's engineers were spending days or months debugging performance issues they couldn't reproduce in their device labs. Sound familiar?
Using Docker to build a testing infrastructure for web UI and mobile
LINE Engineering ditched expensive cloud testing services and built their own Docker-based infrastructure. The result? Flexible, cost-effective testing for both web and mobile.
Optimising Flipkart Android App size to sub 10 MB
Flipkart slashed their Android app size by 40% in 21 months. The result? A 34% drop in uninstall rates and massive gains in emerging markets.
Enhancing Appium Android Tests with Advanced Techniques
Raj Varma from Bumble's engineering team reveals how to give your Appium tests superpowers. His solution lets test code directly call methods inside your Android app—solving problems that seemed impossible.
Automating Mobile App Localization
Dmytro Khmelenko reveals how Freeletics turned localization from a bottleneck into a fully automated pipeline. The results? Measurable revenue spikes in newly localized markets and zero manual translation work.
Kotlin at Trello: Mobile Development Best Practices
Vishnu Rajeevan from Trello shares how his team went from 0% to 30.8% Kotlin in just over a year. Their strategy? Start with tests, then make every new feature Kotlin-only.
Developing Android Studio Plugins With Gradle
Mihaly Nagy from Groupon reveals you don't need IntelliJ IDEA to build Android Studio plugins—just Gradle and a text editor. If you've automated tasks 3 times, it's time to build a custom IDE tool.
Implementing Twitter's App Loading Animation In React Native
Ever wonder how Twitter's delightful logo-to-app loading animation actually works? Eli White reverse-engineered it and the solution is counterintuitive.
Optimise Because Performance Matters
Saurabh Arora from Viki cut their Android app's memory footprint by 27% while preparing for the Next Billion Users. His team's optimization work landed them as an Android GO launch partner.
Shrinking APKs, Growing Installs
Sam Tolomei from Google Play reveals a brutal truth: every 6MB you add to your Android app kills 1% of potential installs. And in emerging markets, the impact is even worse.
Why the First Ten Minutes Are Crucial for Mobile Game Retention
Adam Carpenter from Google reveals that most mobile games lose over half their new players in the first 10 minutes. The data shows exactly where retention breaks down and how top performers avoid it.
Improving Performance with Background Data Prefetching
Instagram serves 800 million monthly users, 80% outside the US. How do you make the app feel instant for everyone, regardless of network quality?
High-Performance App Development: Common Bottlenecks and How TripAdvisor Measured Its Way to a Faster App
TripAdvisor ships a 100MB app every two weeks to millions of users. One regression could tank performance for their entire user base.
Battery Instrumentation at Facebook
Facebook was flying blind on battery drain across a billion devices. User-facing battery percentage? Too noisy, too coarse, and deliberately inaccurate by design.
The future of multi-modal interfaces
Meta has been quietly building the foundation for interfaces that understand speech, vision, touch, and text simultaneously. The future of mobile isn't single-mode anymore.
Multi-threaded rendering on Android (with Litho & Infer)
Facebook's mobile team tackled one of Android's toughest performance challenges: keeping UI rendering smooth without blocking the main thread.
Efficient and healthy background data prefetching at Instagram
Instagram's background prefetching could easily drain batteries and waste data. Here's how they built a system that's both fast and responsible.
Multithreaded Rendering on Android with Litho and Infer
Meta's News Feed team solved what many thought impossible: smooth multithreaded rendering on Android at massive scale.
Kotlin: An Exploration of Sealed Classes
James Shephard from BBC explores how Kotlin's sealed classes can fundamentally reshape your Android architecture. What if callbacks aren't the answer to async operations?
Mobile Apps: iPlayer Tech On The Move
Ross Harper from BBC's iPlayer team reveals how they ship to 45+ million downloads across thousands of device variants. Their secret? A shared codebase that builds two distinct products.
Reactive Clean Architecture with Android Architecture Components
Lucia Payo from N26 reveals how combining RxJava, Clean Architecture, and Android Architecture Components created a system where code writes itself faster over time. The secret? Infinite data streams that never...
Color Your Apps in React Native Using Material Palette
Want your React Native app to automatically match its UI colors to any image? There's now a library that taps into Android's Material Design color extraction magic.
React Native Performance In Marketplace
Facebook cut React Native Time to Interaction in half on low-end Android devices. The secret? They stopped trusting their testing tools and went straight to production data.
Map Performance Comparison and Judy Data Structure Alternatives
Marko Kevac from Bumble's Platform team benchmarked 6 associative array implementations to replace their aging Judy data structure. The winner? Not what you'd expect when memory matters.
Mind Maps for Fast and Effective Testing
Kateryna Sprynsian from Bumble's iOS team ditched traditional test cases for something faster. With weekly releases shipping multiple features, her team needed a testing approach that could actually keep up.
Android Instant Apps at Thumbtack
Francis Kam from Thumbtack reveals how they partnered with Google pre-launch to build one of the first Android Instant Apps. The results? Instant app messages now equal their full installed app.
Strava Mobile App Versions
Jeff Remer from Strava explains why their mobile app jumped from version 5.14 to 14.0 in just four months. Spoiler: it wasn't feature bloat.
Integrating React Native in an Existing Application
Guillermo Orellana from Bumble's tech team walks through the real-world pain of integrating React Native into an existing Android app. Spoiler: the official docs won't save you.
Android Tech Stack Overview
Wahib-Ul-Haq from Freeletics opens the vault on the complete Android tech stack powering four production fitness apps. This is the kind of transparency engineering teams rarely share publicly.
RxJava 1 -> RxJava 2 (Understanding the Changes)
RxJava 2 was a complete rewrite with breaking APIs. If you're still on version 1, here's what changed and why it matters.
RxJava 1 -> RxJava 2 (Disposing Subscriptions)
Migrating from RxJava 1 to RxJava 2? The biggest gotcha isn't what you think—it's how you dispose of subscriptions.
Reactive Camera Implementation with Camera2 API on Android - Part 1
Arkady Gamza from Bumble Tech tackles Android's notoriously complex Camera2 API by wrapping it in RxJava2 observables. The result? A reactive camera implementation that turns callback hell into elegant, readabl...
Kotlin for Mobile Development
Martynas Jurkus from Vinted reveals how his team bet on Kotlin two years before Google officially backed it. The result? A complete transformation of their Android development workflow.
Detecting List Items Observed by User
Zalando's engineering team faced a tricky challenge: how do you know if a user actually *saw* an item in a scrolling list, not just flew past it?
Mobile Crash Reporting at LinkedIn
LinkedIn built their own crash reporting system instead of using third-party tools. Here's why that decision paid off.
Messaging Sync: Scaling Mobile Messaging at Airbnb
Zhiyao Wang and the Airbnb team tackled a massive problem: their mobile inbox was loading like a 2001 webmail client. With 100k+ messages per hour, every tap meant a network request, killing UX on slow connecti...
Writing a Custom Android Component for React Native
Guillermo Orellana from Bumble's tech team tackles React Native's biggest question: Can you actually integrate complex native Android components without losing your mind?
Building a Dynamic Mobile CI System
Shopify slashed their mobile CI deploy times from 2.5 hours to 15 minutes. Here's how they built a system that scales horizontally without breaking a sweat.
Breaking the Limitations of Calabash Android
Rajdeep Varma from Badoo cracked a problem that's plagued Android test automation for years. His solution lets Calabash test anything on the device, not just your app's UI.
Breaking the Limitations of Calabash Android
Rajdeep Varma from Badoo cracked a problem that's plagued mobile test automation for years: Calabash could only test what's inside your app, while Appium couldn't use backdoor methods. His solution? Merge the b...
Implementing Android Navigation Drawer and Status Bar in React Native
Callstack tackles one of React Native's most frustrating Android UX challenges: making the navigation drawer and status bar play nicely together. Spoiler: the default behavior is broken.
Better List Views
React Native just killed ListView. The new list components solve memory leaks, stale rows, and ignored bugs that plagued mobile developers for years.
Android Handler Memory Leaks
Dima Voronkevych from Bumble's Android team reveals how a simple Handler.postDelayed() call created 7 Activity instances in memory when only 1 should exist. The garbage collector couldn't save them.
Android Handler Memory Leaks
Dima Voronkevych from Bumble's Android team reveals how a simple postDelayed() call can silently keep 7 Activity instances alive in memory. Even with garbage collection, your app might be one rotation away from...
Using Native Driver For Animated
Your React Native animations are probably running on the wrong thread. Here's how one config flag can eliminate frame drops when JavaScript gets blocked.
Mobile App Testing Tips and Tricks
Alexander Khozya from Bumble's mobile QA team shares battle-tested strategies that caught critical bugs before millions of users did. His team's approach to testing saved them from costly re-submissions and use...
Dockerizing Calabash Android Testing on macOS
Rajdeep Varma from Badoo (now Bumble) tackled a problem that sounds impossible: running Android device tests inside Docker on macOS when Docker can't even see USB devices. The workaround? Brilliantly hacky.
Motion Recognition for Fitness on Android Wear
Edward Dale from Freeletics shows how a simple peak detection algorithm can count pushup reps on Android Wear with surprising accuracy. The secret? Freeletics-style pushups include a hand lift that creates a pe...
A/B Testing using Google’s Staged Rollouts
Twitch discovered that Google Play's staged rollouts create biased user groups, breaking standard A/B testing assumptions. Here's how they adapted.
Four Load Testing Mistakes Developers Love to Make
Klarna Engineering found that developers' optimism about their own code creates predictable load testing blind spots. Here are the four mistakes that keep biting teams before Black Friday.
Easier Upgrades
React Native upgrades used to be a nightmare of merge conflicts and lost changes. The React Native team just changed that with a clever Git-based solution.
Checkstyle on Changed Files with Gradle
Marc Prengemann from mobile.de faced 30,000+ Checkstyle violations in their Android codebase. Instead of grinding to a halt, his team found a smarter way forward.
Epoxy: Airbnb's View Architecture on Android
Eli Hart from Airbnb reveals how they eliminated RecyclerView boilerplate while building complex screens with 8+ view types. Their solution handles diffing, animations, and state management automatically.
Engineering the Architecture Behind Uber’s New Rider App
Uber completely rewrote their rider app from scratch. Here's why they threw away years of code and started over.
Crashcan: Building a Better Mobile Crash Analytics Platform
Etsy built Crashcan, their own mobile crash analytics layer on top of a third-party provider. Why not just use the vendor's dashboard?
React Native 0.36: Headless JS, Keyboard API, and More
React Native 0.36 just dropped with game-changing background task support. If you've been waiting to run JavaScript while your app sleeps, this is your moment.
Offline First: Introducing TrueTime for Swift and Android
Instacart shoppers were losing minutes in grocery store dead zones. The culprit? You can't trust device clocks when every second counts.
Mobile Compose Refresh Architecture
Madeleine Chercover from Hootsuite tackled a 3,500-line Android activity that had become a maintenance nightmare. Her solution? A modular MVVM architecture that makes features easy to add and hard to break.
Android Schemas for Mobile Development
Dan Lew from Atlassian reveals how Trello Android went from dropping the entire database on every schema change to implementing proper upgrades. The reason? They were secretly building offline mode.
Improving Chat Rendering Performance
Twitch was dropping frames like crazy. Chat messages were taking 200ms to render when they had just 16.667ms to work with for smooth 60fps video.
Dynamic App Content: An Introduction to Truly Native Apps
Zalando faced an impossible triangle: daily content updates, premium native UX, and distributed teams without native experience. Their solution? Server-driven UI before it was cool.
The Mobile Device Lab at the Prineville Data Center
Facebook built a 2,000-device testing lab inside a data center. The journey from tangled cables to custom EMI racks is a masterclass in scaling mobile performance testing.
Getting to Slack Faster with Incremental Boot
Slack was making 4.2 million users wait through loading screens every single day. Time to fix that.
Android Testing with Mocking
Abha Gupta from Walmart Global Tech tackles one of Android testing's toughest challenges: running mock servers inside your APK for reliable device farm testing. No external dependencies, no flaky tests.
Better Android Intents With Dart Henson
Daniel Molinero Reguera from Groupon reveals how traditional Android Intent creation is silently breaking apps at runtime. His team built a solution that catches errors at compile time instead.
Android: An Exercise in "Ship It"
Airbnb rebuilt their entire Android app in weeks to meet a hard Google I/O deadline. The catch? They couldn't throw away the old codebase.
React Native: A Year in Review
Martin Konicek reveals how a 2013 hackathon project became a framework that changed mobile development forever. One year after open-sourcing, React Native hit 30,000 GitHub stars and attracted 650+ contributors...
React Native: A Year in Review
One year after open sourcing React Native, Facebook dropped a bombshell at F8: Microsoft and Samsung are bringing the framework to Windows, Xbox, and SmartTVs. The mobile-first framework just became platform-ag...
Reproducible Android Builds
Signal just made their Android builds reproducible, and they're practically begging you not to send them panicked encrypted emails about it. This is transparency done right.
Dive Into React Native Performance
The React Native team made their app startup twice as fast. Here's how they tackled one of mobile's most critical performance challenges.
Introducing Hot Reloading
React Native just solved one of mobile development's most frustrating problems: losing your app state every time you make a code change. Their new Hot Reloading feature keeps your app running while injecting up...
Open Sourcing LightCycle: Android Lifecycle Management
Guillaume Lung from SoundCloud just open-sourced LightCycle, a library that tackles one of Android's messiest problems: lifecycle management sprawl in Activities and Fragments.
Integrating Android Projects with Codecov for Coverage Tracking
Still manually checking code coverage on Android PRs? There's a better way that turns coverage tracking into an automated gatekeeper for your codebase.
The LinkedIn Android Data Pipeline
LinkedIn rebuilt their Android data pipeline from scratch for their flagship app. The result? A system that handles everything from feed updates to messaging while keeping data consistent across screens.
Failing Fast with Reliable and Actionable System-Level Tests
Skyscanner's test suite had a 99% pass rate. Sounds great, right? Wrong. Those false failures were costing hours of productivity and masking real production issues.
Solving the Problem of One Billion Computations
Skyscanner needed to store 1.6 billion weights to rank hotel prices. Their in-memory approach couldn't scale, so they turned to AWS.
3x3: Speeding Up Mobile Releases
LinkedIn went from monthly releases to shipping mobile code 3x per day. Here's how they automated their way out of a month-long release cycle.
Mobile A/B Testing at Quora
Tommy MacWilliam from Quora reveals how they A/B test mobile UX without waiting weeks for App Store approval. The secret? A hybrid architecture that lets them iterate at web speed.
Android's Multidex Slows Down App Startup
Michael Ma from Groupon discovered that enabling multidex increased their Android app startup time by 15% on pre-Lollipop devices. Here's how his team clawed that performance back.
Making React Native Apps Accessible
Facebook's Ads Manager app demonstrates how React Native's Accessibility API makes mobile apps usable for everyone, including people with vision loss. Here's how they built it.
Functional Reactive Programming On Mobile: A Rosetta Stone
Nick Tinsley from Squarespace shows how the same reactive programming patterns work across iOS, Android, and React Native. Think Excel formulas, but for your entire mobile app.
React Native for Android
Facebook just dropped React Native for Android, completing the cross-platform puzzle that started with iOS earlier in 2015. Their first test? Building a production app used by millions of advertisers.
Handling Orientation Changes on Android
Android orientation changes are one of the most frustrating challenges for mobile engineers. When users rotate their device, Android destroys and recreates your Activities and Fragments, wiping out all member v...
Gradle Daemon Support for Faster Build Compilation
Andrey Breslav from JetBrains tackles one of mobile development's biggest pain points: slow build times that kill developer productivity.
Discover Pinterest Mobile Engineering and Design
Pinterest engineers rebuilt their mobile onboarding experience and saw engagement metrics jump across the board. With 80% of users on mobile, they had to get this right.
Mobile Performance: Tooling Infrastructure at Facebook
Facebook processes thousands of mobile code changes weekly. How do they catch performance regressions before users feel the pain?
React Native: Bringing Modern Web Techniques to Mobile
Facebook reveals why React Native emerged from a simple realization: the principles that made React successful on web could transform mobile development. This 2015 post captures the pivotal moment when declarat...
Crittercism: Solving Mobile Performance Issues for One Billion Users | AWS Startups Blog
Crittercism handles more traffic than Google Search (50K vs 40K requests/second) with just 3 DevOps engineers. How do they pull this off?
High Performance WebViews
John Bito from Zillow reveals how they cut home listing load times in half while making it easier to ship features across iOS, Android, and web. The secret? Rethinking how WebViews work in native apps.
Preserving User Context During Android App Installation
Ever lose a user the moment they install your app? That frustrating context loss between web and app has a surprisingly simple fix.
Building Carousel Part III: Drawing Images on Screen
Tina Wen from Dropbox tackles a deceptively hard problem: how do you render tens of thousands of photos at 60fps without turning your app into a slideshow of gray squares?
The Tech Behind Dropbox's New User Experience on Mobile - Part 2
Viraj Mody from Dropbox reveals how they built a mobile-to-desktop onboarding flow so seamless that users in testing didn't even notice the magic happening. Zero password typing required.
Building Dropbox's New User Experience for Mobile Part 1
Kat from Dropbox discovered that slowing down their signup flow actually increased conversions. Counter-intuitive? Here's why it worked.
Building Carousel Part II: Speeding Up the Data Model
Dropbox engineers faced a brutal reality: reading 5,000 photos from SQLite took a full second on a Nexus 5. For users with 100,000+ photos, the standard approach would be unusable.
Google Play Services 5 Release
Google just dropped Play Services 5.0 with a game-changing lineup. From wearable APIs to dynamic security patches, this release touches nearly every part of the Android ecosystem.
Android L Developer Preview Release
Google just dropped the Android L Developer Preview months before launch, giving developers unprecedented early access to test the next major Android release. This is a game-changer for app readiness.
Building Successful Global Apps
Purnima Kochikar from Google Play reveals how Android developers earned over $5 billion in payouts. With 1 billion active Android users, the platform just rolled out a suite of tools to help developers scale gl...
Developer Preview and Play Services 5
Jamal Eason just announced something unprecedented: Android's first-ever public developer preview before launch. Google is opening up the L release early, fundamentally changing how developers prepare for major...
Cloud Integration and Android Studio Development
The article content failed to load due to a blocked page error. Without access to the actual article text about Cloud Integration and Android Studio Development, I cannot provide an accurate summary.
FlatBuffers: Memory-Efficient Serialization
Wouter van Oortmerssen from Google's Fun Propulsion Labs just open-sourced FlatBuffers, a serialization library that reads data without unpacking or allocating extra memory. Game developers struggling with perf...
Android Wear Design Story
Roman Nurik and Timothy Jordan from Google's Android team designed their first Android Wear app and discovered something surprising: adapting square UIs to round screens took under an hour.
Notification Implementation Best Practices
Wayne Piekarski shows how Android Wear notification pages require just ONE extra line of code. Seriously, that's it.
Stacking Notifications for Android Wear
Wayne Piekarski from Google shows how Android Wear notification stacking takes just a few lines of code. This 2014 developer preview tutorial remains a masterclass in API simplicity.
Google Play Services 4.4 Release
Google just rolled out Play Services 4.4 globally, and it's bringing Street View to Android apps for the first time. If you've been waiting to embed 360-degree panoramic imagery into your activities, this is yo...
Building Carousel Part I: How We Made Our Networked Mobile App Feel Fast and Local
Dropbox's Carousel team faced a brutal truth: their photo app was slower than local galleries, and users noticed. No one wants to wait for network requests just to delete a photo.
Garbage Collection Optimization: High Throughput and Low Latency Java Applications
LinkedIn Engineering cut their tail latency by 75% through systematic garbage collection tuning. Here's their playbook for high-performance Java apps.
Android Wear Developer Preview
Austin Robison from the Android Wear team just opened the door to wrist-based computing. Google's betting that notifications on your wrist will change how users interact with their phones.
Google Play Services 4.3 Release
Google just rolled out Play Services 4.3 globally, and it's bringing some heavy hitters into the fold. Analytics and Tag Manager are now first-class citizens alongside game-changing updates to Drive and Games A...
New Client API Model in Google Play Services
Magnus Hyttsten from Google Developer Relations reveals a major shift in how Android developers connect to Google Play services. The old multi-client approach? Deprecated.
Google Play Services 4.2 Release
Google just unified its entire Android services SDK model. If you've been juggling multiple client classes across Maps, Drive, and Cast APIs, this changes everything.
Process Stats: Understanding How Your App Uses Memory
Dianne Hackborn from the Android framework team reveals a hidden tool that exposes exactly how your app behaves when users aren't looking. Most developers are flying blind on background memory usage.
Mobile A/B Testing at LinkedIn: How Members Shape Our Apps
LinkedIn ships a single mobile binary but runs dozens of A/B tests simultaneously. Here's how they pulled it off without constant app releases.
Android Staggered Grid Implementation
Deniz Veli from Etsy tackled a problem every Android dev knows: GridView and ListView just don't cut it for complex layouts. So they built their own.
Google Play Services 4.1 Release
Google just dropped a game-changing update to Play Services that fundamentally shifts how mobile games handle multiplayer and how apps integrate with Drive. This isn't just another SDK update.
Service Update Major Video System Update and Prague is Online
Twitch rebuilt their entire video infrastructure while serving millions of concurrent viewers. Here's how they pulled off a zero-downtime migration.
Changes to SecretKeyFactory API in Android
Trevor Johns from Android Developer Relations reveals a breaking change that could silently corrupt encrypted data for apps using Unicode passphrases. If your app uses PBKDF2 key derivation, this affects you.
New Tools for Game Development on Android
Google just open-sourced a physics engine with fluid simulation and made Unity integration dead simple. If you're building mobile games, December 2013 brought some serious firepower to your toolkit.
Android 4.4 KitKat and Updated Developer Tools
Dave Burke, Engineering Director for Android Platform, just dropped Android 4.4 KitKat with a game-changing focus: making flagship Android experiences run smoothly on entry-level hardware. Project Svelte proves...
Google Play Services 4.0 Release
Google just dropped Android 2.2 support to unlock more powerful APIs. Google Play Services 4.0 brings major changes that will affect how you monetize and track users.
Getting Your SMS Apps Ready for Android 4.4 KitKat
Scott Main and David Braun from Android just changed the rules for SMS apps. If you're using hidden APIs, your messaging app will silently fail on KitKat.
New Developer Features in Google Play Services
Greg Hartrell from Google's Play Games team just dropped three major updates that give game developers unprecedented visibility into player behavior and double their cloud storage capacity.
How To Configure Kotlin In Your Project
Natalia Ukhorskaya from JetBrains shows how Kotlin's seamless Java interop makes adoption frictionless. Just create a .kt file and let IntelliJ do the heavy lifting.
Working With Kotlin In Android Studio
JetBrains made history in 2013 by bringing Kotlin to Android Studio for the first time. This walkthrough from the early days shows just how far Android development has come.
Etsy's Device Lab
When mobile traffic jumped from 25% to 40% in six months, Etsy knew they had a problem. Their engineers were testing on personal iPhones while users browsed on dozens of different devices.
Login Verification On Twitter For iPhone And Android
Twitter built a 2FA system where your private keys never leave your phone and the server stores no persistent secrets. Here's the engineering behind it:
Mobile App Development: Catching Crashers
Twitter's iOS team shipped beta builds to employees and discovered crashes that would never show up in testing. The culprit? Jailbroken devices and unprefixed Objective-C categories.
Introducing the Dropbox Sync API for Mobile Developers
Brian Smith from Dropbox introduced an API in 2013 that promised to make cloud sync feel like working with local files. Developers loved it, but there's a twist.
Low Latency Switching in Signal
Signal's team discovered that building encrypted voice calls was easy. Building a VoIP system that actually worked well? That was the hard part.
Right To Left Support For Twitter Mobile
Christine Tieu from Twitter's Mobile Web Team reveals how they flipped their entire mobile UI for Arabic and Farsi without drowning in duplicate CSS rules.
Keeping Instagram Up with Over a Million New Users in Twelve Hours
Instagram's Android launch brought 1 million new users in 12 hours. Here's how their infrastructure team kept the lights on during hypergrowth.
Blazing Fast Node.js: 10 Performance Tips for LinkedIn Mobile
LinkedIn Engineering discovered that one synchronous file write operation tanked their Node.js throughput from thousands of requests per second to just dozens.
Most Memory Leaks Are Good
Shopify Engineering shares a war story: their app servers were hitting 16GB+ memory usage, crashing with ENOMEM errors, and requiring constant restarts. The culprit? Not where they expected.
Mobile Proxy Architecture at SoundCloud
SoundCloud's mobile team hit a wall: their API-first approach broke down when browsers couldn't handle CORS redirects properly. Their solution? A proxy architecture that evolved from nginx to Node.js.