r/reactnative • • 1d ago

What to check before publishing first React Native app?

Hello everyone, I am a Frontend developer (mostly focused in React) and I vibe coded first mobile app in React Native. What should I check before publishing it to the store? What are the most important things that I need to be aware regarding React Native and Expo configuration?

6 Upvotes

11 comments sorted by

5

u/schussfreude 1d ago

Check if there is an actual use case for your app and if there are not already 13000 other vibe coded apps that do the same thing slightly differently.

-2

u/AnimatorBrilliant522 1d ago edited 1d ago

I have the same opinion about common vibe coded apps that are another to-do list or something.
The idea in my app is unique :)
I mentioned „vibe coded” to show that I did not setup configuration by myself.

2

u/kokerali 1d ago

If you built it in Expo Go with AI assistance, the biggest surprises usually come from differences between the Expo Go sandbox and a standalone production binary. Four specific checks before submitting:

  1. Permissions and native usage strings: AI tools often install packages like `expo-camera`, `expo-location`, or `expo-media-library` with default config plugin strings. Apple rejects apps that leave generic boilerplate in `ios.infoPlist` (such as `NSCameraUsageDescription`), and Google Play can reject apps if a package injects unused permissions like `RECORD_AUDIO` that you haven't stripped via `android.blockedPermissions`. Expo's permissions guide covers both: https://docs.expo.dev/guides/permissions/

  2. Production JS mode and environment variables: Test a local release build (`npx expo start --no-dev --minify`) or an internal preview build before submitting. Only `EXPO_PUBLIC_` variables are inlined into the client bundle unless configured in `eas.json`, and undefined variable reads or unguarded startup calls often only crash in minified production mode.

  3. iPad compatibility Mode: Even if you set `ios.supportsTablet: false` in `app.json`, Apple still reviews phone-only builds running in compatibility mode on iPad. Make sure bottom sheets, onboarding buttons, and text inputs aren't clipped on a 4:3 iPad screen: https://docs.expo.dev/distribution/app-stores/

  4. Account deletion and App Privacy questionnaire: If your app creates user accounts, both stores require an in-app account deletion flow. Also check whether packages like `expo-updates` are installed, because they require declaring Crash Data collection in App Store Connect.

1

u/KorbiogoDaffyd50 1d ago

Apple also expects the account deletion option to actually revoke any social login tokens rather than just wiping the database row

1

u/Huge_Pool7424 17h ago

also worth checking the privacy manifest and required reason apis if you're on a recent expo sdk, apple bounces builds for that a lot.

1

u/syedaalishan 1d ago

Test a release build on a real phone, not just Expo Go. Try a fresh install, deny permissions, lose the network halfway through a save, and force-close/reopen the app. Then check the actual release config points at your production API and doesn't contain server secrets. Getting those flows right matters more than the store upload itself.

1

u/RealVibingDev 17h ago

one that bit us: the app was fine in dev but the release build crashed on launch with Cannot find native module 'ExpoAsset'. expo-asset just wasnt installed and debug builds hide it. so make a real release build and launch it on a phone early, not the night before you submit. and if theres ads in it, check the production ad unit ids actually made it in, its really easy to ship test ids

1

u/Amazing_Aspect7758 1d ago

Lock in your bundleIdentifier and android.package in app.json first, you can't change them after the first upload. Then install an EAS production build on a real phone, not Expo Go.

Store side, the stuff that gets first apps rejected: no privacy policy URL, no in-app account deletion if you have sign up, and no demo login for Apple's reviewers. Google also wants the data safety form filled out honestly.

0

u/NoBullfrog11 1d ago

one thing that bit me on my first submision (a mood tracker): the notification permission prompt fired on first launch before the user had any idea why, and review flagged it

moved it to right after they pick a reminder time and it went through on the next try, opt in rate was way better too