RORK LABJP
DEADLINE — From August 31, 2026, Google Play requires target API level 36 (Android 16) or higher for both new apps and updates to existing ones. Thirteen days leftEXTENSION — If you cannot make the date, the deadline extension form in Play Console buys you until November 1. The extension is not automatic, so the request itself has to land before August 31TARGET SDK — Even for Expo and React Native apps produced by builders like Rork, the targetSdkVersion is yours to verify. A template pinned to an older SDK will not meet the requirement on its ownPOLICY — The spam and minimum functionality policy has been tightened around high-quality features and content experience, which puts thin, mass-produced apps squarely in scopePRIVACY — You are expected to explain in detail what data is collected, how it is used, and whether it is shared, including analytics SDKs and advertising identifiers a builder wires in for youRORK — Where the original Rork emits React Native and Expo, Rork Max generates SwiftUI. There is a free tier to start with, and paid plans begin at $25 per monthDEADLINE — From August 31, 2026, Google Play requires target API level 36 (Android 16) or higher for both new apps and updates to existing ones. Thirteen days leftEXTENSION — If you cannot make the date, the deadline extension form in Play Console buys you until November 1. The extension is not automatic, so the request itself has to land before August 31TARGET SDK — Even for Expo and React Native apps produced by builders like Rork, the targetSdkVersion is yours to verify. A template pinned to an older SDK will not meet the requirement on its ownPOLICY — The spam and minimum functionality policy has been tightened around high-quality features and content experience, which puts thin, mass-produced apps squarely in scopePRIVACY — You are expected to explain in detail what data is collected, how it is used, and whether it is shared, including analytics SDKs and advertising identifiers a builder wires in for youRORK — Where the original Rork emits React Native and Expo, Rork Max generates SwiftUI. There is a free tier to start with, and paid plans begin at $25 per month
Articles/Dev Tools
Dev Tools/2026-04-21Advanced

Rork × Fastlane × EAS Release Automation Guide — Ship Screenshots, Metadata, and TestFlight/Play Console Builds With One Command

A production-ready implementation guide for automating Rork app releases with Fastlane and EAS. Generate screenshots, sync store metadata, and ship to TestFlight and Google Play with a single command.

FastlaneEAS6CI/CD7TestFlight12Play ConsoleApp Store Connect11release automationGitHub Actions5indie development34

Premium Article

If you run iOS and Android apps on your own, the release process itself is the biggest time thief. Bump the version, open App Store Connect, swap out screenshots, rewrite release notes in English and Japanese, upload to TestFlight, then do the whole thing again in Play Console. Two releases a week, and you've burned a full afternoon on ceremony — something I suspect every solo developer has felt at least once.

Rork positions itself as a tool that lets you build apps without writing code, but in my experience the real time sink isn't coding — it's all the manual work around shipping. So in this guide I'll walk you through the setup I actually use to combine Fastlane + EAS (Expo Application Services) for Rork apps, compressing screenshot generation, metadata sync, and TestFlight / Play Console delivery into a single command.

This goes deep, but once it's in place, a release takes about eight minutes of walltime and less than two of actual hands-on work. An afternoon this weekend is a fair investment.

Quick orientation: this guide assumes you already have a Rork project that produces an Expo-managed React Native app, you've published at least one version to the stores manually (so the listings exist), and you're comfortable running shell commands in a Unix-like environment. If any of that isn't true yet, bookmark this and come back after you've shipped your first build — the automation pays off more when you've felt the manual pain at least once. Everything below is written from the perspective of a solo developer who ships often, not a large team managing a fleet of apps, so the trade-offs lean toward simplicity and fast recovery over enterprise-grade audit trails.

What changes — time savings I actually measured

Before diving in, here are the real numbers from the three apps I run. I timed a typical release both ways:

  • Manual release (2 locales × iOS/Android): about 2 hours 30 minutes per release
  • After Fastlane + EAS automation: about 8 minutes (2 minutes of local input, the rest CI wait)

At two releases a week that's over four hours a month, more than fifty hours a year. Even better, human errors — wrong screenshot dimensions, missed translations, reusing an old build number — drop to essentially zero, so App Review rejections due to trivial metadata mistakes go away too.

The key design decision is to split responsibilities between EAS and Fastlane:

  • EAS builds the iOS and Android binaries in the cloud. You don't need a local Xcode or Android Studio setup.
  • Fastlane ships those binaries to TestFlight and Play Console, and syncs metadata + screenshots to App Store Connect and Google Play.

EAS does have eas submit for store uploads, but it does not handle metadata sync, screenshot swaps, or review information. That's the gap Fastlane fills in this setup, and it's why both tools earn their place.

Project layout — put Fastlane at the repo root

Create a fastlane/ directory at the root of your Rork project with this structure:

  • fastlane/Fastfile — lane definitions
  • fastlane/Appfile — app identity (Team ID, Bundle ID, Package Name)
  • fastlane/Matchfile — certificate sync config (iOS)
  • fastlane/Deliverfile — App Store Connect metadata config
  • fastlane/Supplyfile — Google Play metadata config
  • fastlane/metadata/ios/{ja,en-US}/ — iOS store metadata (description, keywords, etc.)
  • fastlane/metadata/android/{ja-JP,en-US}/ — Android store metadata
  • fastlane/screenshots/ios/{ja,en-US}/ — iOS screenshots
  • fastlane/screenshots/android/{ja-JP,en-US}/ — Android screenshots
  • fastlane/.env.default — non-secret defaults
  • fastlane/.env.secret — secrets (never commit this)

I switch between iOS and Android by naming lanes per platform (ios_beta, android_beta). You can use Fastlane's platform :ios do ... end wrapping, but at indie-project scale a flat lane list is easier to scan.

Pin Ruby with a Gemfile

Fastlane is Ruby, so the only way to keep CI and local behavior in sync is a Gemfile:

# Gemfile
source "https://rubygems.org"
 
gem "fastlane", "~> 2.224"
gem "cocoapods", "~> 1.15"   # only if you have native modules
 
ruby "3.3.0"

Also add 3.3.0 to .ruby-version. On CI, run bundle install --path vendor/bundle and cache vendor/bundle — this alone eliminates a whole class of "works on my machine" headaches.

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 can take home a working setup that bundles screenshot generation, metadata sync, and TestFlight / Play Console delivery behind one command, starting today
You will learn the exact patterns for handling App Store Connect API keys and Google Service Account JSON safely from GitHub Actions — including cleanup on failure
Even if you ship twice a week, the release chore disappears from your calendar so you can focus on features and writing again
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 $10 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.
Dev Tools2026-03-14
Moving Six Apps to EAS CI/CD — EAS Build, OTA Updates, and GitHub Actions in Practice
How I moved the build and release pipeline for six indie apps to Expo Application Services: EAS Build for iOS and Android, OTA updates with EAS Update, GitHub Actions integration, and honest notes on free-tier limits.
Dev Tools2026-06-17
Your Rork App Is Stuck on "Processing" in App Store Connect — A Field Guide to Getting It Unstuck
You uploaded a Rork-built app to App Store Connect, but the build sits on Processing for hours and never shows up in TestFlight or for submission. Here is the exact diagnostic order I follow, plus the pre-upload checks that stop it from happening again — with working code.
📚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
See all →