From 9b25f8fc3659537df8815486b9890d69a0606e81 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Thu, 23 Apr 2026 21:36:35 +0700 Subject: [PATCH] Auto-submit iOS builds for App Store review via fastlane Adds a fastlane lane and an EAS Workflow custom job that runs after submit_ios. Picks up the latest TestFlight build, waits for Apple processing, and submits for review with auto-release on approval. Uses ASC_KEY_ID, ASC_ISSUER_ID, ASC_KEY_P8 secrets from the EAS production environment. --- .../app/.eas/workflows/release-mobile.yml | 13 ++++++ packages/app/Gemfile | 3 ++ packages/app/fastlane/Appfile | 1 + packages/app/fastlane/Fastfile | 42 +++++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 packages/app/Gemfile create mode 100644 packages/app/fastlane/Appfile create mode 100644 packages/app/fastlane/Fastfile diff --git a/packages/app/.eas/workflows/release-mobile.yml b/packages/app/.eas/workflows/release-mobile.yml index 35fe47e6b..910f99019 100644 --- a/packages/app/.eas/workflows/release-mobile.yml +++ b/packages/app/.eas/workflows/release-mobile.yml @@ -37,3 +37,16 @@ jobs: params: build_id: ${{ needs.build_android.outputs.build_id }} profile: production + + submit_ios_for_review: + name: Submit iOS for App Store review + needs: [submit_ios] + environment: production + steps: + - uses: eas/checkout + - name: Install fastlane + working_directory: ./packages/app + run: bundle install + - name: Submit for review + working_directory: ./packages/app + run: bundle exec fastlane ios submit_review diff --git a/packages/app/Gemfile b/packages/app/Gemfile new file mode 100644 index 000000000..7a118b49b --- /dev/null +++ b/packages/app/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" + +gem "fastlane" diff --git a/packages/app/fastlane/Appfile b/packages/app/fastlane/Appfile new file mode 100644 index 000000000..909d16f40 --- /dev/null +++ b/packages/app/fastlane/Appfile @@ -0,0 +1 @@ +app_identifier("sh.paseo") diff --git a/packages/app/fastlane/Fastfile b/packages/app/fastlane/Fastfile new file mode 100644 index 000000000..53256cf55 --- /dev/null +++ b/packages/app/fastlane/Fastfile @@ -0,0 +1,42 @@ +default_platform(:ios) + +APP_IDENTIFIER = "sh.paseo" + +platform :ios do + desc "Submit the latest TestFlight build to App Store Review" + lane :submit_review do + api_key = app_store_connect_api_key( + key_id: ENV.fetch("ASC_KEY_ID"), + issuer_id: ENV.fetch("ASC_ISSUER_ID"), + key_filepath: ENV.fetch("ASC_KEY_P8"), + ) + + build_number = latest_testflight_build_number( + api_key: api_key, + app_identifier: APP_IDENTIFIER, + ) + + wait_for_build_processing_to_be_complete( + api_key: api_key, + app_identifier: APP_IDENTIFIER, + build_number: build_number.to_s, + ) + + deliver( + api_key: api_key, + app_identifier: APP_IDENTIFIER, + build_number: build_number.to_s, + submit_for_review: true, + automatic_release: true, + force: true, + skip_binary_upload: true, + skip_screenshots: true, + skip_metadata: true, + precheck_include_in_app_purchases: false, + submission_information: { + add_id_info_uses_idfa: false, + export_compliance_uses_encryption: false, + }, + ) + end +end