<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>SudarshanTechLabs Blog: Kotlin</title>
    <link>https://sudarshantechlabs.com/blog/tag/kotlin</link>
    <description>Posts tagged Kotlin from SudarshanTechLabs.</description>
    <language>en-us</language>
    <lastBuildDate>Mon, 03 Aug 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://sudarshantechlabs.com/blog/tag/kotlin/feed.xml" rel="self" type="application/rss+xml" />
    <managingEditor>support@sudarshantechlabs.com (Sudarshan Chaudhari)</managingEditor>
    <webMaster>support@sudarshantechlabs.com (Sudarshan Chaudhari)</webMaster>
    <item>
      <title>Paging 3 in Android: Efficient List Loading at Scale</title>
      <link>https://sudarshantechlabs.com/blog/paging-3-efficient-list-loading-at-scale</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/paging-3-efficient-list-loading-at-scale</guid>
      <description>Loading a thousand-item list all at once is how apps run out of memory and feel sluggish. Paging 3 loads data in chunks as the user scrolls. Here&apos;s how it fits together with Compose, Room, and a network source. · 4 min read</description>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <category>Paging 3</category>
      <category>Android</category>
      <category>Jetpack Compose</category>
      <category>Performance</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Building an Android Widget With Jetpack Glance</title>
      <link>https://sudarshantechlabs.com/blog/building-an-android-widget-with-jetpack-glance</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/building-an-android-widget-with-jetpack-glance</guid>
      <description>Jetpack Glance lets you build home-screen widgets with a Compose-like API instead of clunky RemoteViews. Here&apos;s how it works, the constraints that make widgets different from app UI, and how to keep them updated efficiently. · 4 min read</description>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <category>Jetpack Glance</category>
      <category>Widgets</category>
      <category>Android</category>
      <category>Jetpack Compose</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Ktor Client in Android: REST API Calls the Modern Way</title>
      <link>https://sudarshantechlabs.com/blog/ktor-client-in-android-modern-rest</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/ktor-client-in-android-modern-rest</guid>
      <description>Ktor is a clean, coroutine-native HTTP client that shines especially in Kotlin Multiplatform projects. Here&apos;s how I set it up for Android — serialization, auth, retries, and error handling — and when I&apos;d still pick Retrofit. · 4 min read</description>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
      <category>Ktor</category>
      <category>Networking</category>
      <category>Android</category>
      <category>Kotlin</category>
      <category>REST</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Jetpack Compose Custom Layouts and Modifiers Deep Dive</title>
      <link>https://sudarshantechlabs.com/blog/jetpack-compose-custom-layouts-and-modifiers</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/jetpack-compose-custom-layouts-and-modifiers</guid>
      <description>When Row, Column, and Box can&apos;t express your design, Compose&apos;s Layout composable and custom modifiers let you measure and place children yourself. Here&apos;s how the measure-and-place model works and when to reach for it. · 4 min read</description>
      <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
      <category>Jetpack Compose</category>
      <category>Custom Layout</category>
      <category>Android</category>
      <category>UI</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Google Maps in Jetpack Compose: The Complete Guide</title>
      <link>https://sudarshantechlabs.com/blog/google-maps-in-jetpack-compose-complete-guide</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/google-maps-in-jetpack-compose-complete-guide</guid>
      <description>Adding Google Maps to a Compose app is straightforward once you know the Maps Compose library — markers, camera control, custom styling, and the performance and lifecycle gotchas that bite people first. · 4 min read</description>
      <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
      <category>Jetpack Compose</category>
      <category>Google Maps</category>
      <category>Android</category>
      <category>Maps</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Writing Tests for Jetpack Compose: A Practical Guide</title>
      <link>https://sudarshantechlabs.com/blog/writing-tests-for-jetpack-compose</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/writing-tests-for-jetpack-compose</guid>
      <description>How I test Compose UIs without the suite turning brittle — what to assert, how the testing APIs work, the synchronization model that makes flakiness rare, and where UI tests stop earning their keep. · 4 min read</description>
      <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
      <category>Jetpack Compose</category>
      <category>Testing</category>
      <category>Android</category>
      <category>UI Testing</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Hilt Dependency Injection: Everything You Need to Know</title>
      <link>https://sudarshantechlabs.com/blog/hilt-everything-you-need-to-know</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/hilt-everything-you-need-to-know</guid>
      <description>A from-the-ground-up guide to Hilt on Android — what dependency injection actually buys you, the core annotations, how to provide and scope dependencies, and the small set of rules that keep DI from turning into a maze. · 4 min read</description>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <category>Hilt</category>
      <category>Dependency Injection</category>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Architecture</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>My Kotlin Gradle Build Setup With Version Catalogs</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-gradle-build-setup-version-catalogs</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-gradle-build-setup-version-catalogs</guid>
      <description>Keeping Gradle sane across 20+ Android apps means one source of truth for versions. Here&apos;s how I use version catalogs, convention plugins, and a shared version file to stop dependency drift before it starts. · 4 min read</description>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
      <category>Gradle</category>
      <category>Kotlin</category>
      <category>Version Catalog</category>
      <category>Android</category>
      <category>Build</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Jetpack Compose State Management: From Simple to Complex</title>
      <link>https://sudarshantechlabs.com/blog/jetpack-compose-state-management-simple-to-complex</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/jetpack-compose-state-management-simple-to-complex</guid>
      <description>How I think about state in Compose as screens grow — from a single remembered value to hoisted state, ViewModel-backed StateFlow, and the rules that keep recomposition cheap and bugs rare. · 5 min read</description>
      <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
      <category>Jetpack Compose</category>
      <category>State Management</category>
      <category>Android</category>
      <category>StateFlow</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Jetpack Compose Navigation — My Setup After 10 Apps</title>
      <link>https://sudarshantechlabs.com/blog/jetpack-compose-navigation-my-setup</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/jetpack-compose-navigation-my-setup</guid>
      <description>Navigation in Compose has rough edges. After setting it up in 10+ apps, here is the pattern that avoids the common pain points — type-safe routes, bottom nav integration, and ViewModel scoping. · 3 min read</description>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Jetpack Compose</category>
      <category>Navigation</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Kotlin Coroutines: The Patterns I Use in Every App</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-coroutines-patterns-every-app</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-coroutines-patterns-every-app</guid>
      <description>After using Coroutines across 22+ Android apps, certain patterns appear in every codebase. Here are the ones that matter — with the mistakes they prevent. · 3 min read</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <category>Kotlin</category>
      <category>Coroutines</category>
      <category>Android</category>
      <category>Architecture</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android Background Work: WorkManager vs Coroutines vs Services</title>
      <link>https://sudarshantechlabs.com/blog/android-background-work-workmanager-coroutines-services</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-background-work-workmanager-coroutines-services</guid>
      <description>Three tools for background work, three different jobs. Picking the wrong one means battery drain, broken behavior on OEM devices, or work that silently stops running. · 3 min read</description>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>WorkManager</category>
      <category>Architecture</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Clean Architecture in Android — When It Helps and When It Hurts</title>
      <link>https://sudarshantechlabs.com/blog/clean-architecture-android-when-it-helps</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/clean-architecture-android-when-it-helps</guid>
      <description>Clean Architecture is the default recommendation for Android. It&apos;s also frequently over-applied. Here&apos;s an honest take on when it earns its complexity and when it doesn&apos;t. · 3 min read</description>
      <pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Architecture</category>
      <category>Kotlin</category>
      <category>Engineering</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Kotlin StateFlow vs LiveData: The Definitive 2026 Guide</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-stateflow-vs-livedata-2026</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-stateflow-vs-livedata-2026</guid>
      <description>LiveData is deprecated. StateFlow is the answer — but knowing why matters more than knowing which. Here&apos;s the practical breakdown after switching 22+ Android apps. · 3 min read</description>
      <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Architecture</category>
      <category>StateFlow</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>AI Pair Programming: What It Gets Right and Where</title>
      <link>https://sudarshantechlabs.com/blog/ai-pair-programming-what-it-gets-right-and-where-it-fails</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/ai-pair-programming-what-it-gets-right-and-where-it-fails</guid>
      <description>An honest look at how AI pair programming tools perform in real Android development workflows, including code generation, context understanding, and integration challenges. · 6 min read</description>
      <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>AI</category>
      <category>Tools</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Giving Claude Context About Your Android Codebase: A Practical Guide</title>
      <link>https://sudarshantechlabs.com/blog/how-to-give-claude-context-about-your-codebase</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/how-to-give-claude-context-about-your-codebase</guid>
      <description>Learn how to feed Claude the right context so it writes accurate Kotlin snippets, refactors UI components, and automates tests for your Android app. · 5 min read</description>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>AI</category>
      <category>Claude Code</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Claude Code vs Cursor vs Copilot: My 6-Month Android Workflow Test</title>
      <link>https://sudarshantechlabs.com/blog/claude-code-vs-cursor-vs-copilot-an-android-devs-take</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/claude-code-vs-cursor-vs-copilot-an-android-devs-take</guid>
      <description>As a solo Android developer who shipped 22 apps, I tested Claude Code, Cursor, and GitHub Copilot on real projects for 6 months. Here&apos;s what actually works. · 5 min read</description>
      <pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>AI</category>
      <category>Tools</category>
      <category>Solo Dev</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Maintaining 22 Apps Taught Me That Boring Is the Whole Point</title>
      <link>https://sudarshantechlabs.com/blog/the-boring-work-of-maintaining-20-apps</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/the-boring-work-of-maintaining-20-apps</guid>
      <description>After 13 years running 22+ Android apps solo from Bangkok, I break down the unglamorous maintenance systems—Gradle conventions, CI pipelines, versioning discipline—that keep everything alive. · 6 min read</description>
      <pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>CI/CD</category>
      <category>Solo Dev</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>StateFlow vs LiveData: What Changed Across 22 Android Apps After Switching</title>
      <link>https://sudarshantechlabs.com/blog/stateflow-vs-livedata-22-apps</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/stateflow-vs-livedata-22-apps</guid>
      <description>The switch from LiveData to StateFlow was not a trend decision. It was driven by a specific crash pattern. Here is what LiveData was getting wrong, what StateFlow changed, and what it costs. · 5 min read</description>
      <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Architecture</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Compose Animations That Improve UX (Not Just Look Cool)</title>
      <link>https://sudarshantechlabs.com/blog/android-compose-animations</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-compose-animations</guid>
      <description>Most animation tutorials focus on what&apos;s possible. This one focuses on what&apos;s useful: the animations that make an app feel polished and responsive without becoming distracting or slowing users down. · 4 min read</description>
      <pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Jetpack Compose</category>
      <category>UX</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android Developer Interview Questions: The Hard Ones and How to Answer Them</title>
      <link>https://sudarshantechlabs.com/blog/android-interview-questions</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-interview-questions</guid>
      <description>Senior Android interview questions test deep understanding, not syntax recall. Here are 15 hard questions covering architecture, concurrency, performance, and testing — with the answers that demonstrate senior-level thinking. · 5 min read</description>
      <pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Career</category>
      <category>Kotlin</category>
      <category>Architecture</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android Version Update Strategy: How to Support New APIs Without Breaking Old Devices</title>
      <link>https://sudarshantechlabs.com/blog/android-version-updates-strategy</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-version-updates-strategy</guid>
      <description>Every Android release brings new APIs that improve your app. Supporting them while maintaining compatibility with older Android versions requires a clear strategy. Here&apos;s how to handle API level differences, use version checks correctly, and decide when to raise minSdk. · 4 min read</description>
      <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Engineering</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android Auto Backup and Data Restore: What Developers Must Know</title>
      <link>https://sudarshantechlabs.com/blog/android-data-backup</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-data-backup</guid>
      <description>Android Auto Backup silently backs up your app&apos;s data. When users restore to a new device, they expect their data. Here&apos;s how to configure backup correctly, what gets included, what should be excluded, and how to handle restore gracefully. · 4 min read</description>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Data</category>
      <category>Kotlin</category>
      <category>UX</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Localizing Your Android App: A Practical Guide to Reaching More Users</title>
      <link>https://sudarshantechlabs.com/blog/android-localization</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-localization</guid>
      <description>Localization is one of the highest-ROI features for solo developers. Adding support for 5-10 languages can double your potential market. Here&apos;s how to implement localization correctly in an Android app with Compose. · 4 min read</description>
      <pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Play Store</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Kotlin Extension Functions: Patterns That Actually Improve Your Code</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-extension-functions</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-extension-functions</guid>
      <description>Extension functions are Kotlin&apos;s most addictive feature. Used well, they make APIs more expressive and reduce boilerplate. Used poorly, they scatter code and hide dependencies. Here are the patterns worth adopting and the anti-patterns worth avoiding. · 4 min read</description>
      <pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate>
      <category>Kotlin</category>
      <category>Android</category>
      <category>Engineering</category>
      <category>Patterns</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Writing Testable Android Code: ViewModels, Fakes, and Coroutine Test Rules</title>
      <link>https://sudarshantechlabs.com/blog/writing-testable-android-code-viewmodels-fakes-and-coroutine-test-rules</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/writing-testable-android-code-viewmodels-fakes-and-coroutine-test-rules</guid>
      <description>This post covers practical strategies for writing testable Android code using ViewModels, fakes, and coroutine test rules to improve maintainability and reduce flaky tests. · 4 min read</description>
      <pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Testing</category>
      <category>Coroutines</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Shrinking, Obfuscation, and Debugging Release Builds with ProGuard and R8 in Android</title>
      <link>https://sudarshantechlabs.com/blog/proguard-and-r8-in-android-shrinking-obfuscation-and-debugging-release-builds</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/proguard-and-r8-in-android-shrinking-obfuscation-and-debugging-release-builds</guid>
      <description>In this article, we will discuss how to use ProGuard and R8 to shrink and obfuscate your Android app, and how to debug release builds. · 3 min read</description>
      <pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Kotlin Coroutines vs Java Threads: When to Use Each for Android Performance</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-coroutines-vs-java-threads-a-practical-comparison</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-coroutines-vs-java-threads-a-practical-comparison</guid>
      <description>This post compares Kotlin Coroutines and Java Threads for Android concurrency, focusing on performance, simplicity, and real-world use cases to help you choose the right tool. · 4 min read</description>
      <pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Coroutines</category>
      <category>Performance</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Mastering Kotlin Coroutines: Structured Concurrency for Robust Android Apps</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-coroutines-structured-concurrency-scopes-jobs-and-cancellation</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-coroutines-structured-concurrency-scopes-jobs-and-cancellation</guid>
      <description>Deep dive into Kotlin structured concurrency, exploring scopes, jobs, and cancellation techniques to build efficient, crash-free Android applications. · 4 min read</description>
      <pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Coroutines</category>
      <category>Performance</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Optimizing State Management in Jetpack Compose: StateFlow vs remember vs derivedStateOf</title>
      <link>https://sudarshantechlabs.com/blog/jetpack-compose-state-management-stateflow-vs-remember-vs-derivedstateof</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/jetpack-compose-state-management-stateflow-vs-remember-vs-derivedstateof</guid>
      <description>This article compares StateFlow, remember, and derivedStateOf for state management in Jetpack Compose, highlighting their strengths and weaknesses, and providing code examples to demonstrate their usage. · 4 min read</description>
      <pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Jetpack Compose State Management: Patterns That Scale from Day One</title>
      <link>https://sudarshantechlabs.com/blog/jetpack-compose-state-management-deep-dive</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/jetpack-compose-state-management-deep-dive</guid>
      <description>A practical guide to state management in Jetpack Compose with real code examples, showing how to choose the right pattern for your app&apos;s complexity and avoid common pitfalls that lead to bugs and maintenance headaches. · 5 min read</description>
      <pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Jetpack Compose</category>
      <category>Best Practices</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>My Android Release Checklist: Zero Bad Releases in 2 Years</title>
      <link>https://sudarshantechlabs.com/blog/my-android-release-checklist-zero-bad-releases-in-2-years</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/my-android-release-checklist-zero-bad-releases-in-2-years</guid>
      <description>A detailed, battle-tested checklist for solo Android developers to ensure stable, secure, and high-performance releases. Covers automated testing, CI/CD, performance monitoring, and final sanity checks. · 5 min read</description>
      <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Testing</category>
      <category>CI/CD</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Hilt Dependency Injection in Android: Scopes, Modules, and Testing</title>
      <link>https://sudarshantechlabs.com/blog/hilt-dependency-injection-android</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/hilt-dependency-injection-android</guid>
      <description>A practical guide to Hilt DI in Android — how scopes work, how to structure modules, common mistakes, and how to write tests against Hilt-injected code without fighting the framework. · 6 min read</description>
      <pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Hilt</category>
      <category>Architecture</category>
      <category>Testing</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Mastering Room Database in Production: 7 Battle-Tested Practices for Android Apps</title>
      <link>https://sudarshantechlabs.com/blog/room-database-best-practices-for-production-apps</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/room-database-best-practices-for-production-apps</guid>
      <description>This post shares 7 critical Room Database practices I&apos;ve refined over 13 years of QA and building 22+ apps at SudarshanTechLabs. Focused on avoiding crashes, data loss, and performance pitfalls in production. · 3 min read</description>
      <pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Architecture</category>
      <category>Data</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Claude Code Hooks: Build Your Own Quality Gates Without the CI/CD Overhead</title>
      <link>https://sudarshantechlabs.com/blog/claude-code-hooks-build-your-own-quality-gates</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/claude-code-hooks-build-your-own-quality-gates</guid>
      <description>Learn how to use Claude Code&apos;s hook system to create automated quality gates for your Android projects, catching bugs and enforcing standards before code hits your repository. · 4 min read</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Claude Code</category>
      <category>Automation</category>
      <category>Best Practices</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Mastering Clean Architecture in Android: Use Cases, Repositories, and Data Sources</title>
      <link>https://sudarshantechlabs.com/blog/clean-architecture-in-android-use-cases-repositories-and-data-sources</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/clean-architecture-in-android-use-cases-repositories-and-data-sources</guid>
      <description>A deep dive into decoupling business logic from frameworks using the Use Case, Repository, and Data Source pattern to build scalable Android apps. · 7 min read</description>
      <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Architecture</category>
      <category>Best Practices</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Buildinga Reactive Data Layer with Android Room and Kotlin Flow</title>
      <link>https://sudarshantechlabs.com/blog/android-room-database-with-kotlin-flow-reactive-data-layer</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-room-database-with-kotlin-flow-reactive-data-layer</guid>
      <description>Learn how to replace LiveData with Kotlin Flow in a Room‑based architecture, see real code, and make your Android app truly reactive. · 5 min read</description>
      <pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android Background Processing: WorkManager vs Coroutines vs Services</title>
      <link>https://sudarshantechlabs.com/blog/android-background-processing</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-background-processing</guid>
      <description>Android has multiple ways to run background work. Choosing wrong leads to work that gets killed by Doze mode, battery drain, or ANRs. Here&apos;s when to use WorkManager, coroutines, foreground services, and how each interacts with the system. · 4 min read</description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Coroutines</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Speeding Up Your App’s First Load with Android App Startup Library</title>
      <link>https://sudarshantechlabs.com/blog/android-app-startup-optimization-with-app-startup-library</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-app-startup-optimization-with-app-startup-library</guid>
      <description>I dive into the App Startup library, show how to register components, measure impact, and integrate it with Coroutines and Hilt for a measurable 200‑ms jump in launch time. · 4 min read</description>
      <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Performance</category>
      <category>Startup</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Speed Up Your Builds: Mastering Feature Modules and Dynamic Delivery in Android</title>
      <link>https://sudarshantechlabs.com/blog/android-app-modularization-feature-modules-build-speed-and-dynamic-delivery</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-app-modularization-feature-modules-build-speed-and-dynamic-delivery</guid>
      <description>Learn how to split an Android app into feature modules, boost Gradle build times, and use Play Feature Delivery for on‑demand downloads—all with concrete Kotlin examples. · 5 min read</description>
      <pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate>
      <category>android</category>
      <category>kotlin</category>
      <category>performance</category>
      <category>best practices</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Jetpack Compose Performance: Avoiding Unnecessary Recompositions</title>
      <link>https://sudarshantechlabs.com/blog/jetpack-compose-performance</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/jetpack-compose-performance</guid>
      <description>Compose is fast by design, but it&apos;s easy to write composables that recompose far more than necessary. Here&apos;s how to identify recomposition problems, understand why they happen, and fix them with the right patterns. · 4 min read</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Jetpack Compose</category>
      <category>Performance</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Building 20+ Android Apps Solo — What I Learned About Architecture</title>
      <link>https://sudarshantechlabs.com/blog/android-architecture-lessons</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-architecture-lessons</guid>
      <description>After shipping 20+ Android apps as a solo developer, I settled on MVVM with Clean Architecture, Hilt, and StateFlow. Here&apos;s why, and what I&apos;d tell myself if I were starting over. · 3 min read</description>
      <pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Architecture</category>
      <category>Kotlin</category>
      <category>Hilt</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android In-App Purchases With Play Billing: A Practical Guide</title>
      <link>https://sudarshantechlabs.com/blog/android-in-app-purchases</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-in-app-purchases</guid>
      <description>Monetizing with in-app purchases requires more than integrating the Play Billing Library. Here&apos;s how to handle purchase flows, verify purchases securely, restore purchases, and avoid the common mistakes that cause rejected apps and failed payments. · 3 min read</description>
      <pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Monetization</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Advanced Room Database Patterns: Relations, FTS, and Type Converters</title>
      <link>https://sudarshantechlabs.com/blog/room-advanced-patterns</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/room-advanced-patterns</guid>
      <description>Basic Room is straightforward. Relations between entities, full-text search, complex queries, and custom type converters are where most developers hit walls. Here&apos;s how to handle the advanced cases correctly. · 4 min read</description>
      <pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Data</category>
      <category>Kotlin</category>
      <category>Architecture</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Compose Navigation: Patterns, Arguments, and Back Stack Management</title>
      <link>https://sudarshantechlabs.com/blog/android-compose-navigation</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-compose-navigation</guid>
      <description>Jetpack Compose Navigation replaces the Fragment back stack with a declarative nav graph. Here&apos;s how to set it up correctly, pass arguments between screens, handle deep links, and manage the back stack without common pitfalls. · 4 min read</description>
      <pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Jetpack Compose</category>
      <category>Kotlin</category>
      <category>Architecture</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Kotlin Coroutines vs RxJava in 2026: Choosing the Right Tool for the Job</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-coroutines-vs-rxjava-in-2026-choosing-the-right-tool-for-the-job</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-coroutines-vs-rxjava-in-2026-choosing-the-right-tool-for-the-job</guid>
      <description>In this article, we&apos;ll compare Kotlin Coroutines and RxJava, two popular tools for handling asynchronous programming in Kotlin. We&apos;ll explore their strengths and weaknesses, and provide concrete examples to help you decide which tool is right for your next project. · 3 min read</description>
      <pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate>
      <category>Kotlin</category>
      <category>Coroutines</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Kotlin Coroutines vs RxJava in 2026: Choosing the Right Tool for Modern Android Development</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-coroutines-vs-rxjava-in-2026-choosing-the-right-tool-for-modern-android-development</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-coroutines-vs-rxjava-in-2026-choosing-the-right-tool-for-modern-android-development</guid>
      <description>Learn when to use Kotlin Coroutines or RxJava in 2026 for Android apps, with code examples, performance benchmarks, and real-world use cases from a solo dev&apos;s perspective. · 3 min read</description>
      <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Coroutines</category>
      <category>Jetpack Compose</category>
      <category>Architecture</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Designing Offline‑First Android Apps That Thrive on Flaky Networks</title>
      <link>https://sudarshantechlabs.com/blog/designing-offlinefirst-android-apps-that-thrive-on-flaky-networks</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/designing-offlinefirst-android-apps-that-thrive-on-flaky-networks</guid>
      <description>A step‑by‑step guide to building Android apps that stay functional when connectivity drops, using Jetpack Compose, Room, Kotlin Coroutines, and a clean offline‑first architecture. · 7 min read</description>
      <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Architecture</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Automating Android App Releases: From Code to Play Store in Minutes</title>
      <link>https://sudarshantechlabs.com/blog/automating-android-app-releases-with-github-actions-and-fastlane</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/automating-android-app-releases-with-github-actions-and-fastlane</guid>
      <description>Learn how to streamline your Android app deployment pipeline using GitHub Actions and Fastlane, eliminating manual steps and reducing release errors. · 3 min read</description>
      <pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>CI/CD</category>
      <category>Automation</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android Architecture Decisions That Actually Matter</title>
      <link>https://sudarshantechlabs.com/blog/android-architecture-decisions</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-architecture-decisions</guid>
      <description>Not every architectural choice is equally important. After 22 apps, here are the decisions that compound positively — and the debates that waste your time. · 5 min read</description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Architecture</category>
      <category>Kotlin</category>
      <category>Solo Dev</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>How I Built 22 Android Apps Solo — Systems, Not Hustle</title>
      <link>https://sudarshantechlabs.com/blog/how-i-built-22-android-apps-solo</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/how-i-built-22-android-apps-solo</guid>
      <description>From zero to 22 live Play Store apps as a solo developer. The architecture decisions, tooling, and mental models that made it possible without burning out. · 4 min read</description>
      <pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Solo Dev</category>
      <category>Kotlin</category>
      <category>Play Store</category>
      <category>Architecture</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>My Android Release Workflow: From Code to Play Store in Under an Hour</title>
      <link>https://sudarshantechlabs.com/blog/my-android-release-workflow</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/my-android-release-workflow</guid>
      <description>A step-by-step breakdown of how I release Android apps to Google Play as a solo developer — versioning, signing, AAB builds, store listing, and the checklist that prevents me from shipping broken releases. · 6 min read</description>
      <pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Play Store</category>
      <category>Release</category>
      <category>CI/CD</category>
      <category>Automation</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Kotlin Sealed Classes and Interfaces: Beyond the Basics</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-sealed-classes-patterns</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-sealed-classes-patterns</guid>
      <description>Sealed classes are more than a fancy enum. Here are the patterns that make them indispensable for Android development: representing results, modeling state machines, handling events, and using sealed interfaces for better composition. · 5 min read</description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <category>Kotlin</category>
      <category>Android</category>
      <category>Architecture</category>
      <category>Patterns</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android Widgets With Glance: Building Home Screen Widgets in Compose</title>
      <link>https://sudarshantechlabs.com/blog/android-widgets-compose</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-widgets-compose</guid>
      <description>Home screen widgets are one of the most underused retention tools in Android development. Glance brings Compose-like syntax to widget development. Here&apos;s how to build a functional widget from scratch. · 3 min read</description>
      <pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Jetpack Compose</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Building Offline-First Android Apps: Architecture and Sync Strategies</title>
      <link>https://sudarshantechlabs.com/blog/android-offline-first</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-offline-first</guid>
      <description>Offline-first means the app works without a network connection and syncs when one is available. It&apos;s the right architecture for most mobile apps but requires deliberate design. Here&apos;s how to build it with Room, WorkManager, and conflict resolution. · 4 min read</description>
      <pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Architecture</category>
      <category>Data</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Advanced StateFlow Patterns for Android ViewModels</title>
      <link>https://sudarshantechlabs.com/blog/stateflow-advanced-patterns</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/stateflow-advanced-patterns</guid>
      <description>Basic StateFlow usage is straightforward. The advanced patterns — combining flows, handling loading and error states, optimistic updates, and flow transformation — are where most devs hit walls. Here&apos;s how to do them correctly. · 4 min read</description>
      <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
      <category>Kotlin</category>
      <category>Android</category>
      <category>Coroutines</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Clean Architecture in Android: Why It Matters and How to Apply It</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-clean-architecture</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-clean-architecture</guid>
      <description>Clean Architecture is widely referenced and frequently misunderstood. Here&apos;s what it actually means for an Android app, what each layer is responsible for, and the concrete patterns that make it worth the structure. · 4 min read</description>
      <pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Architecture</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android Deep Links: Implementation, Testing, and Common Pitfalls</title>
      <link>https://sudarshantechlabs.com/blog/android-deep-links</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-deep-links</guid>
      <description>Deep links connect external content to specific screens in your app. Web links, push notifications, and app shortcuts all use them. Here&apos;s how to implement, test, and debug Android deep links correctly. · 3 min read</description>
      <pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Kotlin</category>
      <category>Jetpack Compose</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android Push Notifications With FCM: The Complete Implementation Guide</title>
      <link>https://sudarshantechlabs.com/blog/android-push-notifications</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-push-notifications</guid>
      <description>Push notifications are one of the highest-retention tools available. Done wrong, they destroy engagement. Here&apos;s how to implement FCM notifications correctly in Android, handle notification permissions, and design a notification strategy that users actually want. · 4 min read</description>
      <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Android Espresso Testing: Patterns That Actually Work in Production</title>
      <link>https://sudarshantechlabs.com/blog/android-espresso-testing</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/android-espresso-testing</guid>
      <description>Espresso is powerful but has sharp edges. Most guides show the happy path. Here&apos;s how to handle the real problems: async operations, Hilt integration, custom view matchers, and keeping tests from becoming a maintenance nightmare. · 3 min read</description>
      <pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Testing</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Mock vs Fake vs Stub: Choosing the Right Test Double</title>
      <link>https://sudarshantechlabs.com/blog/mock-vs-fake-vs-stub</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/mock-vs-fake-vs-stub</guid>
      <description>Mocks, fakes, stubs, and spies are test doubles — but they&apos;re not interchangeable. Using the wrong one leads to over-specified tests that break on refactoring or under-specified tests that miss bugs. Here&apos;s when to use each. · 5 min read</description>
      <pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate>
      <category>Testing</category>
      <category>Kotlin</category>
      <category>Best Practices</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Testing With Hilt: Dependency Injection in Android Tests</title>
      <link>https://sudarshantechlabs.com/blog/hilt-dependency-injection-testing</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/hilt-dependency-injection-testing</guid>
      <description>Hilt makes dependency injection elegant in production code. In tests, it provides HiltAndroidRule and test modules that let you swap out real implementations for fakes. Here&apos;s how to use them correctly. · 3 min read</description>
      <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Architecture</category>
      <category>Testing</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Testing Kotlin Coroutines and Flow: The Complete Guide</title>
      <link>https://sudarshantechlabs.com/blog/kotlin-coroutines-testing</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/kotlin-coroutines-testing</guid>
      <description>Coroutines and Flow add async complexity that makes testing tricky. Here&apos;s how to use TestCoroutineDispatcher, runTest, and Turbine to write fast, deterministic tests for all your coroutine-based code. · 4 min read</description>
      <pubDate>Sat, 14 Mar 2026 00:00:00 GMT</pubDate>
      <category>Kotlin</category>
      <category>Coroutines</category>
      <category>Testing</category>
      <category>Android</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Testing Jetpack Compose UI: A Practical Guide with Real Examples</title>
      <link>https://sudarshantechlabs.com/blog/testing-compose-ui</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/testing-compose-ui</guid>
      <description>Compose UI testing has a different mental model from View-based testing. Here&apos;s how to write reliable, maintainable Compose tests using ComposeTestRule, semantic matchers, and state-driven test patterns. · 3 min read</description>
      <pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Jetpack Compose</category>
      <category>Testing</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Testing Android Room Database: A Complete Guide with Kotlin</title>
      <link>https://sudarshantechlabs.com/blog/database-testing-android-room</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/database-testing-android-room</guid>
      <description>Room database logic is often undertested because developers don&apos;t know where to start. Here&apos;s how to write comprehensive tests for DAOs, migrations, and complex queries using JUnit and Room&apos;s testing utilities. · 4 min read</description>
      <pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Data</category>
      <category>Kotlin</category>
      <category>Testing</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Test-Driven Development in Practice: A Realistic Take for Android Devs</title>
      <link>https://sudarshantechlabs.com/blog/test-driven-development-practical</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/test-driven-development-practical</guid>
      <description>TDD is either praised as the only correct way to develop or dismissed as impractical. The reality is more nuanced. Here&apos;s how to apply TDD where it adds value in Android development without dogma. · 4 min read</description>
      <pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Testing</category>
      <category>Kotlin</category>
      <category>Engineering</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Accessibility Testing for Android Apps: The Developer&apos;s Guide</title>
      <link>https://sudarshantechlabs.com/blog/accessibility-testing-android</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/accessibility-testing-android</guid>
      <description>Accessibility testing is often treated as optional. It&apos;s not — it&apos;s good engineering that serves millions of users with disabilities. Here&apos;s how to test and fix the most common accessibility issues in Android apps. · 4 min read</description>
      <pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Testing</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>Security Testing for Android Apps: What Every Developer Should Check</title>
      <link>https://sudarshantechlabs.com/blog/security-testing-android</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/security-testing-android</guid>
      <description>Security vulnerabilities in Android apps can expose user data, bypass authentication, and get your app removed from the Play Store. Here&apos;s a practical security testing checklist developers can run themselves. · 4 min read</description>
      <pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Security</category>
      <category>Testing</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>CI/CD for Android Apps: A Solo Developer&apos;s Practical Setup</title>
      <link>https://sudarshantechlabs.com/blog/ci-cd-for-android-apps</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/ci-cd-for-android-apps</guid>
      <description>Continuous integration for Android doesn&apos;t require a DevOps team. Here&apos;s a lean CI/CD setup that runs tests automatically, builds release APKs/AABs, and deploys to Play Store — all from GitHub Actions. · 4 min read</description>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>CI/CD</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
    <item>
      <title>The Automation Pyramid in Practice: A Real Android App Example</title>
      <link>https://sudarshantechlabs.com/blog/automation-pyramid-real-example</link>
      <guid isPermaLink="true">https://sudarshantechlabs.com/blog/automation-pyramid-real-example</guid>
      <description>The automation testing pyramid is easy to draw on a whiteboard and hard to apply to a real codebase. Here&apos;s how it maps to an actual Android app with concrete test counts and tool choices. · 4 min read</description>
      <pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate>
      <category>Android</category>
      <category>Testing</category>
      <category>Automation</category>
      <category>Kotlin</category>
      <enclosure url="https://sudarshantechlabs.com/og-image.png" type="image/png" length="0"/>
    </item>
  </channel>
</rss>