---
title: "Tag: android-app-development | Shreyas Patil's Blog"
description: "Senior Android Engineer @ Deliveroo. Google Developer Expert for Android. Writing about Android, Kotlin, and AI."
image: "https://blog.shreyaspatil.dev/og.png"
---

# Tag:android-app-development

All the articles with the tag "android-app-development".

# Tag:android-app-development

- [![](https://blog.shreyaspatil.dev/_astro/cover-inside-subcomposelayout-jetpack-composes-most-misunderstood-api.cJKPADTC_1gDsFf.webp)](https://blog.shreyaspatil.dev/inside-subcomposelayout-jetpack-composes-most-misunderstood-api)[## Inside SubcomposeLayout: Jetpack Compose’s Most Misunderstood API](https://blog.shreyaspatil.dev/inside-subcomposelayout-jetpack-composes-most-misunderstood-api)10 Jul, 2026A deep dive into the internals of SubcomposeLayout in Jetpack Compose. Learn how subcomposition actually works, why it breaks the phase rules, and the real node-thrashing cost it carries.
- [![](https://blog.shreyaspatil.dev/_astro/cover-the-future-of-android-apps-with-appfunctions.BqdOiD9T_2jRkYO.webp)](https://blog.shreyaspatil.dev/the-future-of-android-apps-with-appfunctions)[## The Future of Android Apps with AppFunctions](https://blog.shreyaspatil.dev/the-future-of-android-apps-with-appfunctions)30 Mar, 2026Explore the potential of Android AppFunctions for AI agents. Learn how apps can share functionality with intelligent assistants using self-describing functions.
- [![](https://blog.shreyaspatil.dev/_astro/cover-droidcon-debugging-app-performance-at-scale.Cpbtphar_1diuAG.webp)](https://blog.shreyaspatil.dev/droidcon-debugging-app-performance-at-scale)[## DroidCon: Debugging App Performance at Scale](https://blog.shreyaspatil.dev/droidcon-debugging-app-performance-at-scale)19 Jan, 2026Recap of my DroidCon India 2025 talk on debugging Android app performance at scale. Watch the session and learn about performance profiling tools.
- [![](https://blog.shreyaspatil.dev/_astro/cover-a-simple-key-to-a-better-lazylist-in-jetpack-compose.CPKVZHSX_2vSNOn.webp)](https://blog.shreyaspatil.dev/a-simple-key-to-a-better-lazylist-in-jetpack-compose)[## A Simple key to a Better LazyList in Jetpack Compose](https://blog.shreyaspatil.dev/a-simple-key-to-a-better-lazylist-in-jetpack-compose)8 Oct, 2025Learn how to optimize Jetpack Compose LazyList performance using keys. Understand how keys help reduce recompositions and improve scrolling efficiency.
- [![](https://blog.shreyaspatil.dev/_astro/cover-exploring-pausablecomposition-internals-in-jetpack-compose.DzUbTICL_1r8P8P.webp)](https://blog.shreyaspatil.dev/exploring-pausablecomposition-internals-in-jetpack-compose)[## Exploring PausableComposition internals in Jetpack Compose](https://blog.shreyaspatil.dev/exploring-pausablecomposition-internals-in-jetpack-compose)14 Jul, 2025Explore the internals of PausableComposition in Jetpack Compose. Learn how Compose manages state and effects when a composition is paused or resumed.
- [![](https://blog.shreyaspatil.dev/_astro/cover-deep-dive-into-annotations-in-jetpack-compose.DenxnPOw_ZodImK.webp)](https://blog.shreyaspatil.dev/deep-dive-into-annotations-in-jetpack-compose)[## Deep dive into annotations in Jetpack Compose](https://blog.shreyaspatil.dev/deep-dive-into-annotations-in-jetpack-compose)19 May, 2025An extensive deep dive into annotations in Jetpack Compose. Understand how @Composable, @Stable, @ReadOnlyComposable, and others work under the hood.
- [![](https://blog.shreyaspatil.dev/_astro/cover-understanding-dispatchers-main-and-mainimmediate.BDl5NICs_ZipbbY.webp)](https://blog.shreyaspatil.dev/understanding-dispatchers-main-and-mainimmediate)[## Understanding Dispatchers: Main and Main.immediate](https://blog.shreyaspatil.dev/understanding-dispatchers-main-and-mainimmediate)2 Apr, 2025A deep dive into Kotlin Coroutine Dispatchers. Understand the subtle but important difference between Dispatchers.Main and Dispatchers.Main.immediate in Android.
- [![](https://blog.shreyaspatil.dev/_astro/cover-benchmark-insights-direct-state-propagation-vs-lambda-based-state-in-jetpack-compose.rII8V07o_1Hqush.webp)](https://blog.shreyaspatil.dev/benchmark-insights-direct-state-propagation-vs-lambda-based-state-in-jetpack-compose)[## Benchmark Insights: Direct State Propagation vs. Lambda-based State in Jetpack Compose](https://blog.shreyaspatil.dev/benchmark-insights-direct-state-propagation-vs-lambda-based-state-in-jetpack-compose)19 Nov, 2024Performance benchmarks of direct state propagation vs. lambda-based state in Jetpack Compose. Learn which approach minimizes recompositions for better UI performance.
- [![](https://blog.shreyaspatil.dev/_astro/cover-skipping-the-invocation-of-intermediate-composables.HfKt_krd_Z2lXtL1.webp)](https://blog.shreyaspatil.dev/skipping-the-invocation-of-intermediate-composables)[## Skipping the invocation of intermediate composables](https://blog.shreyaspatil.dev/skipping-the-invocation-of-intermediate-composables)11 Nov, 2024Learn how Jetpack Compose optimizes UI rendering by skipping intermediate composables. Understand how to design your UI for maximum performance.
- [![](https://blog.shreyaspatil.dev/_astro/cover-effortless-compose-compiler-report-analysis.BD7xTqJw_ZXaPsp.webp)](https://blog.shreyaspatil.dev/effortless-compose-compiler-report-analysis)[## Effortless Compose Compiler report analysis](https://blog.shreyaspatil.dev/effortless-compose-compiler-report-analysis)20 May, 2024A guide to analyzing Jetpack Compose compiler reports easily. Learn how to diagnose stability and skippability of your composables for better performance.
- [![](https://blog.shreyaspatil.dev/_astro/cover-capturing-composable-to-a-bitmap-without-losing-a-state.BUugysfk_Z2tXncG.webp)](https://blog.shreyaspatil.dev/capturing-composable-to-a-bitmap-without-losing-a-state)[## Capturing composable to a bitmap without losing a state](https://blog.shreyaspatil.dev/capturing-composable-to-a-bitmap-without-losing-a-state)20 Mar, 2024Learn how to capture a Jetpack Compose Composable as a Bitmap without losing its current state. A deep dive into capturing high-quality UI screenshots programmatically.
- [![](https://blog.shreyaspatil.dev/_astro/cover-rich-media-input-from-the-keyboard-in-compose.DGIXdtxf_Z2iiinQ.webp)](https://blog.shreyaspatil.dev/rich-media-input-from-the-keyboard-in-compose)[## Rich media input from the keyboard in Compose](https://blog.shreyaspatil.dev/rich-media-input-from-the-keyboard-in-compose)1 Mar, 2024Learn how to handle rich media input (like GIFs and images) from the keyboard in Jetpack Compose, essential for modern chat applications.
- [![](https://blog.shreyaspatil.dev/_astro/cover-permissionflow-a-reactive-api-for-knowing-the-status-of-android-app-permissions.CLxOSnO4_Z1h67T1.webp)](https://blog.shreyaspatil.dev/permissionflow-a-reactive-api-for-knowing-the-status-of-android-app-permissions)[## PermissionFlow: A Reactive API for knowing the status of Android app permissions](https://blog.shreyaspatil.dev/permissionflow-a-reactive-api-for-knowing-the-status-of-android-app-permissions)22 May, 2023Introduction to PermissionFlow: A reactive API for Android that simplifies tracking permission status changes using Kotlin Coroutines and Flow.
- [![](https://blog.shreyaspatil.dev/_astro/cover-mastering-android-app-performance-analyzing-bottlenecks-with-perfetto.BgE8jAql_1BMFWp.webp)](https://blog.shreyaspatil.dev/mastering-android-app-performance-analyzing-bottlenecks-with-perfetto)[## Mastering Android App Performance: Analyzing Bottlenecks with Perfetto 🚦](https://blog.shreyaspatil.dev/mastering-android-app-performance-analyzing-bottlenecks-with-perfetto)13 Mar, 2023Master Android app performance profiling with Perfetto. Learn how to identify and fix UI janks and bottlenecks using system tracing.
- [![](https://blog.shreyaspatil.dev/_astro/cover-leveraging-the-snapshot-mutation-policies-of-jetpack-compose.BWFSi4Pp_Z1rOWRX.webp)](https://blog.shreyaspatil.dev/leveraging-the-snapshot-mutation-policies-of-jetpack-compose)[## Leveraging the Snapshot Mutation Policies of Jetpack Compose](https://blog.shreyaspatil.dev/leveraging-the-snapshot-mutation-policies-of-jetpack-compose)30 Jan, 2023Understand Snapshot Mutation Policies in Jetpack Compose. Learn how to control when and how your UI recomposes based on state changes.
- [![](https://blog.shreyaspatil.dev/_astro/cover-viewmodel-for-ui-business-not-ui-operations.B0rV28YY_Z14Ohu1.webp)](https://blog.shreyaspatil.dev/viewmodel-for-ui-business-not-ui-operations)[## ViewModel: for UI business, not UI operations 😮](https://blog.shreyaspatil.dev/viewmodel-for-ui-business-not-ui-operations)19 Dec, 2022Stop misusing ViewModels! Learn why ViewModels should handle UI business logic, not UI operations like showing toasts or navigation.
- [![](https://blog.shreyaspatil.dev/_astro/cover-promise-compose-compiler-and-imply-when-youll-change.DaTz17b5_Z6UTXT.webp)](https://blog.shreyaspatil.dev/promise-compose-compiler-and-imply-when-youll-change)[## Promise compose compiler and imply when you'll change 🤞](https://blog.shreyaspatil.dev/promise-compose-compiler-and-imply-when-youll-change)10 Mar, 2022Understand the Compose compiler's stability promises. Learn how @Stable and @Immutable impact recomposition and how to help the compiler optimize your UI.
- [![](https://blog.shreyaspatil.dev/_astro/cover-filtering-and-modifying-text-input-in-jetpack-compose-way.Z7FsqS6H_Z1AvGfq.webp)](https://blog.shreyaspatil.dev/filtering-and-modifying-text-input-in-jetpack-compose-way)[## Filtering and modifying text input in Jetpack Compose way](https://blog.shreyaspatil.dev/filtering-and-modifying-text-input-in-jetpack-compose-way)20 Dec, 2021Learn how to filter and modify user text input in Jetpack Compose. A guide to implementing input constraints and formatting for TextField.
- [![](https://blog.shreyaspatil.dev/_astro/cover-dont-let-viewmodel-knew-about-framework-level-dependencies.8M42Dxgw_Z1ffjeS.webp)](https://blog.shreyaspatil.dev/dont-let-viewmodel-knew-about-framework-level-dependencies)[## 🙅‍♂️ Don't let ViewModel know about framework level dependencies](https://blog.shreyaspatil.dev/dont-let-viewmodel-knew-about-framework-level-dependencies)17 Sep, 2021Explore best practices for Android ViewModels. Learn why keeping framework references out of ViewModels is crucial for testing and preventing memory leaks.
- [![](https://blog.shreyaspatil.dev/_astro/cover-observing-live-connectivity-status-in-jetpack-compose-way.CNjy1C0J_2qxllN.webp)](https://blog.shreyaspatil.dev/observing-live-connectivity-status-in-jetpack-compose-way)[## Observing Live connectivity status in Jetpack Compose way!](https://blog.shreyaspatil.dev/observing-live-connectivity-status-in-jetpack-compose-way)17 Aug, 2021Learn how to observe live network connectivity status in Jetpack Compose. A reactive approach to handling internet availability in your Android app's UI.

```json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Shreyas Patil's Blog",
  "url": "https://blog.shreyaspatil.dev/",
  "description": "Senior Android Engineer @ Deliveroo. Google Developer Expert for Android. Writing about Android, Kotlin, and AI.",
  "author": {
    "@type": "Person",
    "name": "Shreyas Patil",
    "url": "https://shreyaspatil.dev/"
  }
}
```
