For separate development, staging, and production builds in a React Native CLI app, model the environments explicitly: use Android product flavors for environment-specific app variants, and use iOS schemes mapped to the right build configurations and settings. Then select the exact variant or scheme in local builds and CI. The crucial React Native detail on Android is that a custom variant marked debuggable needs Metro and does not include a packaged JavaScript bundle; a staging build meant to run on its own should not be marked that way.
How should you set up dev, staging, and production builds?
Start with a small environment matrix. Decide which values genuinely differ, then make the chosen environment determine the app’s identity, configuration, and distribution path. A scheme or flavor name by itself does not change an API endpoint: the selected build settings must feed the native and JavaScript configuration the app actually uses.
| Environment | Backend and app configuration | Identity and installation | JavaScript and distribution |
|---|---|---|---|
| Development | Development backend, development feature flags, and development analytics or push configuration. | Use a distinct display name and application or bundle identifier if it must coexist with other installs. | Usually a developer build connected to Metro; choose signing and distribution for the team’s workflow. |
| Staging | Staging backend and the staging-specific services the team intends to test. | Use a distinct identity when testers need staging and production installed side by side. | Choose deliberately whether testers need Metro. For a standalone tester build, package JavaScript and use the intended testing distribution route. |
| Production | Production backend and production service configuration. | Use the release app identity and production-facing app name. | Build the release configuration, verify its environment and signing, and use the intended store or distribution lane. |
For each row, account for the backend/base URL, app display name, package or bundle identifier, feature flags, analytics destination, push configuration, deep-link or universal-link domains, signing/distribution destination, and whether Metro is expected. Keep secrets out of values compiled into the client app: a mobile bundle can be inspected, so enforce access to sensitive credentials and data on the server.
How do Android product flavors work with React Native?
Android build types and product flavors describe different axes. A build type controls build behavior—commonly debug or release—while a product flavor represents a version of the app, such as a development or staging environment. Gradle combines them into build variants. New React Native projects have debug and release build types by default and no custom flavors, according to the React Native Gradle Plugin guide.
#1 Best Overall
- 【Strong Adsorption】The inspiration of the silicone phone suction case comes from the adhesive force of the octopus. Each suction cup phone mount is 3.15 inches long and 2.17 inches wide, with 24 independent suction cups providing a stronger and more stable suction force, so you don't have to worry about your phone falling during use.
- 【Back of Phone Suction Grip】Remove the adhesive film on the phone suction cup and stick it on the phone case. You can then fix the phone on any smooth surface, which is very convenient. (The phone suction cup cannot be removed and reused after being attached to the phone case. It is recommended to attach it to a regular phone case, not a valuable one.)
- 【Widely Used】Our non-slip silicone phone sticky grip mount attaches to almost any flat phone case and make it compatible with common mobile phones such as iPhone and Android.You can shoot, watch videos or video calls in the kitchen, gym, dance studio, bathroom and other places.
- 【Capture the Wonderful Picture】Whether you are a TikTok creator or just like to share videos and photos, this phone suction cup can help you hands-free capture wonderful videos and photos for sharing with friends.
- 【Note】You can fix the phone suction cup on a smooth surface such as a mirror or glass. If necessary, wipe the suction cup with a damp cloth to obtain stronger suction. Before releasing your hand, make sure the phone is firmly fixed. (Not applicable to rough walls, wooden surfaces, and other uneven surfaces)
With one flavor dimension named for environments, the generated variants follow the flavor-plus-build-type pattern: devDebug, devRelease, stagingDebug, stagingRelease, prodDebug, and prodRelease. Those names are examples; your project’s actual dimensions and flavor names determine its variants and task names. React Native’s documentation illustrates the multiplication: two flavors crossed with three build types produce six variants.
Define only the dimensions you need
If the environments need different endpoints, resources, or app identities, a flavor dimension is a natural way to express those differences. Android flavors can override base settings, use variant-specific source sets for code or resources, and set an applicationId. An applicationIdSuffix and versionNameSuffix can distinguish nonproduction installs. For example, a development flavor might use an application ID suffix such as .dev, while production retains the base ID. Choose identifiers and suffixes to match the app’s existing package and release setup rather than copying an example blindly.
Build types and flavor dimensions multiply the number of generated combinations. Avoid adding a dimension for every preference: extra combinations mean more variants to configure, build, and validate. If the only difference is debug-versus-release behavior, build types may be sufficient.
Choose variants and tasks by their generated names
Inspect the project’s Build Variants view in Android Studio or its Gradle tasks, then use the exact names Gradle generates. For a module named app with a staging flavor, for example, the wrapper task may be assembleStagingRelease. A corresponding shell invocation is:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
./gradlew :app:assembleStagingRelease
Treat that as an example, not a universal task: module names, flavor dimensions, and variants differ by project. Use the matching install or assemble task for the variant you intend to run or distribute.
Rank #2
- SUPERIOR COMFORT — Unlike traditional circular ear buds, the design of EarPods is defined by the geometry of the ear. Which makes them more comfortable for more people than any other ear bud–style headphones.
- HIGH-QUALITY AUDIO — The speakers inside EarPods have been engineered to maximize sound output and minimize sound loss, which means you get high-quality audio.
- BUILT-IN REMOTE — EarPods with USB-C plug also include a built-in remote that lets you adjust the volume, control the playback of music and video, and answer or end calls with a pinch of the cord.
- COMPATIBILITY — Works with all devices that have a USB-C port.
- INTEGRATED MICROPHONE — A built-in microphone precisely captures your voice while you’re on the phone, taking a FaceTime call, or summoning Siri — so you’re always heard loud and clear.
Set React Native’s debuggable variants correctly
React Native adds JavaScript bundling behavior to Android variants. The Gradle Plugin’s default is to treat only debug as debuggable. A variant listed in debuggableVariants does not receive a shipped JavaScript bundle and needs Metro to run. Match the exact generated variant names, including capitalization.
For example, stagingDebug may intentionally use Metro during development. If stagingRelease is for testers who should launch it without a developer’s machine or Metro, do not list that variant as debuggable. A representative Groovy setting in the app module’s Gradle file is:
react {
debuggableVariants = ["devDebug", "stagingDebug"]
}
This is only appropriate if those are the project’s actual variant names and those builds are meant to require Metro. Confirm the generated names and test a supposedly standalone staging artifact with Metro stopped. The React Native documentation states that listed variants will not come with a shipped bundle and therefore need Metro.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →How do iOS schemes select environments?
An Xcode scheme selects what Xcode does for actions such as running, testing, and archiving, including the build configuration used for an action. Teams commonly use environment-named schemes and corresponding build settings so developers and CI can select a dev, staging, or production target consistently. For each scheme, verify that its chosen configuration actually supplies the intended backend, identifiers, resources, and service settings to both native code and React Native code. A scheme label alone does not set those values.
The exact recipe for creating and mapping three schemes is project-template- and Xcode-version-specific. The React Native guidance cited here establishes the Release behavior and distribution flow; it does not provide a universal sequence for duplicating configurations, creating schemes, wiring .xcconfig files, or changing CocoaPods mappings. Check those project-file details against the React Native template and Xcode version your app uses instead of assuming the same setup applies everywhere.
Rank #3
- Secure Hold: Our PopSockets adhesive phone grip gives your cell phone a secure, comfortable hold in hand to help prevent drops while texting, taking photos, or scrolling on the go. Designed to stick firmly to most phone cases and devices.
- Hands-Free Made Easy: Easily turn your PopSocket into a phone stand to prop up your phone anywhere, perfect for watching videos, video calls, or following recipes. A must-have phone holder that keeps your device secure and ready for anything.
- Compatibility: Works with all phones, tablets, and Kindles. Sticks best to smooth, hard plastic cases and may not adhere to silicone or textured cases. Easily swap your PopTop to change up your style.
- Black PopSockets: Simple, refined, and endlessly versatile. A timeless essential for any phone.
- Travel Must-Have for People On the Go: A must-have travel accessory for flights, flying, airports, air travel, airplanes, planes, international trips, cruises, and long travel days. Key gadget for your airport haul, travel accessories and must-haves.
Use Release for App Store distribution
React Native’s App Store publishing guide says an App Store build requires the Release scheme in Xcode. Release disables the in-app Dev Menu and bundles JavaScript locally, so the device build does not depend on a computer running Metro.
-
In Xcode, choose Product → Scheme → Edit Scheme and select the Release configuration for the relevant action, following the project’s scheme setup.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
For a CLI build, use the documented Release mode, for example
npx react-native run-ios --mode Release, with the correct project and signing setup. -
Before archiving, confirm the selected environment and bundle identifier. The release bundle identifier must match the identifier configured for the Apple Developer account.
-
Choose an Any iOS Device (arm64) archive destination, archive the app in Xcode, and use the intended signing and App Store Connect upload/distribution flow.
Rank #4
360° Rotating Stainless Steel Phone Tether Tab (Silvery 3-Pack) - Universal for iPhone & Other Phones (Fits Wristbands/Necklaces/Crossbody Straps)- [360 ° Flexible Rotation Design] Comes with a rotatable lanyard ring that supports 360 ° free rotation, effectively solving the problem of twisted and tangled lanyards
- [Wide compatibility] The ultra-thin 0.02-inch design does not block the charging port at all, and both wired and wireless charging can be used directly without removing the pad. Compatible with most smartphones such as iPhone, compatible with various wristbands, lanyards, crossbody straps, and keychains
- [Durable and Portable Material] Premium rust-resistant stainless steel material with good flexibility, which not only avoids scratching the phone case, but also has excellent anti rust and anti fading performance
- [Multi scenario Practical] Paired with a lanyard or wristband, hands-free use can be achieved. The phone is within reach and not easily dropped, ideal for daily commuting and outdoor activities. Suitable for full coverage phone cases, does not support half coverage phone cases
- [Quality Service] If you find any damage or other issues with the product upon receipt, please contact us immediately. We will handle it quickly
Using Release does not by itself prove that the production backend, push setup, link domains, or analytics destination are selected. Check those values in the resulting build before distribution.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteWhat should you verify before building or releasing?
-
Write down the environment matrix and identify which settings actually differ.
-
Keep shared defaults and resources in common configuration; isolate only intended environment-specific differences.
-
Give nonproduction builds a distinct visible name and app identity when they need to coexist with production on one device.
-
Document and select the exact Android variant and iOS scheme in local instructions and CI rather than relying on a default selection.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteSpecial offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.Best Value
Anteel 2 Pack Silicone Suction Cup Phone Case Mount Double Sided, Hands-Free Silicon Phone Grip with Higher Suction Power for Selfies and Videos, Non Slip Phone Accessories (LightPink&White)- 【PKYAA Double Sided Silicone Suction Phone Case Mount】PKYAA With Double Sided 40 Strong and Reliable individual suction cups, PKYAA provides a thicken and upgraded universal silicon suction mount for your phone.
- 【Friendly to Content Creators】If you are a content creator or an online influencer, you can create videos anywhere with this suction mount completely hands free with this silicone cell phone mount for cases.
- 【HANDS-FREE & Adhere to Mirrors】This Double Sided silicone suction phone case mount allows you to stick your phone to the mirror easily. No longer holding your phone in one hand to watch video tutorials while making up.
- 【Strong Grip on the Smooth Surface】You can easily hang your phone anywhere with a smooth surface. All you do is you clean off your phone and smooth surface. It is STURDY and it not only sticks to mirrors, it also sticks to windows, it sticks to refrigerators, tiles and other clean, flat surfaces.
- 【Press Down Firmly Every 30 Minutes】Use your palm or fingers to press the phone down firmly and check it's secure before letting go. Apply even pressure for a few seconds to allow the suction cup to adhere properly. To maintain the grip and prevent accidental falls, it's a good practice to periodically reapply pressure to the suction cup.
-
For Android, confirm custom variants’
debuggableVariantstreatment and test standalone staging builds with Metro stopped. -
Before distribution, verify the backend, app identity, push and deep-link settings, analytics destination, signing, and distribution lane for the artifact you are about to ship.
-
Inspect the built production artifact or its build metadata before release. A successful compile confirms that something built, not that the intended environment was selected.
What local setup is required?
React Native’s environment setup guidance for version 0.81 says a Mac is required to build projects with native iOS code locally. That requirement does not apply to Android-only builds, and the guidance does not prescribe a particular Mac model. Check the setup instructions for the React Native version and template your project actually uses; tool recommendations on a version-specific setup page should not be generalized to every release.
Teams already using Expo may also consider Expo Application Services for managed build and deployment workflows. That is an optional, complementary workflow—not a replacement for understanding native Gradle variants and Xcode scheme selection in a React Native CLI project.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

