Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: declare support for react-native 0.72 #1388

Merged
merged 4 commits into from
May 15, 2023
Merged
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
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ jobs:
- name: Set up react-native@nightly
if: ${{ github.event_name == 'schedule' }}
run: |
git apply scripts/disable-safe-area-context.patch
git apply scripts/android-nightly.patch
npm run set-react-version -- nightly
shell: bash
Expand Down
8 changes: 7 additions & 1 deletion .yarn/plugins/link-project.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ module.exports = {
}

const fs = require("node:fs");
const os = require("node:os");
const path = require("node:path");

function normalize(p) {
Expand All @@ -37,7 +38,12 @@ module.exports = {
const linkPath = path.join(nodeModulesPath, name);

fs.rmSync(linkPath, { force: true, maxRetries: 3, recursive: true });
fs.symlinkSync(path.relative(nodeModulesPath, projectPath), linkPath);
if (os.platform() === "win32") {
fs.symlinkSync(projectPath, linkPath, "junction");
} else {
const target = path.relative(nodeModulesPath, projectPath);
fs.symlinkSync(target, linkPath);
}
}
},
},
Expand Down
12 changes: 6 additions & 6 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.5)
CFPropertyList (3.0.6)
rexml
ast (2.4.2)
atomos (0.1.3)
Expand All @@ -10,11 +10,11 @@ GEM
json (2.6.3)
minitest (5.18.0)
nanaimo (0.3.0)
parallel (1.22.1)
parser (3.2.2.0)
parallel (1.23.0)
parser (3.2.2.1)
ast (~> 2.4.1)
rainbow (3.1.1)
regexp_parser (2.7.0)
regexp_parser (2.8.0)
rexml (3.2.5)
rubocop (1.50.2)
json (~> 2.3)
Expand All @@ -26,7 +26,7 @@ GEM
rubocop-ast (>= 1.28.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.28.0)
rubocop-ast (1.28.1)
parser (>= 3.2.1.0)
rubocop-minitest (0.30.0)
rubocop (>= 1.39, < 2.0)
Expand All @@ -50,4 +50,4 @@ DEPENDENCIES
xcodeproj

BUNDLED WITH
2.3.11
2.4.10
2 changes: 2 additions & 0 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ plugins {
id("org.jetbrains.kotlin.android")
}

checkEnvironment()

def reactNativePath = file(findNodeModulesPath("react-native", rootDir))

