2.9 KiB
Mobile builds and store releases
BangSo Bot's public repository does not contain production App Store Connect, Google Play, Apple team, or private EAS submission identifiers. Those values belong in the release operator's private configuration.
Self-hosters normally do not need to publish their own mobile app: the BangSo Bot client can select a compatible server from the sign-in screen. If you distribute your own branded build, use your own Expo and store accounts.
Configure a build
- Link
apps/mobileto an Expo project owned by your account. - Choose unique iOS and Android application identifiers.
- Configure
EXPO_PUBLIC_API_URLin the EAS build environment. Production builds require a valid HTTPS URL. - Keep store application IDs, team IDs, signing credentials, API keys, and review-account credentials out of Git.
- Before a native iOS or Android build, run
pnpm --filter @rakazo/mobile exec expo install --check. Attachment pickers and other Expo native modules must match the SDK (SDK 57 needsexpo-image-picker@~57.0.11, not 17.x). Usepnpm exec expo install --fixfromapps/mobileif that check fails.
From apps/mobile:
eas project:init
eas env:create --environment production --name EXPO_PUBLIC_API_URL --value https://app.example.com --visibility plaintext
eas build --platform ios --profile production
eas submit --platform ios --profile production --latest
EAS can prompt for store identity interactively. For automated submission, add the required identifiers through a private CI configuration or a short-lived local change that is never committed.
Before submission, verify the production API, account deletion, sign-in, notifications, store privacy answers, age rating, screenshots, support page, and review account on a physical device.
Over-the-air updates
Production and preview builds include expo-updates and use the corresponding
EAS Update channel. The runtime version follows the public app version, so bump
expo.version whenever native code, config plugins, permissions, or native
dependencies change, then create and submit new store builds.
After the full GitHub Actions test suite passes on main, CI publishes a
production OTA update when the revision only changes the mobile JavaScript,
TypeScript, or bundled CSS. CI deliberately skips OTA publishing when native
configuration, modules, dependencies, assets, or the update workflow changed.
The repository needs an EXPO_TOKEN Actions secret with access to the linked
Expo project.
To publish a compatible update manually from apps/mobile:
eas update --platform all --channel production --environment production --message "Short description"
Installed release builds download a compatible update in the background on
launch and apply it after the next restart. Builds created before
expo-updates was configured cannot receive OTA updates and must be replaced
with a new iOS and Android build once.