Skip to main content

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_KEY only in the Functions environment.
  • Set OPENAI_MODEL if 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.