Skip to content

Commit 80d320e

Browse files
author
Lalit Sharma
committed
feat: update version codes to 3, enhance documentation for release process, and add Google Play release payload details
1 parent 4112ba7 commit 80d320e

6 files changed

Lines changed: 178 additions & 3 deletions

File tree

apps/mobile/android/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ android {
119119
applicationId 'com.lallimaven.eclipsetimer'
120120
minSdkVersion rootProject.ext.minSdkVersion
121121
targetSdkVersion rootProject.ext.targetSdkVersion
122-
versionCode 2
122+
versionCode 3
123123
versionName "1.0.0"
124124

125125
buildConfigField "String", "REACT_NATIVE_RELEASE_LEVEL", "\"${findProperty('reactNativeReleaseLevel') ?: 'stable'}\""

apps/mobile/android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@
3434
</activity>
3535
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
3636
</application>
37-
</manifest>
37+
</manifest>

apps/mobile/app.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
"android.permission.ACCESS_FINE_LOCATION"
7777
],
7878
"package": "com.lallimaven.eclipsetimer",
79-
"versionCode": 2
79+
"versionCode": 3
8080
},
8181
"web": {
8282
"favicon": "./assets/favicon.png"

documents/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ This folder contains the project documentation for the `eclipse-timer` monorepo.
66

77
### Planning
88
- `documents/01-documentation-plan.md`
9+
- `documents/release-plan-eas.md`
910

1011
### High-Level
1112
- `documents/high-level/system-overview.md`

documents/release-plan-eas.md

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
# Eclipse Timer — Release Plan (Post v1.0.0)
2+
3+
> Scope: all releases after the first manual Android launch.
4+
> Goal: use EAS for build, submit, and OTA updates with a repeatable checklist.
5+
6+
---
7+
8+
## Current Baseline
9+
10+
- First public Android release is manual.
11+
- App version: `1.0.0`.
12+
- EAS project ID: `a29a7662-96be-4509-a79e-fbe4b5dac1ff`.
13+
- Build profile for stores: `production` in `apps/mobile/eas.json` (`autoIncrement: true`).
14+
- Runtime policy: `runtimeVersion` is tied to app version in `apps/mobile/app.json`.
15+
16+
---
17+
18+
## Release Types
19+
20+
1. **Store binary release** (`eas build` + `eas submit`): use when native code/config changes, SDK upgrades, permission changes, or store-required updates are included.
21+
2. **OTA JavaScript/content release** (`eas update`): use when only JS/TS/assets change and no native/runtime-version change is required.
22+
23+
---
24+
25+
## Prerequisites (One-Time)
26+
27+
- `EXPO_TOKEN` is available for CI and local CLI login is valid (`eas whoami`).
28+
- Google Play service account is configured for submit in `apps/mobile/eas.json` (or provided via EAS credentials).
29+
- Store listing metadata is kept current in:
30+
- `documents/store-metadata.md`
31+
- `documents/store-privacy-declarations.md`
32+
- Required checks pass locally: `pnpm typecheck`, `pnpm lint`, `pnpm test`.
33+
34+
---
35+
36+
## Standard Store Release Flow
37+
38+
### 1) Prepare release content
39+
40+
- Update `CHANGELOG.md` with the new version section.
41+
- Draft release notes from changelog (same structure as `What's New`).
42+
- Confirm screenshots/feature graphic only if UI changed materially.
43+
44+
### 2) Versioning
45+
46+
- Bump app version in `apps/mobile/app.json` and `apps/mobile/package.json` (for example: `1.0.1`).
47+
- Keep `android.versionCode` and `ios.buildNumber` managed by EAS `production.autoIncrement` unless a manual override is needed.
48+
49+
### 3) Run quality gates
50+
51+
```bash
52+
pnpm typecheck
53+
pnpm lint
54+
pnpm test
55+
```
56+
57+
### 4) Build production binaries with EAS
58+
59+
From repo root:
60+
61+
```bash
62+
pnpm -C apps/mobile exec eas build --profile production --platform all
63+
```
64+
65+
Android-only:
66+
67+
```bash
68+
pnpm -C apps/mobile exec eas build --profile production --platform android
69+
```
70+
71+
### 5) Submit via EAS
72+
73+
Submit latest successful builds:
74+
75+
```bash
76+
pnpm -C apps/mobile exec eas submit --platform all --latest
77+
```
78+
79+
Android-only:
80+
81+
```bash
82+
pnpm -C apps/mobile exec eas submit --platform android --latest
83+
```
84+
85+
### 6) Play Console/App Store rollout
86+
87+
- Set release notes from changelog-derived text.
88+
- For Android production, use staged rollout first when risk is medium/high.
89+
- Monitor crash-free users, ANR, and fatal issues before full rollout.
90+
91+
### 7) Preferred automation path (GitHub Actions)
92+
93+
- Use `.github/workflows/eas-build.yml` for repeatable release execution.
94+
- Trigger `workflow_dispatch` with:
95+
- `platform: android` or `all`
96+
- `submit: true` when ready to upload automatically after build
97+
- Keep `EXPO_TOKEN` and store credentials configured before using non-interactive submit.
98+
99+
---
100+
101+
## OTA Release Flow (No Native Changes)
102+
103+
Use only when native modules/config do not change and runtime remains compatible.
104+
105+
```bash
106+
pnpm -C apps/mobile exec eas update --branch production --message "vX.Y.Z: short summary"
107+
```
108+
109+
Rules:
110+
- Do not use OTA for permission changes, Expo SDK upgrades, new native libs, or config requiring a rebuild.
111+
- If `runtimeVersion` must change, perform a full store binary release.
112+
113+
---
114+
115+
## Suggested Cadence
116+
117+
1. **Patch releases (`x.y.Z`)**: OTA first when safe; binary only if native fix is required.
118+
2. **Minor releases (`x.Y.0`)**: prefer full binary release for predictable rollout.
119+
3. **Major releases (`X.0.0`)**: full binary release with staged rollout and explicit release checklist signoff.
120+
121+
---
122+
123+
## Rollback / Hotfix
124+
125+
1. If OTA issue: publish a corrective OTA update immediately to `production`.
126+
2. If binary issue in staged rollout: halt rollout in Play Console/App Store Connect.
127+
3. If binary issue after full rollout: prepare hotfix version bump and run standard store release flow.
128+
4. Document incident in `CHANGELOG.md` and internal notes.
129+
130+
---
131+
132+
## Quick Checklist (Per Release)
133+
134+
- [ ] Changelog updated
135+
- [ ] Version updated (`app.json`, `package.json`)
136+
- [ ] Typecheck/lint/test passed
137+
- [ ] EAS build completed
138+
- [ ] EAS submit completed
139+
- [ ] Release notes entered in store consoles
140+
- [ ] Rollout started and monitored
141+
- [ ] Post-release verification done on physical Android + iOS devices

documents/store-metadata.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,39 @@ Initial release of Eclipse Timer.
9090

9191
---
9292

93+
## Google Play — First Android Release Payload (Manual)
94+
95+
Use these values in Google Play Console when creating the first production release.
96+
97+
- **Track:** Production
98+
- **Artifact:** Upload the `.aab` generated by `eas build --profile production --platform android`
99+
- **Release name:** `Initial release of Eclipse Timer`
100+
- **Release notes language:** `en-US` (add localized notes later if needed)
101+
- **Release notes source:** Copy from `What's New — v1.0.0` in this document
102+
- **Version shown to users:** `1.0.0`
103+
- **Version code:** Use the value on the uploaded AAB (build profile `production` has `autoIncrement: true`)
104+
105+
Release notes to paste:
106+
107+
```
108+
Initial release of Eclipse Timer.
109+
110+
• Browse 200+ solar eclipses from 1900 to 2100
111+
• Compute precise contact times (C1/C2/Max/C3/C4) for any location
112+
• Live countdown timer to next eclipse event
113+
• Notification reminders with sound, vibration, or voice alerts
114+
• Interactive map with eclipse path overlays
115+
• NASA preview animations
116+
• Favorite locations
117+
• Dark theme UI
118+
```
119+
120+
Recommended rollout for this first release:
121+
- Start with a staged rollout (for example, 20%) to watch crash and ANR dashboards.
122+
- Increase to 100% after stability checks pass.
123+
124+
---
125+
93126
## Category
94127

95128
- **Primary:** Weather (iOS) / Weather (Android)

0 commit comments

Comments
 (0)