RORK LABJP
IOS27 — iOS 27 and iPadOS 27 land on September 14. For apps assembled with no-code or AI tooling, the week a new OS ships is when the ground moves mostDUO — Apple's first foldable, the iPhone Duo, starts at $1,999. A new screen shape is also the first place a generated layout tends to breakSPLIT — Standard Rork produces React Native through Expo. Rork Max generates native Swift. Neither will adapt to a folding screen at the same pace, or fail in the same waySUBMIT — Automated submission absorbs every change Apple makes to the process. An article praising the convenience owes its readers that caveatRATING — Answering the age rating questionnaire became mandatory in September. Apps built without code are no exceptionSILICON — The A20 Pro in the iPhone 18 Pro is reported to be the first high-volume smartphone processor built on TSMC's 2nm nodeIOS27 — iOS 27 and iPadOS 27 land on September 14. For apps assembled with no-code or AI tooling, the week a new OS ships is when the ground moves mostDUO — Apple's first foldable, the iPhone Duo, starts at $1,999. A new screen shape is also the first place a generated layout tends to breakSPLIT — Standard Rork produces React Native through Expo. Rork Max generates native Swift. Neither will adapt to a folding screen at the same pace, or fail in the same waySUBMIT — Automated submission absorbs every change Apple makes to the process. An article praising the convenience owes its readers that caveatRATING — Answering the age rating questionnaire became mandatory in September. Apps built without code are no exceptionSILICON — The A20 Pro in the iPhone 18 Pro is reported to be the first high-volume smartphone processor built on TSMC's 2nm node
Articles/App Dev
App Dev/2026-09-10Intermediate

Your First EAS Workflow in a Rork Repo, and the Alert That Goes Missing Exactly When You Need It

Putting two files into .eas/workflows in a repo exported from Rork, and why a notification wired with needs stays silent on exactly the nights it fails — with the output of a small local checker I actually ran.

EAS WorkflowsExpo204CI/CD8TestFlight14indie development41Rork559

Premium Article

Kick off a build late at night, wait for it to pass, then type the submit command. When you keep a handful of apps going on your own, that order settles into your fingers. It's not worth writing down, and yet getting it wrong costs you half an hour — and that little routine repeats once per app.

The other day, after shipping an update to one of my wallpaper apps, I found myself typing the same sequence again and thinking: this order is exactly the thing that shouldn't live in my fingers.

A repo exported from Rork is, at that point, an ordinary Expo project. If you have eas.json next to your source and the repo is on GitHub, one configuration file is enough to hand that order over.

The first one I wrote was wrong, though. It parses. eas accepts it. And it stays silent in the one situation where I actually want to hear from it.

Where the file goes, and two limits that bite early

Workflow files live in .eas/workflows/. The .eas directory sits at the same level as eas.json. Put it one level off and the command simply won't find anything.

my-app
  .eas
    workflows
      pr-preview.yml
      release.yml
  eas.json
  app.json

The extension has to be .yml or .yaml, and a workflow file must be 16 KiB or smaller. You won't hit 16 KiB writing normally, but you will notice it the day you decide to consolidate every job into one file. Splitting by purpose ages better.

There's a second thing worth knowing before you type anything. The trigger defaults empty out whichever list you leave unwritten. If on.push has neither branches nor tags, you get branches: ['*'] and tags: []. But write only one of them and the other becomes []. Delete the branches line while adding tags and branch pushes stop firing entirely. That may be what you want — it wasn't what I meant the first time.

Getting a preview update out when a pull request opens

The first file publishes a preview update when a pull request opens. It replaces an eas update I used to type by hand, and since nothing reaches production, it's a safe place to start.

# .eas/workflows/pr-preview.yml
name: PR preview
on:
  pull_request:
    branches: ['*']
    paths:
      - app/**
      - package.json
      - '!**/*.md'
 
jobs:
  publish_preview:
    type: update
    environment: preview
    params:
      branch: pr-${{ github.event.pull_request.number }}
      message: ${{ github.event.pull_request.title }}
    hooks:
      before_update:
        - name: Typecheck before anything ships
          run: npx tsc --noEmit

A quick read-through. paths narrows what counts as a change, and a leading ! excludes. Not burning a run on a README-only pull request is a small thing that adds up. branches defaults to ['*'], so that line is optional — I keep it for the version of me who reads this in six months.

type: update maps to eas update. You can set branch or channel, never both; here the branch name comes from the pull request number, so branch it is.

Then there's hooks. That's where I got stuck first.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
You'll be able to put two YAML files in your own repo so a pull request publishes a preview update and a tag carries a build all the way to TestFlight
You'll be able to avoid building a pipeline that stays quiet on precisely the nights it breaks, before you ever ship it
You'll be able to catch the needs-versus-after mix-up, the jobs that can't take steps, and the jobs where env silently does nothing, all from your own machine before you push
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $15 for lifetime access
View Membership →

Related Articles

Dev Tools2026-03-21
Setting Up CI/CD for Rork Apps with GitHub Actions and EAS Build
Learn how to build a complete CI/CD pipeline for your Rork app using GitHub Actions and EAS Build. From automated testing on every pull request to hands-free TestFlight deployment, this guide walks you through the entire setup.
App Dev2026-08-30
After Bumping targetSdk to 36, Which Part of Your Dependencies Should You Actually Read
I opened six real dependency AARs and counted what they contribute to my manifest. Not one declares targetSdkVersion, and twelve permissions arrive that I never wrote. Here is what to check before you submit.
App Dev2026-08-23
Bumping targetSdk to 36 surfaced a 16 KB warning. These are two different deadlines
The August 31 target API 36 requirement and the February 1, 2027 16 KB page size requirement are separate conditions. Here is how to inspect your AAB without installing the NDK, and why a LOAD misalignment and a zip boundary miss need completely different fixes.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links