Build apps with GitHub Actions
Every Goodspeed app ships with 10 GitHub Actions workflows covering CI, E2E, security, visual regression, i18n, and crash-free rate monitoring. Goodspeed generates GitHub Actions 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 GitHub Actions build
Every app Goodspeed generates with GitHub Actions includes these production-ready patterns, wired together from the first build.
| Item | Description | Strength |
|---|---|---|
| ci.yml: type check, tests, lint | Runs tsc --noEmit, Jest unit tests, and ESLint on every PR. Blocks merge if any step fails so type regressions are caught before EAS Build. | Quality |
| e2e.yml: Maestro end-to-end tests | Runs the Maestro E2E test suite against a development build on every PR targeting main, covering the core user flows defined in the .maestro/ directory. | Testing |
| security.yml: dependency audit | Runs npm audit and a Semgrep scan on PRs. Fails on high-severity vulnerabilities in the generated app's dependency tree. | Security |
| visual.yml: screenshot regression | Captures screenshots of key screens with Maestro and compares them to baselines stored in the repo. Flags visual regressions as PR checks. | Visual |
| crash-free.yml: crash-free rate gate | After production EAS Submit, a scheduled workflow queries Sentry for the crash-free session rate. Alerts the team if it drops below the configured threshold. | Monitoring |
| i18n.yml: translation completeness | Checks that every key in en.json is present in all declared locale files. PRs that add keys without translations fail before merge. | i18n |
Source: gas-template repository · CI / CD
REAL GENERATED CODE
A snippet from a GitHub Actions app the studio shipped
This pattern comes directly from the gas-template codebase, the foundation every Goodspeed app is generated on. The studio generates GitHub Actions code like this for every app in the pipeline, not just a hello-world scaffold.
CI workflow
# .github/workflows/ci.yml name: CI on: push: { branches: [main] } pull_request: jobs: type-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: '22' } - run: npm ci - run: npx tsc --noEmit test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm ci && npm test
Today's log
START WITH GITHUB ACTIONS