Skip to content

Conversation

@weitingsun
Copy link
Contributor

@weitingsun weitingsun commented Jul 21, 2025

Description

This PR implements Over the Air update using EAS updates. In this PR, I've implemented the following:

  • install eas-updates package
  • set up eas updates configs in app.config.js, AndroidManifest.xml, Expo.plist, Info.plist
  • Add eas updates configs in app information as part of the easter egg so we can check channel + runtimeVersion
  • create a build script to set EAS updates channel and runtimeVersion. These values are set in build time:
  1. Only set configs for non production envs such as RC, EXP ...etc so we don't ship it to production by accident
  2. We are setting eas updates to disabled for now until the Rive Animation issue is resolved in the next PR
  3. We set runtimeVersion the same as app version
  4. No real changes in the existing app

For more details on why we do this: https://docs.google.com/document/d/1yFJPGr30HXtc5geDVRX_99vb6_TDtTh1dExeR415ulY/edit?tab=t.0#heading=h.n03xwvqkz3ix

See build 2942
In these builds, you can't really see much since the EAS updates is disabled. As long as the app functioning normally we are good. In my next PR where I will enable EAS updates, you can test updates if needed.

Changelog

CHANGELOG entry: Added EAS updates base

Related issues

Fixes: #21214

Manual testing steps

To confirm channel and runtimeVersion:

  1. Go to app information screen
  2. Press down Fox image for 10 seconds
  3. Should see OTA Update enabled is set to false

Screenshots/Recordings

Before

After

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Introduces EAS OTA updates with runtime/channel config at build time, adds required Expo/iOS deps, and surfaces OTA info in App Information.

  • OTA/EAS Updates:
    • Add expo-updates and expo-asset deps; install iOS pods (EXUpdates, EASClient, etc.) and add ios/Expo.plist to Xcode project.
    • Configure Expo in app.config.js with runtimeVersion, updates url, and Hermes JS engine for iOS.
    • New ota.config.js (single source of truth) and app/constants/ota.ts to append OTA version; import expo-asset in index.js for asset resolution.
    • New scripts/update-expo-channel.js and hook in scripts/build.sh to set channel/runtime and toggle updates (non-production) at build time; CODEOWNERS updated for the script.
    • Settings > App Information: show OTA status, channel, runtime version, and full version string; add Jest mock for expo-updates.
  • iOS/Tooling:
    • Enable Hermes in Podfile and iOS config; update Podfile.lock and Podfile.properties.json.
    • Jest config maps expo-updates to new mock.
    • .js.env.example: add EXPO_PROJECT_ID.

Written by Cursor Bugbot for commit a5b4e41. This will update automatically on new commits. Configure here.

@github-actions
Copy link
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@socket-security
Copy link

socket-security bot commented Jul 21, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​expo-updates@​0.27.49910081100100

View full report

@weitingsun weitingsun marked this pull request as ready for review July 22, 2025 15:43
@weitingsun weitingsun requested a review from a team July 22, 2025 15:43
@weitingsun weitingsun marked this pull request as draft July 22, 2025 15:43
cursor[bot]

This comment was marked as outdated.

@weitingsun weitingsun force-pushed the wsun/eas-updates branch 10 times, most recently from e56f049 to e29afc1 Compare July 24, 2025 23:08
cursor[bot]

This comment was marked as outdated.

@github-actions github-actions bot added size-L and removed size-M labels Nov 4, 2025
cursor[bot]

This comment was marked as outdated.

@weitingsun weitingsun requested a review from sethkfman November 4, 2025 20:08
@github-actions github-actions bot added size-M and removed size-L labels Nov 4, 2025
Copy link
Contributor

@Cal-L Cal-L left a comment

Choose a reason for hiding this comment

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

left a comment

Copy link
Contributor

@Cal-L Cal-L left a comment

Choose a reason for hiding this comment

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

LGTM. Let's make sure to update Bitrise with any env vars that we need

@sonarqubecloud
Copy link

sonarqubecloud bot commented Nov 5, 2025

@github-project-automation github-project-automation bot moved this from Needs dev review to Review finalised - Ready to be merged in PR review queue Nov 6, 2025
@weitingsun weitingsun added this pull request to the merge queue Nov 6, 2025
Merged via the queue into main with commit 3736c2b Nov 6, 2025
85 checks passed
@weitingsun weitingsun deleted the wsun/eas-updates branch November 6, 2025 18:19
@github-actions github-actions bot locked and limited conversation to collaborators Nov 6, 2025
@metamaskbot metamaskbot added the release-7.60.0 Issue or pull request that will be included in release 7.60.0 label Nov 6, 2025
@weitingsun weitingsun restored the wsun/eas-updates branch November 11, 2025 03:11
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-7.60.0 Issue or pull request that will be included in release 7.60.0 size-M team-mobile-platform Mobile Platform team

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

EAS Updates Planning

6 participants