Skip to content

SnapBiodata: in-app update banner (OTA + store) + rebrand + EAS project - #20

Merged
pythonsst merged 7 commits into
pythonsst:mainfrom
shiv-cuepilot:feat/app-update-available
Jul 16, 2026
Merged

SnapBiodata: in-app update banner (OTA + store) + rebrand + EAS project#20
pythonsst merged 7 commits into
pythonsst:mainfrom
shiv-cuepilot:feat/app-update-available

Conversation

@shiv-cuepilot

Copy link
Copy Markdown
Collaborator

Summary

Adds an in-app "App Update Available" banner (OTA + store), rebrands the app to SnapBiodata (com.snapbiodata.app), and links a fresh EAS project.

Update-available feature

  • useAppUpdates hook merges OTA (expo-updates) + store (sp-react-native-in-app-updates: iOS iTunes / Android Play Core).
  • Blinkit-style banner, hidden when up to date; priority store-update > ota-ready > ota-available.
  • OTA channels added per eas.json build profile (modeled on the Agastya app).
  • Hardened: unmount-safe, real background→active detection, guarded reload, auto-download so "Downloading" advances, store-URL fallback, lazy native-module init (OTA-safe).

Rebrand → SnapBiodata

  • Bundle id + package unified to com.snapbiodata.app (iOS + Android incl. namespace/Kotlin package).
  • Fixes a latent Android boot mismatch: RN registration name aligned to SnapBiodata across app.json, iOS moduleName, Android getMainComponentName.
  • Store listing (store.config.json) + privacy policy docs rebranded; privacy URL → snapbiodata.com/privacy.

EAS project

  • New project @shivtiwari/snapbiodata (projectId 46cb38f5-…); OTA URLs repointed in app.config.js, Expo.plist, Info.plist(s), AndroidManifest.

Verification

  • 6/6 Jest tests pass · tsc 0 errors · eslint clean.
  • ⚠️ Native (Gradle/Xcode) build not yet run — first eas build is the final check.

Follow-ups (tracked)

  • Update ascAppId (eas.json ×3) + APP_STORE_ID (appUpdate.ts) once the new App Store Connect app record exists (both currently the old 6761337270).
  • Publish the privacy policy at snapbiodata.com/privacy.
  • Confirm biodata data-flow (on-device vs server) to finalize privacy / data-safety.

🤖 Generated with Claude Code

shiv-cuepilot and others added 7 commits July 16, 2026 17:23
Surfaces expo-updates OTA and store updates (iTunes + Play Core) in a
Blinkit-style banner, hidden when up to date, store-update prioritized.
Wires eas.json OTA channels per profile (modeled on Agastya). Adds
privacy policy + go-live runbook for store review.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Rebrand IgniteKit -> SnapBiodata; unify bundle id + package to
  com.snapbiodata.app on iOS + Android (incl. Android namespace + Kotlin
  package/folder, display names, store listing, privacy docs)
- Align the RN registration name to "SnapBiodata" across app.json,
  iOS moduleName, and Android getMainComponentName (fixes a latent Android
  boot mismatch: JS registered "IgniteKit" vs native "ReactNativeIgniteKit")
- Link new EAS project @shivtiwari/snapbiodata: projectId + OTA URLs in
  app.config.js, Expo.plist, Info.plist(s), AndroidManifest
- Harden useAppUpdates: unmount-safe setState, real background->active
  detection, reload guarded on fetch result, auto-download so the
  "Downloading" state advances instead of spinning
- storeUpdate: fall back to the store listing URL when the in-app flow or
  native module is unavailable (wires the previously-unused STORE_URL)
- Remove unused version util + its tests (store comparison is delegated to
  sp-react-native-in-app-updates)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The canonical privacy policy now lives in the web repo
(snapbiodata/src/app/privacy) and is served at snapbiodata.com/privacy,
used by both web and app. Drop the app-repo copies to avoid drift; the app
already references the URL via store.config.json.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- appId com.educatorslabs.ignitekit -> com.snapbiodata.app (was a wrong/stale
  bundle id; the flow would launch no app)
- assertVisible "Welcome to IgniteKit!" -> "Welcome to SnapBiodata!" to match
  the renamed welcome text in App.tsx (assertion would otherwise fail)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Cosmetic: .env.signing.example referenced ignitekit-release-key.keystore;
update to snapbiodata-release-key.keystore to match the rebrand. Placeholder
example only — no real secrets.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- LaunchScreen.storyboard showed "IgniteKit" on the splash screen every launch
  -> "SnapBiodata"
- App.tsx "Learn More" opened educatorslabs.com -> snapbiodata.com

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The CI + eas-build workflows call `yarn eas:version:get`, but package.json
defined the script as `eas:version` — CI failed with "Couldn't find a script
named eas:version:get". Rename the script to match all callers (3 workflows +
docs + the script's own usage text). Also drop an unnecessary regex escape
(lint warning) so `yarn lint` is clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@pythonsst
pythonsst marked this pull request as ready for review July 16, 2026 14:02
@pythonsst
pythonsst merged commit 3915023 into pythonsst:main Jul 16, 2026
1 check passed
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