<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Smit Prajapati</title>
    <description>The latest articles on DEV Community by Smit Prajapati (@smitp7502).</description>
    <link>https://dev.to/smitp7502</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3956601%2F8f7dbb65-9ec1-45a3-8bad-53ea9742bda8.png</url>
      <title>DEV Community: Smit Prajapati</title>
      <link>https://dev.to/smitp7502</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/smitp7502"/>
    <language>en</language>
    <item>
      <title>I Was Wrong About APK vs AAB for Years — Here's What Actually Happens</title>
      <dc:creator>Smit Prajapati</dc:creator>
      <pubDate>Fri, 17 Jul 2026 16:57:20 +0000</pubDate>
      <link>https://dev.to/smitp7502/i-was-wrong-about-apk-vs-aab-for-years-heres-what-actually-happens-3idi</link>
      <guid>https://dev.to/smitp7502/i-was-wrong-about-apk-vs-aab-for-years-heres-what-actually-happens-3idi</guid>
      <description>&lt;p&gt;I've built AAB probably a hundred times without ever asking myself why an APK installs directly on a phone and an AAB just... doesn't.&lt;/p&gt;

&lt;p&gt;Turns out the AAB isn't even a smaller file. The real size win happens somewhere else entirely, and it changed how I think about native libraries.&lt;/p&gt;

&lt;p&gt;→ Why an AAB can carry the same content as an APK and still ship a smaller download&lt;br&gt;
→ What Google Play's Dynamic Delivery is actually doing the moment you upload&lt;br&gt;
→ Why .so files are the biggest hidden weight in most Android apps&lt;/p&gt;

&lt;p&gt;Full walkthrough → &lt;a href="https://medium.com/@smitp7502/i-was-wrong-about-apk-vs-aab-for-years-heres-what-actually-happens-014b92cbf342" rel="noopener noreferrer"&gt;https://medium.com/@smitp7502/i-was-wrong-about-apk-vs-aab-for-years-heres-what-actually-happens-014b92cbf342&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  android #flutter #mobiledev #programming
&lt;/h1&gt;

</description>
      <category>flutter</category>
      <category>android</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Setup your first multitanet app with the single code-base.</title>
      <dc:creator>Smit Prajapati</dc:creator>
      <pubDate>Tue, 07 Jul 2026 16:45:43 +0000</pubDate>
      <link>https://dev.to/smitp7502/setup-your-first-multitanet-app-with-the-single-code-base-40i8</link>
      <guid>https://dev.to/smitp7502/setup-your-first-multitanet-app-with-the-single-code-base-40i8</guid>
      <description>&lt;p&gt;I duplicated a Flutter project for a client. Then again. Then again.&lt;/p&gt;

&lt;p&gt;Nine clients. Nine repos. One bug. Nine fixes. One I missed — the client noticed before I did.&lt;/p&gt;

&lt;p&gt;There's a better way and I wish someone had shown it to me earlier.&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;Android product flavors&lt;/strong&gt; — one &lt;code&gt;applicationId&lt;/code&gt; per client, one build command, one codebase&lt;br&gt;
→ &lt;strong&gt;iOS multi-target&lt;/strong&gt; — separate scheme per client, shared Flutter pods so you don't lose your mind&lt;br&gt;
→ &lt;strong&gt;Per-client &lt;code&gt;.env&lt;/code&gt; files&lt;/strong&gt; that switch at build time, so your Dart code never hardcodes anything&lt;br&gt;
→ &lt;strong&gt;A Fastlane lane&lt;/strong&gt; that loops through every client and uploads them all in one run&lt;/p&gt;

&lt;p&gt;Full walkthrough → &lt;a href="https://medium.com/@smitp7502/one-codebase-many-apps-building-white-label-flutter-apps-with-product-flavors-multi-target-ios-691033d42e0a" rel="noopener noreferrer"&gt;One Codebase, Many Apps&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>android</category>
      <category>ios</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Stop Uploading Your App Manually — Let Fastlane Do It For You</title>
      <dc:creator>Smit Prajapati</dc:creator>
      <pubDate>Fri, 05 Jun 2026 15:07:39 +0000</pubDate>
      <link>https://dev.to/smitp7502/stop-uploading-your-app-manually-let-fastlane-do-it-for-you-2af3</link>
      <guid>https://dev.to/smitp7502/stop-uploading-your-app-manually-let-fastlane-do-it-for-you-2af3</guid>
      <description>&lt;p&gt;&lt;em&gt;Every mobile dev has a release day ritual. Mine was eating 30–40 minutes a week — and adding zero value to anyone.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You know the drill. Open Play Console, create a release, upload the AAB, write the notes, submit for review. Then open App Store Connect and do the &lt;strong&gt;entire thing again&lt;/strong&gt; — but now with Xcode archives, signing certs, and a prayer nothing breaks.&lt;/p&gt;

&lt;p&gt;I finally got fed up and automated all of it with &lt;strong&gt;Fastlane&lt;/strong&gt;. Now my release is one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fastlane internal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's what's inside the full guide →&lt;/p&gt;

&lt;p&gt;→ Android Fastfile setup from scratch — service account, lanes, promote without rebuild&lt;br&gt;&lt;br&gt;
→ iOS Fastfile with &lt;code&gt;.p8&lt;/code&gt; API key and TestFlight + App Store lanes&lt;br&gt;&lt;br&gt;
→ The &lt;code&gt;promote&lt;/code&gt; lane — ship the &lt;strong&gt;exact tested binary&lt;/strong&gt; to production, no rebuild needed&lt;br&gt;&lt;br&gt;
→ How I applied this to a white-label app with multiple client variants  &lt;/p&gt;




&lt;p&gt;📖 *&lt;em&gt;Full walkthrough with every Fastfile included → &lt;a href="https://medium.com/@smitp7502/stop-uploading-your-app-manually-let-fastlane-do-it-for-you-00f8f49e9bf1" rel="noopener noreferrer"&gt;Read on Medium&lt;/a&gt;&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

</description>
      <category>fastlan</category>
      <category>flutter</category>
      <category>mobileapp</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
