Skip to content

feat(updates): wire EAS Update for OTA content drops - #27

Merged
haritabh17 merged 2 commits into
badmlabs:mainfrom
haritabh17:feat/eas-updates
Jul 5, 2026
Merged

haritabh17 merged 2 commits into
badmlabs:mainfrom
haritabh17:feat/eas-updates

Conversation

@haritabh17

Copy link
Copy Markdown
Collaborator

Adds over-the-air JS updates so monthly content drops (drills, mascots, court themes — all JS) ship without a Play release.

What's wired

  • expo-updates@0.28.18 (SDK 53 line); lockfile diff reviewed — no react drift, no expo packages nested off the root
  • EAS project @haritabh1992/badminton-court-simulator with updates.url + project ID in app.json; channel production → branch production created on EAS
  • Channel baked into builds via updates.requestHeaders (required for gradle-built binaries)
  • AndroidManifest/strings.xml synced via prebuild: updates enabled, check on launch, apply on next launch
  • AGENTS.md → Releases documents the publish workflow

Runtime version discipline

expo.runtimeVersion is a manually pinned string ("1.0.0") — eas update rejects version policies with a checked-in android/ dir. Bump it in any release that changes native code; leave it for JS-only releases so one publish reaches every compatible store build.

Activation

No live build can receive updates yet (2.8.0/vc18 shipped with updates disabled). The next tag release (2.8.1/vc19, already bumped on main) ships the update client. After that, a content drop is just:

npx eas-cli update --branch production --message "July drills"

Publish pipeline already verified end to end against a throwaway EAS branch (accepted for runtime 1.0.0, branch deleted after).

Adds expo-updates (SDK 53 line) with a pinned runtime version and a
production channel baked into builds, so monthly drill/mascot/theme
drops publish over the air without a Play release. Native config is
synced via prebuild; CI regenerates it from app.json as before.
The versionless kotlin-gradle-plugin on the classpath resolves to 2.0.21
via RN 0.79's gradle plugin, but the stale 1.9.25 ext made expo-updates
select KSP 1.9.25-1.0.20, which crashes against KGP 2.0.x internals
(NoSuchMethodError: KspTaskJvm.getChangedFiles). 2.0.21 matches the
SDK 53 template and selects KSP 2.0.21-1.0.28.
@haritabh17
haritabh17 merged commit 63512db into badmlabs:main Jul 5, 2026
2 checks passed
@haritabh17
haritabh17 deleted the feat/eas-updates branch July 5, 2026 19:32
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.

1 participant