-
Notifications
You must be signed in to change notification settings - Fork 173
Description
Build/Submit details page URL
No response
Summary
eas workflow:validate rejects valid slack job configurations when webhook_url uses a ${{ }} template expression (e.g. ${{ env.SLACK_WEBHOOK_URL }}). The same workflow validates successfully server-side and runs correctly on EAS.
The workflow JSON schema at https://api.expo.dev/v2/workflows/schema defines webhook_url as:
{
"type": "string",
"format": "uri"
}The format: "uri" constraint is applied to the raw YAML value before template expressions are resolved. ${{ env.SLACK_WEBHOOK_URL }} is not a valid URI, so it fails format validation. Since the slack params use an anyOf schema (message variant vs. payload variant), the webhook_url format failure causes neither variant to match, and the validator falls through to try every other job type, producing a large and confusing error cascade.
Managed or bare?
Managed
Environment
expo-env-info 2.0.8 environment info:
System:
OS: macOS 15.7.3
Shell: 5.9 - /bin/zsh
Binaries:
Node: 24.13.0 - ~/.local/state/fnm_multishells/84465_1770958971575/bin/node
Yarn: 4.12.0 - ~/.local/state/fnm_multishells/84465_1770958971575/bin/yarn
npm: 11.6.2 - ~/.local/state/fnm_multishells/84465_1770958971575/bin/npm
Watchman: 2026.01.12.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.16.2 - /Users/chris/.rbenv/shims/pod
SDKs:
iOS SDK:
Platforms: DriverKit 25.0, iOS 26.0, macOS 26.0, tvOS 26.0, visionOS 26.0, watchOS 26.0
IDEs:
Android Studio: 2025.1 AI-251.26094.121.2513.14007798
Xcode: 26.0.1/17A400 - /usr/bin/xcodebuild
npmPackages:
babel-preset-expo: ~54.0.0 => 54.0.3
expo: ~54.0.0 => 54.0.12
expo-updates: ~29.0.16 => 29.0.16
react: 19.1.0 => 19.1.0
react-native: 0.81.5 => 0.81.5
npmGlobalPackages:
eas-cli: 18.0.1
Expo Workflow: bare
Error output
(truncated)
$ eas workflow:validate .eas/workflows/slack-repro.yml
✖ Workflow configuration YAML is not valid.
Error: The value at /jobs/notify/type must be equal to constant.
The value at /jobs/notify/params is missing the required field 'platform'.
The value at /jobs/notify/params has an unexpected property, webhook_url, which is not in the list of allowed properties (platform, profile, message).
The value at /jobs/notify is missing the required field 'steps'.
...
The value at /jobs/notify/params/webhook_url must be a valid URI string but it was not.
...
The value at /jobs/notify must match a schema in anyOf.
Reproducible demo or steps to reproduce from a blank project
name: Slack Repro
on:
workflow_dispatch: {}
jobs:
notify:
name: Notify
type: slack
environment: preview
params:
webhook_url: ${{ env.SLACK_WEBHOOK_URL }}
message: "Hello world"