Skip to content

Fix EAS deployment issue related to Expo Updates and add agent skills#519

Open
MOHAMED-LAAGUILI wants to merge 1 commit intoobytes:masterfrom
MOHAMED-LAAGUILI:master
Open

Fix EAS deployment issue related to Expo Updates and add agent skills#519
MOHAMED-LAAGUILI wants to merge 1 commit intoobytes:masterfrom
MOHAMED-LAAGUILI:master

Conversation

@MOHAMED-LAAGUILI
Copy link
Copy Markdown

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.

Copilot AI review requested due to automatic review settings April 11, 2026 16:05
@netlify
Copy link
Copy Markdown

netlify bot commented Apr 11, 2026

Deploy Preview for obytes-starter canceled.

Name Link
🔨 Latest commit 978ec0a
🔍 Latest deploy log https://app.netlify.com/projects/obytes-starter/deploys/69da71333e52ec0008fa23d1

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 .easignore to 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—no app.json/app.config.*, eas.json, or expo-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.

Comment on lines +16 to +18
# 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"
Copy link

Copilot AI Apr 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
# 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__"

Copilot uses AI. Check for mistakes.
.join('\n');
}

if (import.meta.main) {
Copy link

Copilot AI Apr 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +5 to +8
import { resolve } from 'node:path';
import process from 'node:process';

const CACHE_DIRECTORY = resolve(import.meta.dirname, '.cache');
Copy link

Copilot AI Apr 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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');

Copilot uses AI. Check for mistakes.
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`
Copy link

Copilot AI Apr 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
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`

Copilot uses AI. Check for mistakes.
Comment on lines +123 to +136
- 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
Copy link

Copilot AI Apr 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
- 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

Copilot uses AI. Check for mistakes.
*.orig.*
web-build/
/coverage
/android
Copy link

Copilot AI Apr 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
/android

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants