Build apps with EAS Build
EAS Build compiles iOS and Android binaries in the cloud; EAS Submit pushes them to the App Store and Play Store without a Mac. Goodspeed generates EAS Build as a standard part of every app, so the output is a working codebase from day one, not a scaffold you have to finish yourself.
WHAT GETS GENERATED
Built into every EAS Build build
Every app Goodspeed generates with EAS Build includes these production-ready patterns, wired together from the first build.
| Item | Description | Strength |
|---|---|---|
| eas.json with three build profiles | development (creates a development client for local iteration), staging (internal distribution for TestFlight/Play internal), and production (store submission). | Build |
| Cloud iOS builds from any machine | EAS Build provisions Xcode, signing certificates, and provisioning profiles in the cloud. No Mac required for the iOS binary in any profile. | Deploy |
| EAS Update OTA channel wired | JavaScript changes ship over the air via EAS Update without App Store review. The update channel (preview/staging/production) is read from EXPO_PUBLIC_RELEASE_CHANNEL. | Deploy |
| Build caching for faster iterations | EAS Build caches the node_modules layer and native binary so only changed code triggers a full native compile. Most JS-only builds complete in under two minutes. | Performance |
| scripts/release.mjs automation | The release script runs tsc --noEmit, bumps the version, submits the EAS Build, and pushes the OTA update in sequence so no step is skipped by accident. | Automation |
Source: gas-template repository · Cloud Build and Deploy
REAL GENERATED CODE
A snippet from a EAS Build app the studio shipped
This pattern comes directly from the gas-template codebase, the foundation every Goodspeed app is generated on. The studio generates EAS Build code like this for every app in the pipeline, not just a hello-world scaffold.
eas.json profiles
// eas.json: three build profiles { "build": { "development": { "developmentClient": true, "distribution": "internal" }, "staging": { "distribution": "internal", "channel": "staging" }, "production": { "autoIncrement": true, "channel": "production" } } }
Today's log