Recognized by Clutch.co as a top-rated Mobile App Development Company.
folio3-mobile
US 408 365 4638
START YOUR PROJECT
  • Solutions
    • Apps Discovery Services
    • Team Augmentation
    • Enterprise
    • AR/VR
    • IoT
    • Wearables
    • Field Sales
    • On Demand Apps
  • Industries
    • Retail
    • Agriculture
    • Healthcare
    • Pharmaceutical & Life Sciences
    • Manufacturing
    • Automotive
    • Logistics
    • Education
  • Technologies
    • Native Mobile Apps
      • iOS
      • Android
    • Cross Platform Apps
      • React Native
      • Flutter
      • Ionic
      • Xamarin
      • NativeScript
      • Sencha
  • Portfolio
  • Blog
  • Contact Us
  • Solutions
    • Apps Discovery Services
    • Team Augmentation
    • Enterprise
    • AR/VR
    • IoT
    • Wearables
    • Field Sales
    • On Demand Apps
  • Industries
    • Retail
    • Agriculture
    • Healthcare
    • Pharmaceutical & Life Sciences
    • Manufacturing
    • Automotive
    • Logistics
    • Education
  • Technologies
    • Native Mobile Apps
      • iOS
      • Android
    • Cross Platform Apps
      • React Native
      • Flutter
      • Ionic
      • Xamarin
      • NativeScript
      • Sencha
  • Portfolio
  • Blog
  • Contact Us

Working with Multiple Environments in iOS/React-Native using Schemes

Published by: Noc Folio3 | November 9, 2020
SCROLL AND BE AMAZED!
Home > App Development > Working with Multiple Environments in iOS/React-Native using Schemes

There is always a need for multiple environments based deployments and build processes. In this fast-paced world, CI/CD process of our application should be able to cater all environments and their resources.

Problem Statement

Let’s suppose we have different flavors in our app like dev, qa, and stage and for all those instances base URLs can be different as well as bundle identifiers. Also, we can have different instances in firebase having different firebase configuration GoogleService-Info.plist files so that your remote configuration and crashlytics can be segregated. Here comes the problem, how will you define bundle identifiers for different schemes in iOS, and how will you set different googleinfo.plist files for different schemes. Stay tuned! I am going to tell you that in following simple steps

  • Add New Build Configurations
    Add the new build configurations based on your needs. You will accomplish this by cloning the current Release or Debug Configuration.
    For this example we will create two configuration StagingQA copy of Debug and ProductionQA copy of Release:
  • Add Schemes for your new build configuration
    If you create schemas for your application, each build configuration will be easier to handle for different bundle ids or display names or app icons. Just make sure that the schema that you created is “shared” and has the right build configuration reference in Run and Archive . There are a couple of ways to create a new schema the fastest one is option(⌥) +click on the play symbol and then duplicate the original scheme. You can name those schemas as you want.
  • Change Bundle Identifier and Add Preprocessor Directive
    Now you need to go to the build settings of your target and change the bundle identifier for the newly added configuration as desired. Moreover, you can also specify preprocessor directives for your configuration so that you can use them as an if-else statement to change whatever you want
  • Configure FirbaseApplication in your code
    Make sure that the Firebase is already added in your ios or react native application via pods. Follow https://rnfirebase.io/ for react-native or https://firebase.google.com/docs/ios/setup for native iOS apps. In the AppDelegate.m file where you configured your Firebase app like [FIRApp configure]; in application:didFinishLaunchingWithOptions: method. You can modify it for using different GoogleInfo.plist files provided firebase console like:
NSString *googleServiceInfofilePath = @””; #if STAGE googleServiceInfofilePath = [[NSBundle mainBundle] pathForResource:@

Here you can see, we have used the preprocessor directives (defined for the configuration that we have added) to use different googleinfo.plist files for different schemas.

  • Run The Project
    For Native iOS, you just need to select the desired scheme from the top and run the project. For react-native, running the project for different schemes is a bit tricky.

    Use this command to run the project for the different scheme in react-native
