expo / expo/expo-github-action
continuous-deploy-fingerprint: Support platform: ios,android to exclude web from eas update
- Dominant language
- TypeScript
- Stars
- 1k
- Forks
- 107
- PR merge metrics
- No merged PRs in 30d
Description
### Description of the bug
The continuous-deploy-fingerprint action's platform input only accepts 'all' | 'ios' | 'android'. When set to all (the default), builds are correctly scoped to iOS + Android, but the eas update step runs eas update --platform all, which triggers expo export for all platforms including web.
This causes failures for projects that use native-only modules (e.g. react-native-fast-tflite) which crash during the web export phase:
Metro error: Cannot read properties of undefined (reading 'getEnforcing')
TypeError: Cannot read properties of undefined (reading 'getEnforcing')
#### Expected behavior
is there any way to target both native platforms without including web. For example:
Accept comma-separated values: platform: ios,android
Or add a new option like platform: native
Or pass --platform per-platform to eas update the same way builds already resolve all → ['ios', 'android']
#### Actual behavior
- platform: all → builds for iOS + Android (correct), but eas update --platform all exports for web too (breaks)
- platform: ios → only handles iOS
- platform: android → only handles Android
- No option to target both iOS and Android without web
Running the action twice (once per platform) is not viable because the second invocation overwrites the first PR comment (same messageId).
### Additional context
```
name: Preview with EAS
on:
pull_request:
jobs:
preview-with-eas:
name: Preview with EAS
runs-on: ubuntu-latest
concurrency: fingerprint-${{ github.run_id }}
permissions:
contents: read
pull-requests: write
actions: write
packages: write
steps:
- name: 🔍 Check for EXPO_TOKEN
run: |
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi
- name: 🏗 Setup repo
uses: actions/checkout@v4
- name: 🌿 Setup Node
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "npm"
- name: Λ Setup EAS
uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: 📦 Install dependencies
run: npm ci
- name: 🚀 Create Preview with EAS Build and Update
uses: expo/expo-github-action/continuous-deploy-fingerprint@main
with:
profile: development
branch: development
platform: all
```
Contributor guide
Research direction
Read the continuous-deploy-fingerprint action's platform input handling and the EAS update invocation first. Trace how platform: all is resolved for builds versus updates, then make one invocation target iOS and Android without web while preserving the existing PR comment behavior. Done means native-only projects no longer trigger web export.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, typescript
- Domain
- ci-cd, mobile-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100