Skip to content
Open
40 changes: 40 additions & 0 deletions .ai/context/current-state.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Upgrade State

sdk: 54
target_sdk: 55
target_expo: 55.0.14
target_react: 19.2.0
target_rn: 0.83.4
phase: step6_cli_updated

## Completed

- Step 0: Target version resolved (SDK 55 / 55.0.14)
- Step 1: Changelogs read (Expo SDK 55 + RN 0.83)
- Step 2: Template project package.json updated (all expo-* to 55.x.x exact versions)
- Step 2b: app.json updated (removed newArchEnabled)
- Step 3: Codegen root — no changes needed
- Step 4: Runtime package.json updated, builds pass (snapshot tests deferred)
- Step 4b: Codegen build passes
- Step 5: Template verification — deferred to user
- Step 6: CLI updated (expo-launcher.js, requirements.js, packageLock.json)

## Key Changes

- All expo-* packages now use major version 55 (new versioning scheme)
- expo-av removed (no expo-av@^55 exists, replaced by expo-video + expo-audio)
- Legacy Architecture dropped (newArchEnabled removed from app.json)
- RN 0.83 has zero breaking changes
- Node.js minimum bumped to 20.19.4
- CLI version checks now use semver.gte for forward compatibility

## Next

- Step 7: Breaking changes review
- Step 8: Final cross-repo validation

## Blocking Issues

- expo-av removal needs runtime source code review
- expo-navigation-bar deprecations need runtime review
- 157 snapshot test failures (expected, can update with npm test -- -u)
11 changes: 11 additions & 0 deletions .cursorignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
node_modules/
android/build/
ios/build/
.expo/
dist/
coverage/
*.log
*.apk
*.ipa
*.tgz
wm-projects/
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
engine-strict=true
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
22.13.0
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export WM_REACTNATIVE_CLI="$HOME/cli/"
### Requirements

- Linux or MAC or Windows
- Node 22.11.0 ([https://nodejs.org/en/blog/release/v14.15.1/](https://nodejs.org/en/download/))
- Node 22.18.0 ([https://nodejs.org/en/blog/release/v14.15.1/](https://nodejs.org/en/download/))
- GIT ([https://git-scm.com/download](https://git-scm.com/download))
- Java 17 ([https://openjdk.org/install/](https://openjdk.org/install/))
- Yarn (npm install -g yarn)
Expand Down Expand Up @@ -107,7 +107,7 @@ wm-reactnative build android "/path/to/src" \
- MAC machine
- Latest XCODE
- CocoaPods ([https://guides.cocoapods.org/using/getting-started.html#toc_3](https://guides.cocoapods.org/using/getting-started.html#toc_3))
- Node 22.11.0 ([https://nodejs.org/en/blog/release/v12.22.0/](https://nodejs.org/en/download/))
- Node 22.18.0 ([https://nodejs.org/en/blog/release/v12.22.0/](https://nodejs.org/en/download/))
- GIT ([https://git-scm.com/download/mac](https://git-scm.com/download/mac))
- Yarn (npm install -g yarn)
- Apple developer or distribution P12 certificates
Expand Down Expand Up @@ -150,7 +150,7 @@ wm-reactnative build ios "/path/to/src" \
## Run web-preview

### Requirements
- Node 22.11.0
- Node 22.18.0
- GIT ([https://git-scm.com/download](https://git-scm.com/download))
- npm 10.9.x
- Yarn (npm install -g yarn)
Expand All @@ -170,7 +170,7 @@ wm-reactnative run web-preview <preview_url> [additional_arguments]
## Sync

### Requirements
- Node 22.11.0
- Node 22.18.0
- GIT ([https://git-scm.com/download](https://git-scm.com/download))
- npm 10.9.x
- Yarn (npm install -g yarn)
Expand Down
5 changes: 4 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ const {
runExpo, runAndroid, runIos, sync, runESBuildWebPreview
} = require('./src/expo-launcher');
const { runWeb } = require('./src/web-preview-launcher');
const updateNotifier = require('update-notifier');
const updateNotifierModule = require('update-notifier');
const updateNotifier = updateNotifierModule.default || updateNotifierModule;
const pkg = require('./package.json');
const { canDoAndroidBuild, canDoIosBuild, showConfirmation } = require('./src/requirements');
updateNotifier({
Expand All @@ -28,6 +29,8 @@ global.rootDir = process.env.WM_REACTNATIVE_CLI || `${os.homedir()}/.wm-reactnat
global.localStorage = new LocalStorage(`${global.rootDir}/.store`);
// src is the web react native project zip

console.log('=== local cli running ===')

async function handleDeprecatedCommands(args) {
const syncCommand = `wm-reactnative sync ${args.previewUrl} ${args.clean ? '--clean' : ''} ${args.useProxy ? '--useProxy' : ''}`;
const response = await showConfirmation(
Expand Down
Loading