Skip to content

t1k:rn:performance:deployment

FieldValue
Moduleperformance
Version1.6.3
Efforthigh
Tools

Keywords: app store, CodePush, deployment, EAS build, OTA, react native

/t1k:rn:performance:deployment

eas.json
{
"cli": { "version": ">= 10.0.0" },
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": { "simulator": true }
},
"preview": {
"distribution": "internal",
"android": { "buildType": "apk" }
},
"production": {
"autoIncrement": true
}
},
"submit": {
"production": {
"ios": { "appleId": "$(APPLE_ID)", "ascAppId": "$(ASC_APP_ID)" },
"android": { "serviceAccountKeyPath": "./service-account.json" }
}
}
}
Terminal window
# Development build (replaces Expo Go for native modules)
eas build --profile development --platform ios
eas build --profile development --platform android
# Preview (internal distribution)
eas build --profile preview --platform all
# Production
eas build --profile production --platform all
# Submit to stores
eas submit --platform ios
eas submit --platform android
import * as Updates from 'expo-updates';
// Check and apply update
async function checkForUpdate() {
try {
const update = await Updates.checkForUpdateAsync();
if (update.isAvailable) {
await Updates.fetchUpdateAsync();
await Updates.reloadAsync(); // restart app
}
} catch (e) {
console.error('Update check failed:', e);
}
}
Terminal window
# Publish OTA update (no store review needed for JS changes)
eas update --branch production --message "Fix crash on login"
// app.json — auto-increment via EAS
{
"expo": {
"version": "1.2.0",
"ios": { "buildNumber": "42" },
"android": { "versionCode": 42 }
}
}
  • development profile requires dev client — build once, iterate with OTA
  • OTA updates only cover JS bundle — native code changes require full store build
  • Always set autoIncrement: true in production profile — prevents version conflicts
  • Use eas secret:create for API keys — never hardcode in eas.json
  • Updates.reloadAsync() restarts immediately — save any pending state before calling
  • OTA update channels must match: branch production → app built with production profile
  • App Store review takes 1-3 days — plan OTA strategy for hotfixes
  • eas build --local requires Docker — use for debugging build issues
  • Store signing credentials in EAS — never commit keystores or provisioning profiles to git
  • Use eas secret for all CI/CD secrets (API keys, tokens)
  • Enable certificate pinning for production API calls