Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions MIGRATING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,104 @@ This document covers breaking changes and migration steps between major versions

## Table of Contents

- [Migrating from 0.16.x to 0.17.x](#migrating-from-016x-to-017x)
- [Migrating from 0.13.x to 0.14.x](#migrating-from-013x-to-014x)

---

## Migrating from 0.16.x to 0.17.x

Version 0.17.0 upgrades the underlying Google Navigation SDKs and raises the minimum Android build toolchain requirements.

### Summary of Breaking Changes

| Category | Change |
| ----------------- | --------------------------------------------------------------------------------------- |
| Native SDKs | Android Navigation SDK upgraded to `7.7.0`, iOS Navigation SDK upgraded to `10.14.0` |
| Kotlin | Minimum required Kotlin version is now `2.3.0` |
| Android Gradle | Android Gradle Plugin (AGP) must be `8.13.2` or newer |
| Kotlin Gradle | Kotlin Gradle Plugin must be `2.3.21` or newer |

### What changed

This release updates the native Navigation SDK dependencies to:

- **Android:** Google Maps Navigation SDK `7.7.0`
- **iOS:** Google Maps Navigation SDK `10.14.0`

There are no JavaScript API changes in this release, but **Android projects must update their Gradle/Kotlin toolchain** to build successfully.

### Step 1: Update your Android build toolchain

React Native's default Android Gradle Plugin and Kotlin Gradle Plugin versions are not yet new enough for this release, so you must override them in your Android project.

> [!NOTE]
> This is currently required because the latest React Native release (`0.86.0`) still does not provide new enough default AGP and Kotlin plugin versions. This should be temporary, as future React Native releases are expected to update these defaults.
>
> Some Android dependencies in your app may not yet be compatible with these manual toolchain upgrades. If upgrading AGP/Kotlin causes build or compatibility issues in your project, we recommend staying on `0.16.x` of this package until those dependencies are updated.

#### Minimum required versions

- **AGP:** `8.13.2` or newer
- **Kotlin Gradle Plugin:** `2.3.21` or newer
- **Kotlin language version:** `2.3.0` or newer

#### Example root `android/build.gradle`

If your app uses a root `build.gradle` with a `buildscript` block, update it like this:

```diff
buildscript {
ext {
- kotlinVersion = "<old version>"
+ kotlinVersion = "2.3.21"
}
dependencies {
- classpath("com.android.tools.build:gradle")
- classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
+ classpath("com.android.tools.build:gradle:8.13.2")
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.3.21")
}
}
```

### Step 2: Sync and rebuild Android

After updating Gradle and Kotlin versions:

```bash
cd android
./gradlew clean
```

Then rebuild your app.

If you run into dependency or build cache issues, reinstall dependencies and rebuild from scratch.

### Step 3: Reinstall iOS pods

The iOS SDK is upgraded to `10.14.0`, so after upgrading the package you should reinstall pods:

```bash
cd ios && pod install
```

### Release notes

For native SDK changes introduced upstream, review the official release notes:

- [Android Navigation SDK 7.7.0 release notes](https://developers.google.com/maps/documentation/navigation/android-sdk/release-notes)
- [iOS Navigation SDK 10.14.0 release notes](https://developers.google.com/maps/documentation/navigation/ios-sdk/release-notes)

### Troubleshooting

If Android builds start failing after upgrading, first verify:

1. Your project is using **AGP 8.13.2+**
2. Your project is using **Kotlin Gradle Plugin 2.3.21+**
3. Your Kotlin version is at least **2.3.0**
4. You have refreshed Gradle dependencies and rebuilt the app

## Migrating from 0.13.x to 0.14.x

Version 0.14.0 introduces React Native's **New Architecture** (Fabric & TurboModules) as a requirement, dropping support for the legacy architecture. This release also includes breaking API changes and new features.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ android {
}

dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.4'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.5'
}
```

Expand Down
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,6 @@ dependencies {
implementation "androidx.car.app:app:1.4.0"
implementation "androidx.car.app:app-projected:1.4.0"
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation "com.google.android.libraries.navigation:navigation:7.6.1"
implementation "com.google.android.libraries.navigation:navigation:7.7.0"
api 'com.google.guava:guava:31.0.1-android'
}
2 changes: 1 addition & 1 deletion example/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ dependencies {
implementation "androidx.car.app:app-projected:1.4.0"

// Include the Google Navigation SDK.
implementation 'com.google.android.libraries.navigation:navigation:7.6.1'
implementation 'com.google.android.libraries.navigation:navigation:7.7.0'
}

secrets {
Expand Down
10 changes: 5 additions & 5 deletions example/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,17 @@ buildscript {
compileSdkVersion = 36
targetSdkVersion = 36
ndkVersion = "27.1.12297006"
kotlinVersion = "2.0.21"
kotlinVersion = "2.3.21"
}
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
dependencies {
classpath("com.android.tools.build:gradle")
classpath("com.android.tools.build:gradle:8.13.2")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.3.21")
classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
classpath('com.ncorti.ktfmt.gradle:plugin:0.21.0')
}
Expand All @@ -57,7 +57,7 @@ allprojects {
exclude group: 'com.google.android.gms', module: 'play-services-maps'
}
}

subprojects {
afterEvaluate { project ->
if (project.hasProperty('android')) {
Expand All @@ -69,7 +69,7 @@ allprojects {

dependencies {
// Desugar Java 8+ APIs (NIO flavor required for Navigation SDK 7.5.0+)
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.4'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.5'
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"@react-navigation/stack": "^6.4.1",
"react": "19.2.0",
"react-native": "0.83.1",
"react-native-gesture-handler": "2.29.1",
"react-native-gesture-handler": "3.0.2",
"react-native-pager-view": "^6.9.1",
"react-native-permissions": "^5.1.0",
"react-native-safe-area-context": "^5.5.2",
Expand Down
2 changes: 1 addition & 1 deletion react-native-navigation-sdk.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Pod::Spec.new do |s|
s.public_header_files = "ios/**/*.h"

s.dependency "React-Core"
s.dependency "GoogleNavigation", "10.13.0"
s.dependency "GoogleNavigation", "10.14.0"

install_modules_dependencies(s)
end
60 changes: 26 additions & 34 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1718,15 +1718,6 @@ __metadata:
languageName: node
linkType: hard

"@egjs/hammerjs@npm:^2.0.17":
version: 2.0.17
resolution: "@egjs/hammerjs@npm:2.0.17"
dependencies:
"@types/hammerjs": ^2.0.36
checksum: 8945137cec5837edd70af3f2e0ea621543eb0aa3b667e6269ec6485350f4d120c2434b37c7c30b1cf42a65275dd61c1f24626749c616696d3956ac0c008c4766
languageName: node
linkType: hard

"@emnapi/core@npm:^1.4.3":
version: 1.7.1
resolution: "@emnapi/core@npm:1.7.1"
Expand Down Expand Up @@ -2968,13 +2959,6 @@ __metadata:
languageName: node
linkType: hard

"@types/hammerjs@npm:^2.0.36":
version: 2.0.46
resolution: "@types/hammerjs@npm:2.0.46"
checksum: caba6ec788d19905c71092670b58514b3d1f5eee5382bf9205e8df688d51e7857b7994e2dd7aed57fac8977bdf0e456d67fbaf23440a4385b8ce25fe2af1ec39
languageName: node
linkType: hard

"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1":
version: 2.0.6
resolution: "@types/istanbul-lib-coverage@npm:2.0.6"
Expand Down Expand Up @@ -3049,6 +3033,24 @@ __metadata:
languageName: node
linkType: hard

"@types/react-test-renderer@npm:^19.1.0":
version: 19.1.0
resolution: "@types/react-test-renderer@npm:19.1.0"
dependencies:
"@types/react": "*"
checksum: 2ef3aec0f2fd638902cda606d70c8531d66f8e8944334427986b99dcac9755ee60b700c5c3a19ac354680f9c45669e98077b84f79cac60e950bdb7d38aebffde
languageName: node
linkType: hard

"@types/react@npm:*":
version: 19.2.17
resolution: "@types/react@npm:19.2.17"
dependencies:
csstype: ^3.2.2
checksum: 9704dc2001b6bcc32efc6e3fe144e18c411d5ee8a5c8dfe572535e44bd300424c4e7bddc9314299eeec28efb547816368b5c9851c93a3082e8ad1265786f3d31
languageName: node
linkType: hard

"@types/react@npm:19.2.0":
version: 19.2.0
resolution: "@types/react@npm:19.2.0"
Expand Down Expand Up @@ -4756,7 +4758,7 @@ __metadata:
languageName: node
linkType: hard

"csstype@npm:^3.0.2":
"csstype@npm:^3.0.2, csstype@npm:^3.2.2":
version: 3.2.3
resolution: "csstype@npm:3.2.3"
checksum: cb882521b3398958a1ce6ca98c011aec0bde1c77ecaf8a1dd4db3b112a189939beae3b1308243b2fe50fc27eb3edeb0f73a5a4d91d928765dc6d5ecc7bda92ee
Expand Down Expand Up @@ -6573,15 +6575,6 @@ __metadata:
languageName: node
linkType: hard

"hoist-non-react-statics@npm:^3.3.0":
version: 3.3.2
resolution: "hoist-non-react-statics@npm:3.3.2"
dependencies:
react-is: ^16.7.0
checksum: b1538270429b13901ee586aa44f4cc3ecd8831c061d06cb8322e50ea17b3f5ce4d0e2e66394761e6c8e152cd8c34fb3b4b690116c6ce2bd45b18c746516cb9e8
languageName: node
linkType: hard

"hosted-git-info@npm:^4.0.1":
version: 4.1.0
resolution: "hosted-git-info@npm:4.1.0"
Expand Down Expand Up @@ -9765,7 +9758,7 @@ __metadata:
languageName: node
linkType: hard

"react-is@npm:^16.13.0, react-is@npm:^16.13.1, react-is@npm:^16.7.0":
"react-is@npm:^16.13.0, react-is@npm:^16.13.1":
version: 16.13.1
resolution: "react-is@npm:16.13.1"
checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f
Expand Down Expand Up @@ -9818,17 +9811,16 @@ __metadata:
languageName: node
linkType: hard

"react-native-gesture-handler@npm:2.29.1":
version: 2.29.1
resolution: "react-native-gesture-handler@npm:2.29.1"
"react-native-gesture-handler@npm:3.0.2":
version: 3.0.2
resolution: "react-native-gesture-handler@npm:3.0.2"
dependencies:
"@egjs/hammerjs": ^2.0.17
hoist-non-react-statics: ^3.3.0
"@types/react-test-renderer": ^19.1.0
invariant: ^2.2.4
peerDependencies:
react: "*"
react-native: "*"
checksum: dddabdb12ce31d68ef71796e8fcaa57acd4608cca14412f36ce36fee14911fb629f325f0ced86bea1336a64673a434e34cde32a63be8d33f29d9a7bed292c5b2
checksum: 28505ddc9f30ad81952af033f49c66969332ab848421c27eb3161f3245a89d58afbb56acd21c9fcf85b561c09d63b3950c3401a43be19f970bcf990b90b17ad2
languageName: node
linkType: hard

Expand Down Expand Up @@ -9874,7 +9866,7 @@ __metadata:
react: 19.2.0
react-native: 0.83.1
react-native-builder-bob: ^0.40.13
react-native-gesture-handler: 2.29.1
react-native-gesture-handler: 3.0.2
react-native-monorepo-config: ^0.1.9
react-native-pager-view: ^6.9.1
react-native-permissions: ^5.1.0
Expand Down
Loading