Fix EAS deployment issue related to Expo Updates and add agent skills#519
Fix EAS deployment issue related to Expo Updates and add agent skills#519MOHAMED-LAAGUILI wants to merge 1 commit intoobytes:masterfrom
Conversation
✅ Deploy Preview for obytes-starter canceled.
|
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR primarily adds internal “skills” documentation (under both .github/skills/ and .agents/skills/) for Expo upgrades, deployment, CI/CD workflows, and native UI patterns, plus supporting Node scripts for validating EAS workflow YAML, and new environment/EAS ignore configuration.
Changes:
- Added multiple skill/reference markdown docs for Expo upgrade, deployment, CI/CD workflows, and native UI patterns (duplicated under
.github/skills/and.agents/skills/). - Added Node-based helper scripts to fetch/cache the EAS workflows schema and validate workflow YAML against it.
- Added environment files and an
.easignoreto influence EAS build context contents.
Reviewed changes
Copilot reviewed 80 out of 97 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| .husky/.gitignore | Removes Husky gitignore placeholder file. |
| .github/skills/upgrading-expo/references/react-compiler.md | Adds Expo SDK 54+ React Compiler reference doc. |
| .github/skills/upgrading-expo/references/react-19.md | Adds React 19 migration reference doc. |
| .github/skills/upgrading-expo/references/new-architecture.md | Adds Expo New Architecture reference doc. |
| .github/skills/upgrading-expo/references/native-tabs.md | Adds Native Tabs (SDK 55) migration reference doc. |
| .github/skills/upgrading-expo/references/expo-av-to-video.md | Adds expo-av → expo-video migration reference. |
| .github/skills/upgrading-expo/references/expo-av-to-audio.md | Adds expo-av → expo-audio migration reference. |
| .github/skills/upgrading-expo/SKILL.md | Adds “upgrading-expo” skill manifest/guide. |
| .github/skills/expo-dev-client/SKILL.md | Adds “expo-dev-client” skill manifest/guide. |
| .github/skills/expo-deployment/references/workflows.md | Adds EAS workflows reference doc. |
| .github/skills/expo-deployment/references/testflight.md | Adds TestFlight submission reference doc. |
| .github/skills/expo-deployment/references/play-store.md | Adds Google Play submission reference doc. |
| .github/skills/expo-deployment/references/ios-app-store.md | Adds iOS App Store submission reference doc. |
| .github/skills/expo-deployment/SKILL.md | Adds “expo-deployment” skill manifest/guide. |
| .github/skills/expo-cicd-workflows/scripts/validate.js | Adds workflow YAML validator script (AJV + schema fetch). |
| .github/skills/expo-cicd-workflows/scripts/package.json | Adds script dependencies for validator/fetch helpers. |
| .github/skills/expo-cicd-workflows/scripts/fetch.js | Adds cached fetch helper for schema/docs retrieval. |
| .github/skills/expo-cicd-workflows/SKILL.md | Adds “expo-cicd-workflows” skill manifest/guide. |
| .github/skills/building-native-ui/references/zoom-transitions.md | Adds zoom transitions reference doc. |
| .github/skills/building-native-ui/references/visual-effects.md | Adds blur/glass effects reference doc. |
| .github/skills/building-native-ui/references/toolbar-and-headers.md | Adds toolbar/header patterns reference doc. |
| .github/skills/building-native-ui/references/storage.md | Adds storage recommendations reference doc. |
| .github/skills/building-native-ui/references/search.md | Adds search UX/patterns reference doc. |
| .github/skills/building-native-ui/references/route-structure.md | Adds Expo Router route structure reference doc. |
| .github/skills/building-native-ui/references/media.md | Adds camera/audio/video/media reference doc. |
| .github/skills/building-native-ui/references/icons.md | Adds SF Symbols usage reference doc. |
| .github/skills/building-native-ui/references/gradients.md | Adds CSS gradients reference doc. |
| .github/skills/building-native-ui/references/form-sheet.md | Adds form sheet patterns reference doc. |
| .github/skills/building-native-ui/references/controls.md | Adds native controls reference doc. |
| .github/skills/building-native-ui/references/animations.md | Adds animations (Reanimated) reference doc. |
| .env.production | Adds production environment file (includes secrets). |
| .env.preview | Adds preview environment file (includes secrets). |
| .env.development | Adds development environment file (includes secrets). |
| .env | Expands base env file content and switches to quoted values. |
| .easignore | Adds EAS ignore rules, excluding .github/ and .agents/. |
| .agents/skills/upgrading-expo/references/react-compiler.md | Duplicates React Compiler reference under .agents/. |
| .agents/skills/upgrading-expo/references/react-19.md | Duplicates React 19 reference under .agents/. |
| .agents/skills/upgrading-expo/references/new-architecture.md | Duplicates New Architecture reference under .agents/. |
| .agents/skills/upgrading-expo/references/native-tabs.md | Duplicates Native Tabs reference under .agents/. |
| .agents/skills/upgrading-expo/references/expo-av-to-video.md | Duplicates expo-av → expo-video reference under .agents/. |
| .agents/skills/upgrading-expo/references/expo-av-to-audio.md | Duplicates expo-av → expo-audio reference under .agents/. |
| .agents/skills/upgrading-expo/SKILL.md | Duplicates “upgrading-expo” skill under .agents/. |
| .agents/skills/expo-dev-client/SKILL.md | Duplicates “expo-dev-client” skill under .agents/. |
| .agents/skills/expo-deployment/references/workflows.md | Duplicates workflows reference under .agents/. |
| .agents/skills/expo-deployment/references/testflight.md | Duplicates TestFlight reference under .agents/. |
| .agents/skills/expo-deployment/references/play-store.md | Duplicates Play Store reference under .agents/. |
| .agents/skills/expo-deployment/SKILL.md | Duplicates “expo-deployment” skill under .agents/. |
| .agents/skills/expo-cicd-workflows/scripts/validate.js | Duplicates validator script under .agents/. |
| .agents/skills/expo-cicd-workflows/scripts/package.json | Duplicates scripts package.json under .agents/. |
| .agents/skills/expo-cicd-workflows/scripts/fetch.js | Duplicates fetch helper under .agents/. |
| .agents/skills/expo-cicd-workflows/SKILL.md | Duplicates “expo-cicd-workflows” skill under .agents/. |
| .agents/skills/building-native-ui/references/zoom-transitions.md | Duplicates zoom transitions reference under .agents/. |
| .agents/skills/building-native-ui/references/visual-effects.md | Duplicates visual effects reference under .agents/. |
| .agents/skills/building-native-ui/references/toolbar-and-headers.md | Duplicates toolbar/header reference under .agents/. |
| .agents/skills/building-native-ui/references/storage.md | Duplicates storage reference under .agents/. |
| .agents/skills/building-native-ui/references/search.md | Duplicates search reference under .agents/. |
| .agents/skills/building-native-ui/references/route-structure.md | Duplicates route structure reference under .agents/. |
| .agents/skills/building-native-ui/references/media.md | Duplicates media reference under .agents/. |
| .agents/skills/building-native-ui/references/icons.md | Duplicates icons reference under .agents/. |
| .agents/skills/building-native-ui/references/gradients.md | Duplicates gradients reference under .agents/. |
| .agents/skills/building-native-ui/references/form-sheet.md | Duplicates form sheet reference under .agents/. |
| .agents/skills/building-native-ui/references/controls.md | Duplicates controls reference under .agents/. |
| .agents/skills/building-native-ui/references/animations.md | Duplicates animations reference under .agents/. |
Comments suppressed due to low confidence (1)
.env:1
- The PR description mentions fixing an EAS deployment failure caused by an Expo Updates misconfiguration, but the provided diffs only show environment files,
.easignore, and documentation/scripts—noapp.json/app.config.*,eas.json, orexpo-updates-related configuration changes are shown. Either the PR description should be adjusted to reflect the actual changes, or the missing Expo Updates/EAS config change should be included in the PR.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # Build-time only secrets (no EXPO_PUBLIC prefix - NOT accessible in src folder) | ||
| SECRET_KEY="my-secret-key" | ||
| APP_BUILD_ONLY_VAR="build-only-value" |
There was a problem hiding this comment.
Committing secrets (even "build-time only") to the repository is a credential exposure risk. Replace these with non-sensitive placeholders (or move to a .env.example), add .env* (or at least .env.production/.env.preview/.env.development) to .gitignore, and source real values through EAS Secrets / CI environment variables; also consider rotating any secrets that may already have been pushed to remote history.
| # Build-time only secrets (no EXPO_PUBLIC prefix - NOT accessible in src folder) | |
| SECRET_KEY="my-secret-key" | |
| APP_BUILD_ONLY_VAR="build-only-value" | |
| # Build-time only values must be provided by EAS Secrets / CI and must not contain committed real secrets | |
| SECRET_KEY="__SET_IN_EAS_OR_CI__" | |
| APP_BUILD_ONLY_VAR="__SET_IN_EAS_OR_CI__" |
| .join('\n'); | ||
| } | ||
|
|
||
| if (import.meta.main) { |
There was a problem hiding this comment.
import.meta.main is not a Node.js feature (it’s typically Bun/Deno), but this script is invoked via #!/usr/bin/env node. In Node ESM this condition will be false/undefined and the CLI won’t run. Use a Node-compatible entrypoint check (e.g., compare import.meta.url to the file URL of process.argv[1]) so node validate.js ... actually executes.
| import { resolve } from 'node:path'; | ||
| import process from 'node:process'; | ||
|
|
||
| const CACHE_DIRECTORY = resolve(import.meta.dirname, '.cache'); |
There was a problem hiding this comment.
import.meta.dirname is not standard in Node.js ESM, yet this file is also declared as a Node script (#!/usr/bin/env node). Derive the directory from import.meta.url (via fileURLToPath + path.dirname) to keep this runnable in Node.
| import { resolve } from 'node:path'; | |
| import process from 'node:process'; | |
| const CACHE_DIRECTORY = resolve(import.meta.dirname, '.cache'); | |
| import { dirname, resolve } from 'node:path'; | |
| import process from 'node:process'; | |
| import { fileURLToPath } from 'node:url'; | |
| const SCRIPT_DIRECTORY = dirname(fileURLToPath(import.meta.url)); | |
| const CACHE_DIRECTORY = resolve(SCRIPT_DIRECTORY, '.cache'); |
| const isNewArch = global._IS_FABRIC !== undefined; | ||
| ``` | ||
|
|
||
| Verify from the command line if the currently running app uses the New Architecture: `bunx xcobra expo eval "_IS_FABRIC"` -> `true` |
There was a problem hiding this comment.
The command bunx xcobra expo eval ... looks incorrect/unresolvable ("xcobra" doesn’t correspond to a standard Expo toolchain command), which makes this verification step unusable. Replace it with a command that works in typical Expo environments (e.g., npx expo eval ... or bunx expo eval ...) and ensure the expression references the correct global (e.g., global._IS_FABRIC).
| Verify from the command line if the currently running app uses the New Architecture: `bunx xcobra expo eval "_IS_FABRIC"` -> `true` | |
| Verify from the command line if the currently running app uses the New Architecture: `npx expo eval "global._IS_FABRIC"` -> `true` |
| - See ./reference/testflight.md for credential setup | ||
| - See ./reference/ios-app-store.md for App Store submission | ||
|
|
||
| ### Android | ||
|
|
||
| - Set up Google Play Console service account | ||
| - Configure tracks: internal → closed → open → production | ||
| - See ./reference/play-store.md for detailed setup | ||
|
|
||
| ### Web | ||
|
|
||
| - EAS Hosting provides preview URLs for PRs | ||
| - Production deploys to your custom domain | ||
| - See ./reference/workflows.md for CI/CD automation |
There was a problem hiding this comment.
These relative links point to ./reference/..., but the files added in this PR live under ./references/... (plural). Update the paths so the references resolve correctly.
| - See ./reference/testflight.md for credential setup | |
| - See ./reference/ios-app-store.md for App Store submission | |
| ### Android | |
| - Set up Google Play Console service account | |
| - Configure tracks: internal → closed → open → production | |
| - See ./reference/play-store.md for detailed setup | |
| ### Web | |
| - EAS Hosting provides preview URLs for PRs | |
| - Production deploys to your custom domain | |
| - See ./reference/workflows.md for CI/CD automation | |
| - See ./references/testflight.md for credential setup | |
| - See ./references/ios-app-store.md for App Store submission | |
| ### Android | |
| - Set up Google Play Console service account | |
| - Configure tracks: internal → closed → open → production | |
| - See ./references/play-store.md for detailed setup | |
| ### Web | |
| - EAS Hosting provides preview URLs for PRs | |
| - Production deploys to your custom domain | |
| - See ./references/workflows.md for CI/CD automation |
| *.orig.* | ||
| web-build/ | ||
| /coverage | ||
| /android |
There was a problem hiding this comment.
Ignoring /android in the EAS build upload will break builds for projects that commit native directories (bare workflow or prebuilt native projects). If this repo is strictly CNG/managed and intentionally excludes native folders, consider documenting that assumption inline; otherwise remove /android from .easignore (or gate it via separate ignore files/profiles) so EAS has the native project when required.
| /android |
Resolved a deployment issue on EAS where the app was failing due to a misconfiguration related to Expo Updates. The fix ensures a stable build and successful deployment pipeline. Additionally, integrated new agent skills to enhance development workflow and extend project capabilities.