EAS Build uses profiles to define how your app is built. You’ll typically have development, preview, and production profiles.Open eas.json (in your shipnativeapp/ directory) and ensure you have a production profile for iOS:
{ "cli": { "version": ">= 3.15.1" }, "build": { "production": { "node": "20.19.0" }, "development": { "extends": "production", "distribution": "internal", "ios": { "buildConfiguration": "Debug", "simulator": true } }, "preview": { "extends": "production", "distribution": "internal", "ios": { "simulator": true } } }, "submit": { "production": { "ios": { "appleId": "your-apple-id@example.com", // Your Apple ID email "ascAppId": "YOUR_APP_STORE_CONNECT_APP_ID", // Optional: Your App Store Connect App ID "sku": "com.yourcompany.yourapp", // Your app's SKU "teamId": "YOUR_APPLE_DEVELOPER_TEAM_ID" // Your Apple Developer Team ID } } }}
The node: "20.19.0" setting ensures consistent Node.js version across all EAS builds. Shipnative also bundles Yarn 4.x in .yarn/releases/ for reliable builds without corepack conflicts.
Build Failures: Check the EAS build logs carefully for error messages. Common issues include incorrect bundle identifiers, missing credentials, or syntax errors in app.json.
Submission Errors: Ensure your eas.json submit profile is correctly configured with your Apple ID, team ID, and SKU. Verify that your app version and build number are incremented for new submissions.
Push Notifications: If you’re using push notifications, ensure you’ve enabled the capability in your Apple Developer account and configured your app.json as described in the Push Notifications guide.