-
Notifications
You must be signed in to change notification settings - Fork 173
Description
Build/Submit details page URL
No response
Summary
- environment on update job type causes: Invalid workflow definition. [jobs]: Invalid input: expected record, received undefined
- eas workflow:validate passes locally (CLI v18.0.1), but the server API rejects it
- environment works fine on fingerprint jobs, only fails on update jobs
- Request ID: 7bb69830-4069-4aa5-97ea-cbd3b319f41d
- The published JSON schema at api.expo.dev/v2/workflows/schema explicitly lists environment as valid for update jobs
- Removing environment from update jobs resolves the error
Managed or bare?
Managed
Environment
expo-env-info 2.0.8 environment info:
System:
OS: macOS 26.3
Shell: 5.9 - /bin/zsh
Binaries:
Node: 22.16.0 - ~/.nvm/versions/node/v22.16.0/bin/node
Yarn: 1.22.22 - /usr/local/bin/yarn
npm: 10.9.2 - ~/.nvm/versions/node/v22.16.0/bin/npm
Watchman: 2026.01.12.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.16.2 - /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 25.2, iOS 26.2, macOS 26.2, tvOS 26.2, visionOS 26.2, watchOS 26.2
IDEs:
Android Studio: 2025.1 AI-251.26094.121.2512.13991807
Xcode: 26.2/17C52 - /usr/bin/xcodebuild
npmPackages:
expo: ~54.0.33 => 54.0.33
expo-router: ~6.0.23 => 6.0.23
expo-updates: ~29.0.16 => 29.0.16
react: 19.1.0 => 19.1.0
react-dom: 19.1.0 => 19.1.0
react-native: 0.81.5 => 0.81.5
react-native-web: ~0.21.0 => 0.21.2
npmGlobalPackages:
eas-cli: 18.0.1
Expo Workflow: bare
npx expo-doctor
17/17 checks passed. No issues detected!
Error output
Failed to start the workflow with the API.
Invalid workflow definition. [jobs]: Invalid input: expected record, received undefined.
Request ID: e94e3e0e-be01-4e3c-94c9-97d427c9390e
Reproducible demo or steps to reproduce from a blank project
name: Preview Deploy
on:
push:
branches: ['main']
jobs:
fingerprint:
name: Fingerprint
type: fingerprint
environment: preview
get_android_build:
name: Check existing Android build
needs: [fingerprint]
type: get-build
params:
fingerprint_hash: ${{ needs.fingerprint.outputs.android_fingerprint_hash }}
profile: preview
get_ios_build:
name: Check existing iOS build
needs: [fingerprint]
type: get-build
params:
fingerprint_hash: ${{ needs.fingerprint.outputs.ios_fingerprint_hash }}
profile: preview
build_android:
name: Build Android
needs: [get_android_build]
if: ${{ !needs.get_android_build.outputs.build_id }}
type: build
params:
platform: android
profile: preview
build_ios:
name: Build iOS
needs: [get_ios_build]
if: ${{ !needs.get_ios_build.outputs.build_id }}
type: build
params:
platform: ios
profile: preview
submit_android:
name: Submit Android to Internal Testing
needs: [build_android]
type: submit
params:
build_id: ${{ needs.build_android.outputs.build_id }}
profile: preview
submit_ios:
name: Submit iOS to TestFlight
needs: [build_ios]
type: submit
params:
build_id: ${{ needs.build_ios.outputs.build_id }}
profile: preview
update_android:
name: OTA Update Android
needs: [get_android_build]
if: ${{ needs.get_android_build.outputs.build_id }}
type: update
environment: preview
params:
branch: preview
platform: android
update_ios:
name: OTA Update iOS
needs: [get_ios_build]
if: ${{ needs.get_ios_build.outputs.build_id }}
type: update
environment: preview
params:
branch: preview
platform: ios