Release Checklist
Use this checklist before publishing a customized ChatGPT React Native app or delivering a boilerplate build to a customer.
Product page: ChatGPT React Native App Template
Quick Answer
Do not release until yarn verify passes, real Firebase config files are installed, OpenAI is configured on Firebase Functions, release signing is set, and login, chat, media upload, push notifications, and AI replies have been tested on real devices.
1. Run the Quality Gate
From the mobile app folder:
cd ReactNativeChatGPTApp
yarn verify
If you need to isolate failures:
yarn lint
yarn typecheck
yarn test --runInBand
yarn doctor
yarn bundle:ios:ci
cd android && ./gradlew app:assembleGooglePlayDebug
yarn lint should pass with zero warnings. Treat new lint warnings as release blockers.
2. Verify Firebase and OpenAI
Before release:
- Replace
GoogleService-Info.plist. - Replace
google-services.json. - Enable required Firebase Auth providers.
- Deploy Firebase Functions.
- Configure
OPENAI_API_KEYonly in the Functions environment. - Set
OPENAI_MODELif you do not want the backend default. - Set
EXPO_PUBLIC_UPLOAD_MEDIA_FUNCTION_URL. - Confirm Firestore rules and Storage rules are production-ready.
- Confirm Firebase API keys are restricted by platform and API where possible.
3. Test Critical User Flows
Run these on at least one real iOS device and one real Android device:
- register account
- login and logout
- SMS auth if enabled
- Apple login on iOS if enabled
- Google or Facebook login if enabled
- create a chat
- send a text message and receive an AI assistant reply
- send media
- edit profile
- update profile photo
- receive push notification
- mark notification as read
- block and unblock a user
- delete or leave a group when applicable
4. Android Release
Release keystores are intentionally not committed.
Add signing values to local Gradle properties or CI secrets:
MYAPP_UPLOAD_STORE_FILE=release.keystore
MYAPP_UPLOAD_KEY_ALIAS=your-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=your-store-password
MYAPP_UPLOAD_KEY_PASSWORD=your-key-password
Then build the Google Play release bundle:
cd ReactNativeChatGPTApp/android
./gradlew app:bundleGooglePlayRelease
If you sell or support the Amazon variant, also test the Amazon build flavor before delivery.
5. iOS Release
Before archiving:
- set the production bundle identifier
- select the production signing team
- configure provisioning profiles
- enable Push Notifications if used
- enable Associated Domains if used
- verify the Firebase iOS app matches the bundle identifier
- install Pods from a clean checkout
Archive from Xcode or CI with the Instamobile scheme.
6. Store and Privacy Readiness
Prepare customer-specific store metadata:
- app name
- subtitle and description
- screenshots
- privacy policy URL
- terms URL
- support URL
- App Store privacy labels
- Google Play Data Safety form
- account deletion instructions if accounts are supported
- AI feature disclosure if required by the store or customer policy
7. Cost and Abuse Controls
Before production traffic:
- Monitor Firebase reads, writes, and Functions invocations.
- Monitor OpenAI API usage and spend.
- Keep chat realtime listeners capped to recent data.
- Keep search debounced and paginated.
- Avoid exposing OpenAI keys in client bundles.
- Add abuse prevention and rate limits on backend functions if the app will be public at scale.
FAQ
Can I ship with placeholder Firebase files?
No. Placeholder Firebase config files are only there so the repository can be cloned and built safely.
Is the Android keystore included?
No. Release keystores must be generated and stored locally or in CI secrets.
What is the minimum test before delivery?
Run yarn verify, build both platforms, and test auth, chat, assistant replies, media upload, push notifications, and profile flows on real devices.