Home/ Knowledge Base/ Recipes/ Recipes: build, run & distribute pipelines
Recipes

Recipes: build, run & distribute pipelines

Recipes are the data-driven, editable step lists behind every build and deploy. Duplicate a preset, edit a command, and it travels with your project.

Last updated 2026-07-02

A recipe is an ordered list of steps that AppRelay runs to build, run, or distribute a lane. Recipes are data, not code: AppRelay ships presets for every toolchain and channel, and you can duplicate any of them and edit the steps. Your edited recipes travel inside the project's .relay archive, so a team can share a curated pipeline the same way they share a project.

Anatomy of a recipe

Kind
What the recipe does: build, run, or distribute.
Adapter / channel
The toolchain or distribution channel it belongs to.
Steps
An ordered list; each step is a command template plus a progress marker and a pass/fail signal.
Built-in flag
Shipped presets are marked built-in and read-only — you duplicate them to edit.

Anatomy of a step

Title
What appears on the checklist.
Command
A template like {gradlew} :app:bundleRelease. Variables resolve at run time — see template variables.
Marker
A substring of the streamed output that signals this step has started, so the checklist advances live.
Pass signal
exitZero, a regex match, a fileExists check, or manual confirmation.
Working directory
Optional override of the lane's working directory for this step.

Built-in recipes

Every adapter and channel in the library ships with at least one seeded recipe, so a freshly onboarded project can build and ship without you writing anything. Representative examples:

RecipeDoes
xcode.archive-export-uploadArchive, export, and upload to App Store Connect
gradle.bundle-release + playConsole.upload-trackBuild an AAB and upload to a Play track
expo.eas-build + expo.eas-submitBuild and submit with EAS
flutter.build-appbundleBuild a Flutter app bundle
node.build + vercel.deploy / s3.sync-invalidateBuild a web app and deploy to Vercel or S3+CloudFront
electron.make + githubReleases.publishPackage an Electron app and publish a GitHub release
npm.publish · homebrew.bump-formula · docker.build-pushPublish to a registry / tap / Docker

Authoring a recipe

  1. Find the closest built-in. In the project editor's Recipes section, browse the library.
  2. Duplicate it. This gives you an editable copy; the original stays intact.
  3. Edit the steps. Change a command, add or remove a step, adjust a marker or pass signal, or use a different template variable.
  4. Attach it. Point a lane's toolchain (for build/run) or a distribution (for distribute) at your recipe.
  5. Run it from a release and confirm the checklist reflects your changes.

Keep steps linear — push logic to a script

Recipe commands are templates, not a programming language — steps are meant to stay linear and declarative. When you need real logic (conditionals, loops, branching), put it in a customShell step that calls a script in your repo — a fastlane lane, a Makefile target, or an npm script. That's where that logic belongs, and AppRelay simply orchestrates and observes it.

In other words, AppRelay does not reimplement Fastlane, EAS, or the Vercel CLI — it calls them. Recipes are the thin, visible glue that runs your tools in order and reports progress.

Recipes are shared and portable

Recipes live at the workspace level and are shared across projects, and they're written into the .relay archive on export. Duplicate-and-edit a step, export, and re-import on another machine — your change comes with it.

Next steps