Skip to content

Commit 24f1680

Browse files
jaymaycryclaude
andcommitted
docs: add upgrading guide pointing at MotionTag, Expo, and tooling changelogs
Documents the four independent upgrade axes (iOS SDK, Android SDK, example Expo SDK, library tooling) and links the authoritative changelog endpoints so contributors don't have to hunt for them. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 7015170 commit 24f1680

1 file changed

Lines changed: 85 additions & 0 deletions

File tree

README.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ SDK v7.2.x — the platform asymmetry is hidden behind a shared TS contract.
1818
- [Running the example app](#running-the-example-app)
1919
- [Repo layout](#repo-layout)
2020
- [Developing the package](#developing-the-package)
21+
- [Upgrading](#upgrading)
2122
- [Releasing](#releasing)
2223

2324
## Install in your app
@@ -268,6 +269,90 @@ re-install.
268269
re-running `npx expo prebuild --clean` in `example/`. The injected blocks
269270
are wrapped in `@generated` markers and de-duplicated on re-run.
270271

272+
## Upgrading
273+
274+
The repo has four independent upgrade axes — keep them as separate PRs / commits
275+
so [release-please](#releasing) classifies each one correctly. The iOS and
276+
Android SDK versions drift on purpose (see [AGENTS.md](AGENTS.md)) — don't align
277+
them just because they're both bumpable.
278+
279+
### Where to check for new versions
280+
281+
| What | Source |
282+
| --- | --- |
283+
| MotionTag iOS SDK changelog | [api.motion-tag.de/developer/ios?locale=en&os_aspect=changelog](https://api.motion-tag.de/developer/ios?locale=en&os_aspect=changelog) |
284+
| MotionTag iOS integration guide | [api.motion-tag.de/developer/ios?locale=en&os_aspect=sdk](https://api.motion-tag.de/developer/ios?locale=en&os_aspect=sdk) |
285+
| MotionTag Android SDK changelog | [api.motion-tag.de/developer/android?locale=en&os_aspect=changelog](https://api.motion-tag.de/developer/android?locale=en&os_aspect=changelog) |
286+
| MotionTag Android integration guide | [api.motion-tag.de/developer/android?locale=en&os_aspect=sdk](https://api.motion-tag.de/developer/android?locale=en&os_aspect=sdk) |
287+
| Expo SDK upgrade walkthrough | [docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough](https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/) |
288+
| Expo config-plugins changelog | [github.com/expo/expo/.../config-plugins/CHANGELOG.md](https://github.com/expo/expo/blob/main/packages/%40expo/config-plugins/CHANGELOG.md) |
289+
| react-native-builder-bob releases | [github.com/callstack/react-native-builder-bob/releases](https://github.com/callstack/react-native-builder-bob/releases) |
290+
| React Native upgrade helper (rarely needed here) | [react-native-community.github.io/upgrade-helper](https://react-native-community.github.io/upgrade-helper/) |
291+
292+
The two MotionTag changelog endpoints are the authoritative source — the vendor
293+
doesn't publish a GitHub release feed. Both `locale=en` and `locale=de` work.
294+
295+
### Pinned versions to compare against
296+
297+
| Axis | Pinned in | Currently |
298+
| --- | --- | --- |
299+
| iOS SDK | [`react-native-motiontag.podspec`](react-native-motiontag.podspec) | `MotionTagSDK ~> 6.5.0` |
300+
| Android SDK | [`android/build.gradle`](android/build.gradle) | `de.motiontag:tracker:7.2.5` |
301+
| Example Expo SDK | [`example/package.json`](example/package.json) | `expo ~55` |
302+
| Library build tooling | [`package.json`](package.json) | `react-native-builder-bob`, `@expo/config-plugins`, `typescript` |
303+
304+
### When the changelog mentions integration changes
305+
306+
A version bump is **not** "just" a version bump when the changelog touches:
307+
308+
- iOS `Info.plist` keys (especially `BGTaskSchedulerPermittedIdentifiers` and
309+
`UIBackgroundModes`) → update both the [bare-RN snippet above](#ios--appdelegateswift)
310+
and the Expo plugin's Info.plist injection in `plugin/`.
311+
- iOS bootstrap signature (`MotionTagBootstrap.bootstrap`,
312+
`processBackgroundSessionEvents`) → update `ios/MotionTagBootstrap.swift`, the
313+
README snippet, and the plugin's AppDelegate injection.
314+
- Android manifest permissions or foreground-service contract → update
315+
`android/src/main/AndroidManifest.xml`, the plugin's manifest edits, and the
316+
Android section above.
317+
- Android bootstrap signature (`MotionTagBootstrap.init`) → update the Kotlin
318+
source, the README snippet, and the plugin's MainApplication injection.
319+
320+
Treat these as `feat:` (or `feat!:` if hosts must change code) rather than
321+
`fix:` so release-please bumps the minor/major correctly.
322+
323+
### Bumping the example app's Expo SDK
324+
325+
The library itself is SDK-agnostic — only `example/` pins an Expo version:
326+
327+
```sh
328+
cd example
329+
npx expo install expo@<target>
330+
npx expo install --fix # realigns react, react-native, expo-*
331+
npx expo prebuild --clean # mandatory across SDK majors
332+
npx expo run:ios && npx expo run:android
333+
```
334+
335+
If the new Expo SDK pulls in an RN version above this package's peer range
336+
(`react-native >=0.79.0`), widen the peer range in the root `package.json` in
337+
the same PR. Don't tighten the lower bound.
338+
339+
### Verifying before opening the PR
340+
341+
After any axis bump:
342+
343+
```sh
344+
yarn install && yarn prepare # at the root
345+
npx tsc -p tsconfig.build.json --noEmit # typecheck
346+
cd example && yarn install
347+
npx expo prebuild --clean
348+
npx expo run:ios # ideally on a device
349+
npx expo run:android # ideally on a device
350+
```
351+
352+
Walk the golden path in the example: paste JWT → start → events stream → stop.
353+
Simulators can't generate motion-sensor data, so a physical device is the only
354+
way to fully validate a MotionTag SDK bump.
355+
271356
## Releasing
272357

273358
Releases are fully automated via [release-please](https://github.com/googleapis/release-please)

0 commit comments

Comments
 (0)