<?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>Forem: Sundan Sharma</title>
    <description>The latest articles on Forem by Sundan Sharma (@sundan_sharma_37f91051b32).</description>
    <link>https://forem.com/sundan_sharma_37f91051b32</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3726324%2F98150e83-dc2c-47ba-97f8-75e70063b36e.jpg</url>
      <title>Forem: Sundan Sharma</title>
      <link>https://forem.com/sundan_sharma_37f91051b32</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sundan_sharma_37f91051b32"/>
    <language>en</language>
    <item>
      <title>Ek React Native App Ki Poori Kahani 😉</title>
      <dc:creator>Sundan Sharma</dc:creator>
      <pubDate>Thu, 22 Jan 2026 14:15:39 +0000</pubDate>
      <link>https://forem.com/sundan_sharma_37f91051b32/ek-react-native-app-ki-poori-kahani-1863</link>
      <guid>https://forem.com/sundan_sharma_37f91051b32/ek-react-native-app-ki-poori-kahani-1863</guid>
      <description>&lt;p&gt;&lt;strong&gt;Chapter 1: Developer Ki Zindagi – Code Likho, Build Se Daro&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ek React Native developer ki zindagi ka sabse peaceful moment hota hai jab app locally chal rahi hoti hai.&lt;br&gt;
Metro bundler smooth chal raha hai.&lt;br&gt;
UI perfect lag rahi hai.&lt;br&gt;
API response aa raha hai.&lt;/p&gt;

&lt;p&gt;Phir ek sentence sunne ko milta hai:&lt;/p&gt;

&lt;p&gt;Release bana do.&lt;/p&gt;

&lt;p&gt;Yahin se asli struggle start hota hai.&lt;br&gt;
Android Studio open hota hai.&lt;br&gt;
Gradle build start karta hai.&lt;br&gt;
Kabhi versionCode duplicate.&lt;br&gt;
Kabhi keystore missing.&lt;br&gt;
Kabhi Java version galat.&lt;/p&gt;

&lt;p&gt;Har release me same drama.&lt;br&gt;
Is point par developer samajh jaata hai — problem code nahi, process hai.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 2: CI/CD Ka Concept – Automation Ka Janam&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CI/CD ka idea simple hai, par powerful.&lt;/p&gt;

&lt;p&gt;Tum developer ho.&lt;br&gt;
Tumhara kaam code likhna hai.&lt;/p&gt;

&lt;p&gt;Build banana, version badhana, sign karna, store upload karna — ye sab machine ka kaam hai.&lt;/p&gt;

&lt;p&gt;CI/CD bolta hai:&lt;/p&gt;

&lt;p&gt;Tum bas code push karo, baaki main sambhal lunga.&lt;/p&gt;

&lt;p&gt;React Native ke case me CI/CD ka role aur bhi important ho jaata hai kyunki:&lt;/p&gt;

&lt;p&gt;Android aur iOS dono handle karne hote hain&lt;/p&gt;

&lt;p&gt;Signing sensitive hoti hai&lt;/p&gt;

&lt;p&gt;Play Store strict hota hai&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 3: Android Project Ko Discipline Sikhana&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CI/CD tab kaam karta hai jab Android project disciplined ho.&lt;/p&gt;