if (autodetectReactNativeVersion || enableNewArchitecture) {
Expand Down
7 changes: 6 additions & 1 deletion android/app/src/main/jni/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,12 @@ set(REACTTESTAPP_SOURCE_FILES
)

# Suppress 'Manually-specified variables were not used by the project' warning
set(UNUSED_VARIABLES ${REACT_COMMON_DIR} ${REACT_JNILIBS_DIR})
set(UNUSED_VARIABLES
${NODE_MODULES_DIR} # No longer used in 0.72
${REACT_ANDROID_BUILD_DIR} # No longer used in 0.72
${REACT_COMMON_DIR}
${REACT_JNILIBS_DIR}
)

if(DEFINED REACT_ANDROID_DIR)
# New architecture
Expand Down
2 changes: 2 additions & 0 deletions android/dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ static String getKspVersion(String kotlinVersion) {
return [
// Run `scripts/update-ksp-versions.mjs` to update this list
// update-ksp-versions start
"1.8.21-1.0.11",
"1.8.20-1.0.11",
"1.8.10-1.0.9",
"1.8.0-1.0.9",
"1.7.22-1.0.8",
Expand Down
27 changes: 27 additions & 0 deletions android/test-app-util.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,33 @@ import java.security.MessageDigest

ext.manifest = null

ext.checkEnvironment = {
def (major, minor, patch) = gradle.gradleVersion.findAll(/\d+/)
def gradleVersion = (major as int) * 10000 + (minor as int) * 100 + (patch as int)
if (reactNativeVersion > 0 && reactNativeVersion < 7200) {
if (gradleVersion < 70501 || gradleVersion >= 80000) {
logger.warn([
"Latest Gradle 7.x is required for current React Native version. ",
"Run the following command in the 'android' folder to install a supported version: ",
"./gradlew wrapper --gradle-version=7.6.1",
].join(""))
}
} else {
// Gradle 7.5+ seems to be working with 0.72 so we will only recommend a
// newer version if it's older.
if (gradleVersion < 70501) {
logger.warn([
"Latest Gradle 8.0.x is recommended for React Native 0.72 and higher. ",
"Run the following command in the 'android' folder to install a supported version: ",
"./gradlew wrapper --gradle-version=8.0.2",
"\n\n",
"If you still need to work with older versions of React Native, ",
"Gradle 7.5.1+ should still work."
].join(""))
}
}
}

ext.findFile = { fileName ->
def currentDirPath = rootDir == null ? null : rootDir.toString()

Expand Down
2 changes: 1 addition & 1 deletion example/android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ android.enableJetifier=true

# Version of Flipper to use with React Native. Default value is whatever React
# Native defaults to. To disable Flipper, set it to `false`.
#FLIPPER_VERSION=0.125.0
#FLIPPER_VERSION=0.182.0

# Enable Fabric at runtime.
#USE_FABRIC=1
Expand Down
2 changes: 1 addition & 1 deletion example/android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
4 changes: 2 additions & 2 deletions example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
},
"peerDependencies": {
"react": "~17.0.1 || ~18.0.0 || ~18.1.0 || ~18.2.0",
"react-native": "^0.0.0-0 || 0.64 - 0.71 || 1000.0.0",
"react-native": "^0.0.0-0 || 0.64 - 0.72 || 1000.0.0",
"react-native-macos": "^0.0.0-0 || 0.64 || 0.66 || 0.68 || 0.71",
"react-native-windows": "^0.0.0-0 || 0.64 - 0.71"
"react-native-windows": "^0.0.0-0 || 0.64 - 0.72"
},
"devDependencies": {
"@babel/core": "^7.1.6",
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,9 @@
"@react-native-community/cli-platform-ios": ">=5.0",
"mustache": "^4.0.0",
"react": "~17.0.1 || ~18.0.0 || ~18.1.0 || ~18.2.0",
"react-native": "^0.0.0-0 || 0.64 - 0.71 || 1000.0.0",
"react-native": "^0.0.0-0 || 0.64 - 0.72 || 1000.0.0",
"react-native-macos": "^0.0.0-0 || 0.64 || 0.66 || 0.68 || 0.71",
"react-native-windows": "^0.0.0-0 || 0.64 - 0.71"
"react-native-windows": "^0.0.0-0 || 0.64 - 0.72"
},
"peerDependenciesMeta": {
"@expo/config-plugins": {
Expand Down
36 changes: 0 additions & 36 deletions scripts/android-nightly.patch
Original file line number Diff line number Diff line change
@@ -1,39 +1,3 @@
diff --git a/example/App.js b/example/App.js
index c9cd14d..f63758d 100644
--- a/example/App.js
+++ b/example/App.js
@@ -2,6 +2,7 @@
import React, { useCallback, useMemo, useState } from "react";
import {
NativeModules,
+ SafeAreaView,
ScrollView,
StatusBar,
StyleSheet,
@@ -10,7 +11,6 @@ import {
useColorScheme,
View,
} from "react-native";
-import { SafeAreaProvider, SafeAreaView } from "react-native-safe-area-context";
// @ts-expect-error
import { version as coreVersion } from "react-native/Libraries/Core/ReactNativeVersion";
import { Colors, Header } from "react-native/Libraries/NewAppScreen";
@@ -169,7 +169,6 @@ const App = ({ concurrentRoot }) => {
);

return (
- <SafeAreaProvider>
<SafeAreaView style={styles.body}>
<StatusBar barStyle={isDarkMode ? "light-content" : "dark-content"} />
<ScrollView
@@ -192,7 +191,6 @@ const App = ({ concurrentRoot }) => {
</View>
</ScrollView>
</SafeAreaView>
- </SafeAreaProvider>
);
};

diff --git a/example/package.json b/example/package.json
index 9c2e1aa..94fb85e 100644
--- a/example/package.json
Expand Down
36 changes: 36 additions & 0 deletions scripts/disable-safe-area-context.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
diff --git a/example/App.js b/example/App.js
index c9cd14d..f63758d 100644
--- a/example/App.js
+++ b/example/App.js
@@ -2,6 +2,7 @@
import React, { useCallback, useMemo, useState } from "react";
import {
NativeModules,
+ SafeAreaView,
ScrollView,
StatusBar,
StyleSheet,
@@ -10,7 +11,6 @@ import {
useColorScheme,
View,
} from "react-native";
-import { SafeAreaProvider, SafeAreaView } from "react-native-safe-area-context";
// @ts-expect-error
import { version as coreVersion } from "react-native/Libraries/Core/ReactNativeVersion";
import { Colors, Header } from "react-native/Libraries/NewAppScreen";
@@ -169,7 +169,6 @@ const App = ({ concurrentRoot }) => {
);

return (
- <SafeAreaProvider>
<SafeAreaView style={styles.body}>
<StatusBar barStyle={isDarkMode ? "light-content" : "dark-content"} />
<ScrollView
@@ -192,7 +191,6 @@ const App = ({ concurrentRoot }) => {
</View>
</ScrollView>
</SafeAreaView>
- </SafeAreaProvider>
);
};

3 changes: 2 additions & 1 deletion scripts/test-matrix.sh
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ echo
popd 1> /dev/null
prepare
# `react-native-safe-area-context` doesn't support latest New Arch changes
git apply ../scripts/disable-safe-area-context.patch
sed -i '' 's/"react-native-safe-area-context": ".[.0-9]*",//' package.json

echo
Expand Down Expand Up @@ -137,4 +138,4 @@ echo "│ Initialize new app │"
echo "└─────────────────────┘"
echo

yarn react-native init-test-app --destination template-example --name TemplateExample --platform android,ios
GIT_IGNORE_FILE=".gitignore" yarn react-native init-test-app --destination template-example --name TemplateExample --platform android,ios
14 changes: 13 additions & 1 deletion scripts/update-ksp-versions.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ const artifactId = "com.google.devtools.ksp.gradle.plugin";
const rows = 50;
const searchUrl = `https://search.maven.org/solrsearch/select?q=g:%22${groupId}%22+AND+a:%22${artifactId}%22&core=gav&rows=${rows}&wt=json`;

/**
* @param {{ docs?: { id: string; g: string; a: string; v: string; }[]; }} response
* @returns {string[]}
*/
function extractVersions(response) {
if (!Array.isArray(response.docs)) {
return [];
Expand All @@ -25,6 +29,10 @@ function extractVersions(response) {
return Object.values(versionMap);
}

/**
* @param {string} output
* @param {string[]} versions
*/
function update(output, versions) {
const startMarker = "// update-ksp-versions start";
const endMarker = "// update-ksp-versions end";
Expand All @@ -35,7 +43,11 @@ function update(output, versions) {
new RegExp(`${startMarker}.*${endMarker}`, "s"),
[startMarker, ...versions.map((v) => `"${v}",`), endMarker].join(separator)
);
fs.writeFileSync(output, updated);

if (updated !== src) {
fs.writeFileSync(output, updated);
console.log(`Updated '${dependenciesGradle}'`);
}
}

function main() {
Expand Down
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5469,9 +5469,9 @@ __metadata:
react-native-windows: ^0.71.4
peerDependencies:
react: ~17.0.1 || ~18.0.0 || ~18.1.0 || ~18.2.0
react-native: ^0.0.0-0 || 0.64 - 0.71 || 1000.0.0
react-native: ^0.0.0-0 || 0.64 - 0.72 || 1000.0.0
react-native-macos: ^0.0.0-0 || 0.64 || 0.66 || 0.68 || 0.71
react-native-windows: ^0.0.0-0 || 0.64 - 0.71
react-native-windows: ^0.0.0-0 || 0.64 - 0.72
languageName: unknown
linkType: soft

Expand Down Expand Up @@ -9914,9 +9914,9 @@ fsevents@^2.3.2:
"@react-native-community/cli-platform-ios": ">=5.0"
mustache: ^4.0.0
react: ~17.0.1 || ~18.0.0 || ~18.1.0 || ~18.2.0
react-native: ^0.0.0-0 || 0.64 - 0.71 || 1000.0.0
react-native: ^0.0.0-0 || 0.64 - 0.72 || 1000.0.0
react-native-macos: ^0.0.0-0 || 0.64 || 0.66 || 0.68 || 0.71
react-native-windows: ^0.0.0-0 || 0.64 - 0.71
react-native-windows: ^0.0.0-0 || 0.64 - 0.72
peerDependenciesMeta:
"@expo/config-plugins":
optional: true
Expand Down