Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Jan 19, 2026

Description

Upgrades React Native from 0.79 to 0.81, along with associated dependencies.

Core packages:

  • React: 19.0.0 → 19.1.0 (locked to 19.1.0 as required by React Native 0.81)
  • React Native: 0.79 → 0.81
  • Platform packages (macos, windows): 0.79 → 0.81
  • @types/react: ~19.0.0 → ~19.1.0

CLI packages (18.x → 20.x):

  • @react-native-community/cli and platform-specific variants
  • @react-native/community-cli-plugin subpackages

Tooling packages:

  • @react-native-community/template: 0.79 → 0.81
  • @react-native/babel-preset: 0.79 → 0.81
  • @react-native/metro-config: 0.79 → 0.81
  • All @react-native/* scoped packages: 0.79 → 0.81

Metro packages:

  • Added resolution for react-native-windows/metro-source-map to force ^0.83.1
  • Eliminates Metro 0.82 packages that were being pulled in by react-native-windows@0.81.2

visionOS changes:

  • Library (packages/app): Continues to support visionOS via optional peerDependency (@callstack/react-native-visionos: "0.76 - 0.79")
  • Example app: Removed @callstack/react-native-visionos dependency (example no longer demonstrates visionOS)
  • CI: Disabled visionOS build jobs in .github/workflows/build.yml (CI testing temporarily disabled)
  • Removed visionOS package extension from .yarnrc.yml

Other changes:

  • Updated Podfile.lock files for iOS and macOS platforms
  • Deduplicated yarn.lock using yarn dedupe (fixed 3 duplicate packages)
  • Removed explicit react resolution from package.json (not needed)

Platforms affected

  • Android
  • iOS
  • macOS
  • visionOS (library support maintained, example app and CI testing disabled)
  • Windows

Test plan

  1. Verify yarn install completes without peer dependency errors
  2. Build and run example app on each supported platform (Android, iOS, macOS, Windows)
  3. Run existing test suites to verify no regressions
  4. Verify visionOS CI jobs are disabled and do not run
  5. Confirm library still includes visionOS in peerDependencies but example app does not use it
  6. Verify no Metro 0.82 packages remain in yarn.lock
  7. Verify Podfile.lock files are updated for iOS and macOS
Original prompt

Objective

Upgrade React Native from 0.79 to 0.81, along with all associated packages including React, @react-native-community/cli, and platform-specific packages (react-native-macos, react-native-windows, react-native-visionos).

Required Changes

1. Update packages/app/package.json

Update the following in peerDependencies:

"@callstack/react-native-visionos": "0.76 - 0.81"

Update the following in devDependencies:

"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-types": "^20.0.0",
"@react-native-community/template": "^0.81.0",
"react": "19.1.0",
"react-native": "^0.81.0",
"react-native-macos": "^0.81.0",
"react-native-windows": "^0.81.0"

2. Update packages/app/example/package.json

Update the following in dependencies:

"@callstack/react-native-visionos": "^0.81.0",
"react": "19.1.0",
"react-native": "^0.81.0",
"react-native-macos": "^0.81.0",
"react-native-windows": "^0.81.0"

Update the following in devDependencies:

"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
"@react-native-community/cli-platform-ios": "^20.0.0",
"@react-native/babel-preset": "^0.81.0",
"@react-native/metro-config": "^0.81.0"

3. Update root package.json resolutions

Update the following in the resolutions section:

"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
"@react-native-community/cli-platform-apple": "^20.0.0",
"@react-native-community/cli-platform-ios": "^20.0.0",
"@react-native/community-cli-plugin/@react-native-community/cli-server-api": "^20.0.0",
"@react-native/community-cli-plugin/@react-native-community/cli-tools": "^20.0.0",
"@react-native-mac/virtualized-lists": "^0.81.0",
"@react-native/assets-registry": "^0.81.0",
"@react-native/codegen": "^0.81.0",
"@react-native/community-cli-plugin": "^0.81.0",
"@react-native/gradle-plugin": "^0.81.0",
"@react-native/js-polyfills": "^0.81.0",
"@react-native/normalize-colors": "^0.81.0",
"@react-native/virtualized-lists": "^0.81.0"

4. Update .github/renovate.json

Update the packageRules:

Change the @react-native-community/cli rule:

{
  "groupName": "@react-native-community/cli",
  "allowedVersions": "^20.0.0",
  "matchPackageNames": ["@react-native-community/cli**"]
}

Change the react rule:

{
  "groupName": "react",
  "matchPackageNames": ["@types/react", "react"],
  "allowedVersions": "~19.1.0"
}

Change the react-native rule:

{
  "groupName": "react-native",
  "matchPackageNames": [
    "@callstack/react-native-visionos",
    "@react-native-community/template",
    "@react-native-mac/**",
    "@react-native-macos/**",
    "@react-native/**",
    "react-native",
    "react-native-macos",
    "react-native-windows"
  ],
  "allowedVersions": "^0.81.0"
}

5. Update Podfile.lock files

After the package.json changes are made and dependencies are installed, update the CocoaPods lockfiles by running pod install in the following directories:

  • packages/app/example/ios/
  • packages/app/example/macos/
  • packages/app/example/visionos/

This will update the Podfile.lock files to reflect the new React Native 0.81 pods.

Summary of Version Changes

Core Packages

  • React: 19.0.019.1.0
  • React Native: ^0.79.0^0.81.0
  • React Native macOS: ^0.79.0^0.81.0
  • React Native Windows: ^0.79.0^0.81.0
  • React Native visionOS: ^0.79.0^0.81.0

CLI Packages

  • @react-native-community/cli: ^18.0.0^20.0.0
  • @react-native-community/cli-types: ^18.0.0^20.0.0
  • @react-native-community/cli-platform-android: ^18.0.0^20.0.0
  • @react-native-community/cli-platform-ios: ^18.0.0^20.0.0
  • @react-native-community/cli-platform-apple: ^18.0.0^20.0.0

Templates and Tooling

  • @react-native-community/template: ^0.79.0^0.81.0
  • @react-native/babel-preset: ^0.79.0^0.81.0
  • @react-native/metro-config: ^0.79.0^0.81.0

All @react-native/* scoped packages

All packages under the @react-native/ scope should be updated from ^0.79.0 to ^0.81.0.

Testing Requirements

After making these changes:

  1. Verify yarn install completes successfully
  2. Verify pod install completes successfully on all platforms
  3. Test builds on all platforms (Android, iOS, macOS, visionOS, Windows)
  4. Run the test suites to ensure no regressions

References

  • React Native 0.81 requires React 19.1.0+ per the official changelog
  • @react-native-community/cli v20.x.x adds support for React Native 0.81
  • All changes maintain backward compatibility with the existing peer dependency ranges where applicable

This pull request was created from Copilot chat.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 2 commits January 19, 2026 13:46
Co-authored-by: tido64 <4123478+tido64@users.noreply.github.com>
Co-authored-by: tido64 <4123478+tido64@users.noreply.github.com>
Copilot AI changed the title [WIP] Upgrade React Native to version 0.81 and related packages Upgrade React Native from 0.79 to 0.81 Jan 19, 2026
Copilot AI requested a review from tido64 January 19, 2026 13:58
Copy link
Member

@tido64 tido64 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please make the requested changes. Also update podfile.lock of all apps.

"react": "19.0.0",
"react-native": "^0.79.0",
"react-native-macos": "^0.79.0",
"react": "19.1.4",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React Native 0.81 is locked to 19.1.0

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 4e14e7b. React version is now 19.1.0 as required by React Native 0.81.

},
"peerDependencies": {
"@callstack/react-native-visionos": "0.76 - 0.79",
"@callstack/react-native-visionos": "0.76 - 0.81",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@callstack/react-native-visionos has yet to release 0.80+

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 396028a. Reverted peerDependencies range back to 0.76 - 0.79 since @callstack/react-native-visionos 0.80+ has not been released yet.

Copilot AI and others added 2 commits January 19, 2026 14:09
Co-authored-by: tido64 <4123478+tido64@users.noreply.github.com>
Co-authored-by: tido64 <4123478+tido64@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Jan 19, 2026

@copilot Please make the requested changes. Also update podfile.lock of all apps.

Changes completed in commits 396028a and 4e14e7b. The Podfile.lock updates require running pod install on macOS in the ios/, macos/, and visionos/ directories. Since I'm running on Linux, I cannot perform the pod install steps. Would you like me to document the required pod install commands, or will you handle the Podfile.lock updates separately?

Copilot AI requested a review from tido64 January 19, 2026 14:13
@tido64
Copy link
Member

tido64 commented Jan 19, 2026

@copilot Remove @callstack/react-native-visionos and disable the CI job that builds visionOS. Deduplicate yarn.lock.

Co-authored-by: tido64 <4123478+tido64@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Jan 19, 2026

@copilot Remove @callstack/react-native-visionos and disable the CI job that builds visionOS. Deduplicate yarn.lock.

Completed in commit 81861e4:

  • Removed @callstack/react-native-visionos from all package.json files
  • Disabled visionOS CI jobs (visionos and visionos-template) in .github/workflows/build.yml
  • Removed visionOS package extension from .yarnrc.yml
  • Deduplicated yarn.lock using yarn dedupe (fixed 3 duplicate packages)

Copilot AI changed the title Upgrade React Native from 0.79 to 0.81 Upgrade React Native from 0.79 to 0.81 and remove visionOS support Jan 19, 2026
@tido64
Copy link
Member

tido64 commented Jan 19, 2026

@copilot Don't remove support for visionOS entirely. Just from the example app and CI.

Co-authored-by: tido64 <4123478+tido64@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Jan 19, 2026

@copilot Don't remove support for visionOS entirely. Just from the example app and CI.

Fixed in commit d8f7c37. Restored @callstack/react-native-visionos in library peerDependencies (packages/app/package.json) so the library still supports visionOS. Only the example app and CI no longer use visionOS.

Copilot AI changed the title Upgrade React Native from 0.79 to 0.81 and remove visionOS support Upgrade React Native from 0.79 to 0.81 Jan 19, 2026
Copy link
Member

@tido64 tido64 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Make the suggested changes. And also figure out why we still have Metro 0.82 packages. Can we clean them up?

package.json Outdated
"@react-native/js-polyfills": "^0.81.0",
"@react-native/normalize-colors": "^0.81.0",
"@react-native/virtualized-lists": "^0.81.0",
"react": "19.1.0",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this line.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed in commit 7ff5ba0. The explicit react resolution has been removed from package.json.

permissions: {}
runs-on: macos-15
if: ${{ github.event_name != 'schedule' }}
if: false # Disabled - visionOS support removed
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rephrase this comment and the other one in this file. We haven't removed support. Just disabling the CI jobs.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in commit 7ff5ba0. Changed comments from "visionOS support removed" to "CI testing for visionOS temporarily disabled" to clarify that the library still supports visionOS.

Co-authored-by: tido64 <4123478+tido64@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Jan 19, 2026

@copilot Make the suggested changes. And also figure out why we still have Metro 0.82 packages. Can we clean them up?

Completed in commit 7ff5ba0:

  • Removed explicit react resolution from package.json
  • Updated visionOS CI job comments to clarify support is maintained
  • Cleaned up Metro 0.82 packages by adding resolutions for metro-source-map and metro-symbolicate to force ^0.83.0. This eliminated the Metro 0.82 packages (metro-source-map@0.82.5, metro-symbolicate@0.82.5, ob1@0.82.5) that were being pulled in by react-native-windows@0.81.2. All Metro packages now use 0.83.x.

Copilot AI requested a review from tido64 January 19, 2026 16:00
@github-actions github-actions bot added platform: Android This affects Android platform: iOS This affects iOS platform: macOS This affects macOS platform: Windows This affects Windows platform: visionOS labels Jan 20, 2026
@tido64
Copy link
Member

tido64 commented Jan 21, 2026

@copilot Windows builds are failing. Find the root cause and suggest solutions but don't make any changes until I tell you to.

Copy link
Contributor Author

Copilot AI commented Jan 21, 2026

@copilot Windows builds are failing. Find the root cause and suggest solutions but don't make any changes until I tell you to.

Root Cause

Windows builds are failing with error MSB8036: The Windows SDK version 10.0.22621.0 was not found.

The issue occurs when building:

  • template-example\node_modules\.generated\windows\Win32\ReactApp.vcxproj
  • packages\app\example\node_modules\@react-native-webapis\web-storage\windows\ReactNativeWebStorage.vcxproj

Why it's happening:

  1. The CI workflows pass WindowsTargetPlatformVersion=10.0.26100.0 as an MSBuild property (lines 576 and 628 in build.yml)
  2. However, @react-native-webapis/web-storage@^0.4.1 has hardcoded SDK version 10.0.22621.0 in its Windows .vcxproj files
  3. The windows-2025 runner doesn't have SDK 10.0.22621.0 installed - it has newer versions
  4. This hardcoded SDK version overrides the MSBuild property passed via command line

Suggested Solutions

Option 1 (Quick fix): Downgrade CI runner

  • Change runs-on: windows-2025 to runs-on: windows-2022 in both Windows jobs
  • windows-2022 likely has SDK 10.0.22621.0 installed
  • This is a temporary workaround

Option 2 (Proper fix): Update/remove the problematic dependency

  • Remove @react-native-webapis/web-storage from packages/app/example/package.json if it's not essential for the example app
  • OR update to a newer version that's compatible with newer Windows SDKs
  • OR patch the package's .vcxproj files to use flexible SDK versioning: <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>

Option 3: Install the missing SDK in CI

  • Add a step to install Windows SDK 10.0.22621.0 before building
  • Not recommended as it's just a workaround

My recommendation: Use Option 1 (downgrade runner to windows-2022) as an immediate fix, then consider Option 2 (remove @react-native-webapis/web-storage if not needed) as the proper long-term solution.

@tido64 tido64 force-pushed the copilot/upgrade-react-native-version branch 5 times, most recently from 2a11c0a to ee412c5 Compare January 21, 2026 17:40
@tido64 tido64 force-pushed the copilot/upgrade-react-native-version branch from ee412c5 to b807823 Compare January 22, 2026 09:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

platform: Android This affects Android platform: iOS This affects iOS platform: macOS This affects macOS platform: visionOS platform: Windows This affects Windows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants