expo / expo/expo-github-action

continuous-deploy-fingerprint: Support platform: ios,android to exclude web from eas update

Open
#353 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.