react-native run-ios  — scheme “MySchemeName”  — configuration MyConfigName

Most probably, you will face a problem with bundled js files for running the project for a different scheme, like you may face No Bundle URL found error while running for the non-default scheme with a different bundle identifier. For that you can generate the js bundle file, using the following command.

react-native bundle — entry-file=’index.js’ — bundle-output=’./ios/main.jsbundle’ — dev=false — platform=’ios’ — assets-dest=’./ios’

What the above command did was, it created a js bundle as an output. So instead of using the index file which was only available to the default scheme, we can use main.jsbundle for other schemes.

You just need to drag and drop main.jsbundle in your project and make sure it’s added to the target.

That’s it.


About Noc Folio3

Newsletter

Search

Archives

  • December 2023
  • April 2023
  • March 2023
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • April 2022
  • March 2022
  • February 2022
  • October 2021
  • September 2021
  • May 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019

Recent Posts

  • Exploring Flutter Navigation: From Basics to Advanced Routes
  • Web UI Test Automation with Pytest-BDD
  • How to fix IOS compass calibration issues
  • Testing Android Applications With Perfect Coverage
  • How to use useRef hook efficiently? – React

Tags

  • android
  • angular-state-management
  • Automation
  • Compass
  • cross-platform
  • css
  • development
  • firebase
  • hooks
  • ios
  • learn-ngrx
  • ngrx-beginner
  • ngrx/store
  • QA
  • react-native
  • reactjs
  • scss
  • stylesheet
  • styling
  • Testing
  • Test Script
  • UI-UX

Newsletter

Newsletter

Post navigation

Previous Swift Vs. Objective C: Best Programming Language For App Development
Next What is Flatlist and how to use Flatlist in React Native
Schedule an Appointment with our Mobile App Development Expert
Footer Menu
  • Company
    • About Us
    • Portfolio
    • Blog
    • Careers
    • Contact Us
  • Solutions
    • Apps Discovery Services
    • Team Augmentation
    • Enterprise App Development
    • AR/VR Application Development
    • IoT Application Development
    • Wearables Apps Development
    • Field Sales
    • On-Demand Apps Development
  • Technologies
    • iOS
    • Android
    • React Native
    • Flutter
    • Ionic
    • Xamarin
    • NativeScript
    • HTML5
    • Sencha
  • Industries
    • Retail
    • Agriculture
    • Healthcare
    • Pharmaceutical
    • Manufacturing
    • Automotive
    • Logistics
    • Education

US Office

Belmont, California – 1301 Shoreway Road, Suite 160, Belmont, CA 94002

Pleasanton, California – 6701 Koll Center Parkway, #250 Pleasanton, CA 94566

Tel: +1 408 365 4638
Support: +1 (408) 512 1812

Mexico Office

Amado Nervo #2200, Edificio Esfera 1 piso 4, Col. Jardines del Sol, CP. 45050, Zapopan, Jalisco, Mexico

Bulgaria Office

49 Bacho Kiro Street, Sofia, 1000, Bulgaria

Canada Office​

895 Don Mills Road, Two Morneau Shepell Centre, Suite 900, Toronto, Ontario, M3C 1W3, Canada

UK Office

Export House, Cawsey Way, Woking Surrey, GU21 6QX

Tel: +44 (0) 14 8361 6611

UAE Office

Dubai, UAE – Dubai Internet City, 1st Floor, Building Number 12, Premises ED 29, Dubai, UAE

Tel: +971-55-6540154
Tel: +971-04-2505173

Pakistan Office

Folio3 Tower, Plot 26, Block B, SMCH Society, Main Shahrah-e-Faisal, Karachi.

First Floor, Blue Mall 8-R, MM Alam Road Gulberg III, Lahore.

Tel: +92-21-3432 3721-4 

© 2025, Folio3 Software Inc., All rights reserved.

  • Privacy policy and terms of use
  • Cookie Policy
Follow us on
Facebook-f Linkedin-in Instagram

Get a free app audit

[contact-form-7 id="3548" title="Float Banner Form"]