&lt;p&gt;Sabse pehle Android folder ko samajhna padta hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;build.gradle (app-level)
android {
    defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 23
        targetSdkVersion 34
        versionCode 1
        versionName "1.0.0"
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yahan do cheezein important hain:&lt;/p&gt;

&lt;p&gt;versionCode Play Store ke liye unique hona chahiye&lt;/p&gt;

&lt;p&gt;versionName user ko dikhai deta hai&lt;/p&gt;

&lt;p&gt;Fastlane baad me versionCode ko automatically increment karega, isliye yahan ka structure clean hona chahiye.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 4: Signing – Android Ka Sabse Sensitive Topic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Android bina signing ke release nahi hota.&lt;br&gt;
Aur signing galat ho jaaye to Play Store app reject kar deta hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Keystore Properties File
storePassword=*****
keyPassword=*****
keyAlias=release
storeFile=release.keystore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ye file:&lt;/p&gt;

&lt;p&gt;Git me kabhi nahi jaati&lt;/p&gt;

&lt;p&gt;CI/CD ke secrets se load hoti hai&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;build.gradle me Signing Config
signingConfigs {
    release {
        storeFile file(System.getenv("KEYSTORE_PATH"))
        storePassword System.getenv("KEYSTORE_PASSWORD")
        keyAlias System.getenv("KEY_ALIAS")
        keyPassword System.getenv("KEY_PASSWORD")
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Iska matlab:&lt;/p&gt;

&lt;p&gt;CI/CD environment variables supply karega&lt;/p&gt;

&lt;p&gt;Code secure rahega&lt;/p&gt;

&lt;p&gt;Manual password typing khatam&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 5: Play Store Ki Demand – AAB Chahiye&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Play Store ko APK nahi, AAB chahiye.&lt;/p&gt;

&lt;p&gt;Isliye CI/CD pipeline ka main Android command hota hai:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;./gradlew bundleRelease&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output yahan milta hai:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;app/build/outputs/bundle/release/app-release.aab&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Ye file hi Play Store ka ticket hai.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 6: Fastlane Ki Entry – Automation Ka Brain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fastlane Android automation ka dimaag hai.&lt;/p&gt;

&lt;p&gt;Gradle sirf build karta hai.&lt;br&gt;
Fastlane build aur release dono karta hai.&lt;/p&gt;

&lt;p&gt;Fastlane Install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd android
gem install fastlane
fastlane init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fastlane yahin poochta hai:&lt;br&gt;
Play Store setup chahiye?&lt;/p&gt;

&lt;p&gt;Aur tum bolte ho:&lt;br&gt;
Haan, hamesha ke liye.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 7: Fastlane Folder Structure Samajhna&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fastlane init ke baad structure aisa hota hai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;android/fastlane/
 ├── Appfile
 ├── Fastfile
 └── metadata/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Appfile → App ki identity&lt;/p&gt;

&lt;p&gt;Fastfile → Automation logic&lt;/p&gt;

&lt;p&gt;metadata → Play Store content&lt;/p&gt;

&lt;p&gt;Yahin se poora release control hota hai.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 8: Appfile – Fastlane Ko Batana Tum Kaun Ho&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fastlane ko ye batana zaroori hai:&lt;/p&gt;

&lt;p&gt;App ka package name kya hai&lt;/p&gt;

&lt;p&gt;Play Store access kahan se milega&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package_name("com.myapp")
json_key_file("playstore-key.json")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;playstore-key.json:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Google service account file hoti hai&lt;/p&gt;

&lt;p&gt;CI/CD secrets me stored hoti hai&lt;/p&gt;

&lt;p&gt;Gitignore me hoti hai&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 9: Fastfile – Kahani Ka Script&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fastfile me hum Fastlane ko batate hain:&lt;br&gt;
Kab kya karna hai.&lt;/p&gt;

&lt;p&gt;Basic Release Lane&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;platform :android do
  lane :release do
    increment_version_code(
      gradle_file_path: "app/build.gradle"
    )

    gradle(
      task: "bundle",
      build_type: "Release"
    )

    upload_to_play_store(
      track: "internal",
      aab: "app/build/outputs/bundle/release/app-release.aab"
    )
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Is lane ka matlab:&lt;/p&gt;

&lt;p&gt;VersionCode automatically badhega&lt;/p&gt;

&lt;p&gt;Release AAB banega&lt;/p&gt;

&lt;p&gt;Internal testing track me upload hoga&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 10: CI/CD + Fastlane – Perfect Team&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CI/CD pipeline ka kaam sirf Fastlane ko chalana hai.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cd android&lt;br&gt;
bundle install&lt;br&gt;
fastlane release&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fastlane ke baad:&lt;/p&gt;

&lt;p&gt;Gradle run hota hai&lt;/p&gt;

&lt;p&gt;Signing apply hoti hai&lt;/p&gt;

&lt;p&gt;Play Store upload ho jaata hai&lt;/p&gt;

&lt;p&gt;CI/CD aur Fastlane ek dusre ke bina adhoore hain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 11: Environment Handling – Same App, Different Mood&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Real apps me ek hi backend nahi hota.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dev&lt;br&gt;
Staging&lt;br&gt;
Production&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fastlane environment ke hisaab se build karta hai:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ENVFILE=.env.prod fastlane release&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Isse production API ke saath release hota hai.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 12: Play Store Metadata – Sirf Code Kaafi Nahi&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Play Store sirf app nahi, presentation bhi dekhta hai.&lt;/p&gt;

&lt;p&gt;Fastlane metadata folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fastlane/metadata/android/en-US/
 ├── title.txt
 ├── short_description.txt
 └── full_description.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next release me description update karne ke liye Play Console kholna bhi zaroori nahi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 13: Security – Secrets Jo Sirf Pipeline Jaane&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CI/CD + Fastlane me ye sab secrets safe rehte hain:&lt;/p&gt;

&lt;p&gt;Keystore passwords&lt;/p&gt;

&lt;p&gt;Play Store JSON key&lt;/p&gt;

&lt;p&gt;Signing configs&lt;/p&gt;

&lt;p&gt;Code clean rehta hai.&lt;br&gt;
Repo secure rehta hai.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 14: Real Problems – Kyunki Ye Real Life Hai&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kabhi-kabhi issues aate hain:&lt;/p&gt;

&lt;p&gt;VersionCode duplicate&lt;/p&gt;

&lt;p&gt;Wrong package name&lt;/p&gt;

&lt;p&gt;Permission missing&lt;/p&gt;

&lt;p&gt;Gradle cache issues&lt;/p&gt;

&lt;p&gt;Par ek baar solve ho jaaye, Fastlane reliable system ban jaata hai.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Chapter: Moral Of The Kahani&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;React Native Android app ke liye:&lt;/p&gt;

&lt;p&gt;Manual build = temporary solution&lt;br&gt;
CI/CD + Fastlane = permanent system&lt;/p&gt;

&lt;p&gt;Tum developer ho.&lt;br&gt;
Tumhara kaam code likhna hai.&lt;/p&gt;

&lt;p&gt;Build banana, version badhana, Play Store upload —&lt;br&gt;
ye automation ka kaam hai. Fastlane is kahani ka hero hai.&lt;/p&gt;

&lt;p&gt;Aur yeh sab krne se phele apko ghabrana nhi hai ...😁&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
