React native 0.80 (#418)

* Fix Height&Width not changing

* Remove RN 79.2 patch

update locks

* comment out sentry module for now

* Fix Jest Unit Tests for RN 80

* Run linting

* update fastfile for android

---------

Co-authored-by: Violet Caulfield <violet@cosmonautical.cloud>
This commit is contained in:
Ritesh Shukla
2025-06-14 00:27:53 +05:30
committed by GitHub
parent 372ff1345f
commit a77bd48eee
22 changed files with 6714 additions and 1294 deletions

20
Gemfile Normal file
View File

@@ -0,0 +1,20 @@
source 'https://rubygems.org'
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby ">=3.0.0"
# Exclude problematic versions of cocoapods and activesupport that causes build failures.
gem 'cocoapods', '>= 1.16', '!= 1.15.0', '!= 1.15.1'
gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0'
gem 'xcodeproj', '< 1.27.1'
gem 'concurrent-ruby', '< 1.3.6'
gem "fastlane"
# Ruby 3.4.0 has removed some libraries from the standard library.
gem 'bigdecimal'
gem 'logger'
gem 'benchmark'
gem 'mutex_m'
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)

View File

@@ -12,6 +12,8 @@ import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.react.soloader.OpenSourceMergedSoMapping
import com.facebook.soloader.SoLoader
import com.otahotupdate.OtaHotUpdate
import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
class MainApplication : Application(), ReactApplication {
@@ -44,10 +46,6 @@ class MainApplication : Application(), ReactApplication {
override fun onCreate() {
super.onCreate()
SoLoader.init(this, OpenSourceMergedSoMapping)
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
// If you opted-in for the New Architecture, we load the native entry point for this app.
load()
}
loadReactNative(this)
}
}

View File

@@ -5,7 +5,7 @@ buildscript {
compileSdkVersion = 35
targetSdkVersion = 34
ndkVersion = "27.1.12297006"
kotlinVersion = "2.0.21"
kotlinVersion = "2.1.20"
}
repositories {
google()

View File

@@ -22,7 +22,7 @@ platform :android do
end
lane :build do
gradle(task: 'assemble', build_type: 'Release')
gradle(task: 'clean generateCodegenArtifactsFromSchema assembleRelease')
end
desc "Deploy a new version to the Google Play"

Binary file not shown.

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

10
android/gradlew vendored
View File

@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
@@ -84,7 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s' "$PWD") || exit
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -112,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -203,7 +205,7 @@ fi
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
@@ -211,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.

6
android/gradlew.bat vendored
View File

@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@@ -68,11 +70,11 @@ goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
set CLASSPATH=
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell

View File

@@ -24,28 +24,28 @@ GEM
json (>= 1.5.1)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.3.2)
aws-partitions (1.1103.0)
aws-sdk-core (3.224.0)
aws-eventstream (1.4.0)
aws-partitions (1.1116.0)
aws-sdk-core (3.225.2)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
base64
jmespath (~> 1, >= 1.6.1)
logger
aws-sdk-kms (1.101.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sdk-kms (1.105.0)
aws-sdk-core (~> 3, >= 3.225.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.186.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sdk-s3 (1.189.1)
aws-sdk-core (~> 3, >= 3.225.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.11.0)
aws-sigv4 (1.12.1)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
benchmark (0.4.0)
bigdecimal (3.1.9)
base64 (0.3.0)
benchmark (0.4.1)
bigdecimal (3.2.2)
claide (1.1.0)
cocoapods (1.16.2)
addressable (~> 2.8)
@@ -88,8 +88,8 @@ GEM
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
concurrent-ruby (1.3.3)
connection_pool (2.5.0)
concurrent-ruby (1.3.5)
connection_pool (2.5.3)
declarative (0.0.20)
digest-crc (0.7.0)
rake (>= 12.0.0, < 14.0.0)
@@ -104,7 +104,7 @@ GEM
rest-client (>= 2.1.0.rc1)
domain_name (0.6.20240107)
dotenv (2.8.1)
drb (2.2.1)
drb (2.2.3)
emoji_regex (3.2.3)
escape (0.0.4)
ethon (0.16.0)
@@ -140,7 +140,7 @@ GEM
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.4.0)
fastlane (2.227.2)
fastlane (2.228.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
@@ -186,8 +186,17 @@ GEM
discordrb (~> 3.3.0)
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
ffi (1.17.1)
ffi (1.17.1-x86_64-darwin)
ffi (1.17.2)
ffi (1.17.2-aarch64-linux-gnu)
ffi (1.17.2-aarch64-linux-musl)
ffi (1.17.2-arm-linux-gnu)
ffi (1.17.2-arm-linux-musl)
ffi (1.17.2-arm64-darwin)
ffi (1.17.2-x86-linux-gnu)
ffi (1.17.2-x86-linux-musl)
ffi (1.17.2-x86_64-darwin)
ffi (1.17.2-x86_64-linux-gnu)
ffi (1.17.2-x86_64-linux-musl)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
@@ -236,24 +245,24 @@ GEM
i18n (1.14.7)
concurrent-ruby (~> 1.0)
jmespath (1.6.2)
json (2.12.0)
json (2.12.2)
jwt (2.10.1)
base64
logger (1.7.0)
mime-types (3.6.2)
mime-types (3.7.0)
logger
mime-types-data (~> 3.2015)
mime-types-data (3.2025.0415)
mime-types-data (~> 3.2025, >= 3.2025.0507)
mime-types-data (3.2025.0610)
mini_magick (4.13.2)
mini_mime (1.1.5)
minitest (5.25.4)
minitest (5.25.5)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.4.1)
mutex_m (0.3.0)
nanaimo (0.4.0)
nap (1.1.0)
naturally (2.2.1)
naturally (2.3.0)
netrc (0.11.0)
nkf (0.2.0)
optparse (0.6.0)
@@ -262,7 +271,7 @@ GEM
os (1.1.4)
plist (3.7.2)
public_suffix (4.0.7)
rake (13.2.1)
rake (13.3.0)
rbnacl (3.4.0)
ffi
representable (3.2.0)
@@ -325,8 +334,17 @@ GEM
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
aarch64-linux-gnu
aarch64-linux-musl
arm-linux-gnu
arm-linux-musl
arm64-darwin
ruby
x86_64-darwin-23
x86-linux-gnu
x86-linux-musl
x86_64-darwin
x86_64-linux-gnu
x86_64-linux-musl
DEPENDENCIES
activesupport (>= 6.1.7.5, != 7.1.0)
@@ -341,7 +359,7 @@ DEPENDENCIES
xcodeproj (< 1.27.1)
RUBY VERSION
ruby 3.1.4p223
ruby 3.4.3p32
BUNDLED WITH
2.6.2
2.6.9

View File

@@ -30,6 +30,8 @@
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsForMedia</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
<key>NSAllowsLocalNetworkingUsageDescription</key>
@@ -45,23 +47,23 @@
</array>
</dict>
</dict>
<key>NSAllowsArbitraryLoadsForMedia</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>nip.io</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
<key>NSLocalNetworkUsageDescription</key>
<string>${PRODUCT_NAME} uses the local network to connect to one&apos;s Jellyfin server for streaming music</string>
<string>${PRODUCT_NAME} uses the local network to connect to one's Jellyfin server for streaming music</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>RCTNewArchEnabled</key>
<true/>
<key>UIAppFonts</key>
<array>
<string>AntDesign.ttf</string>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
import { View } from 'react-native'
module.exports = View

View File

@@ -1,3 +1,3 @@
jest.mock('@sentry/react-native', () => ({
init: jest.fn(),
}))
// jest.mock('@sentry/react-native', () => ({
// init: jest.fn(),
// }))

View File

@@ -32,3 +32,8 @@ jest.mock('react-native-haptic-feedback', () => {
},
}
})
jest.mock('react-native/Libraries/Components/RefreshControl/RefreshControl', () => ({
__esModule: true,
default: require('./setup-refresh-control'),
}))

View File

@@ -43,7 +43,6 @@
"@react-navigation/native": "^7.1.9",
"@react-navigation/native-stack": "^7.3.13",
"@react-navigation/stack": "^7.3.2",
"@sentry/react-native": "^6.13.1",
"@shopify/flash-list": "^1.8.0",
"@tamagui/config": "^1.126.12",
"@tanstack/query-sync-storage-persister": "^5.76.0",
@@ -58,9 +57,9 @@
"invert-color": "^2.0.0",
"lodash": "^4.17.21",
"openai": "^5.0.2",
"react": "19.0.0",
"react": "19.1.0",
"react-freeze": "^1.0.4",
"react-native": "0.79.2",
"react-native": "0.80.0",
"react-native-background-actions": "^4.0.1",
"react-native-blob-util": "^0.21.2",
"react-native-carplay": "^2.4.1-beta.0",
@@ -70,12 +69,12 @@
"react-native-draggable-flatlist": "^4.0.3",
"react-native-fast-image": "^8.6.3",
"react-native-fs": "^2.20.0",
"react-native-gesture-handler": "^2.25.0",
"react-native-gesture-handler": "^2.26.0",
"react-native-haptic-feedback": "^2.3.3",
"react-native-mmkv": "3.2.0",
"react-native-ota-hot-update": "^2.3.0",
"react-native-pager-view": "^6.7.1",
"react-native-reanimated": "^3.17.5",
"react-native-reanimated": "^3.18.0",
"react-native-safe-area-context": "^5.4.0",
"react-native-screens": "^4.11.0-beta.2",
"react-native-swipeable-item": "^2.0.9",
@@ -94,17 +93,17 @@
"@babel/runtime": "^7.27.1",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.26.0",
"@react-native-community/cli-platform-android": "18.0.0",
"@react-native-community/cli-platform-ios": "18.0.0",
"@react-native/babel-preset": "0.79.2",
"@react-native/eslint-config": "0.79.2",
"@react-native/metro-config": "0.79.2",
"@react-native-community/cli-platform-android": "19.0.0",
"@react-native-community/cli-platform-ios": "19.0.0",
"@react-native/babel-preset": "0.80.0",
"@react-native/eslint-config": "0.80.0",
"@react-native/metro-config": "0.80.0",
"@react-native/typescript-config": "0.79.2",
"@types/jest": "^29.5.14",
"@types/lodash": "^4.17.16",
"@types/react": "^19.1.3",
"@types/react-native-vector-icons": "^6.4.18",
"@types/react-test-renderer": "19.0.0",
"@types/react-test-renderer": "19.1.0",
"babel-plugin-module-resolver": "^5.0.2",
"eslint": "^9.26.0",
"eslint-config-prettier": "^10.1.5",
@@ -121,7 +120,7 @@
"prettier": "^3.5.3",
"react-dom": "^19.0.0",
"react-native-cli-bump-version": "^1.5.1",
"react-test-renderer": "19.0.0",
"react-test-renderer": "19.1.0",
"typescript": "5.8.3"
},
"lint-staged": {

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +0,0 @@
diff --git a/node_modules/react-native/React/CoreModules/RCTDeviceInfo.mm b/node_modules/react-native/React/CoreModules/RCTDeviceInfo.mm
index 6b4fcef..fed256f 100644
--- a/node_modules/react-native/React/CoreModules/RCTDeviceInfo.mm
+++ b/node_modules/react-native/React/CoreModules/RCTDeviceInfo.mm
@@ -144,9 +144,10 @@ static BOOL RCTIsIPhoneNotched()
{
UIScreen *mainScreen = UIScreen.mainScreen;
CGSize screenSize = mainScreen.bounds.size;
+ UIView *mainWindow = RCTKeyWindow();
// We fallback to screen size if a key window is not found.
- CGSize windowSize = [RCTKeyWindowValuesProxy sharedInstance].windowSize;
+ CGSize windowSize = mainWindow ? mainWindow.bounds.size : screenSize;
NSDictionary<NSString *, NSNumber *> *dimsWindow = @{
@"width" : @(windowSize.width),

View File

@@ -0,0 +1,12 @@
diff --git a/node_modules/react-native-mmkv/react-native-mmkv.podspec b/node_modules/react-native-mmkv/react-native-mmkv.podspec
index be617c1..3e1da7c 100644
--- a/node_modules/react-native-mmkv/react-native-mmkv.podspec
+++ b/node_modules/react-native-mmkv/react-native-mmkv.podspec
@@ -25,6 +25,7 @@ Pod::Spec.new do |s|
"GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) FORCE_POSIX",
}
s.compiler_flags = '-x objective-c++'
+ s.libraries = "z", "c++"
s.source_files = [
# react-native-mmkv

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,7 @@ import {
} from '@typedigital/telemetrydeck-react'
import telemetryDeckConfig from '../../telemetrydeck.json'
import glitchtipConfig from '../../glitchtip.json'
import * as Sentry from '@sentry/react-native'
// import * as Sentry from '@sentry/react-native'
import { useTheme } from 'tamagui'
import Toast from 'react-native-toast-message'
import JellifyToastConfig from '../constants/toast.config'
@@ -53,9 +53,9 @@ function JellifyLoggingWrapper({ children }: { children: React.ReactNode }): Rea
const telemetrydeck = createTelemetryDeck(telemetryDeckConfig)
// only initialize Sentry when we actually have a valid DSN and are sending metrics
if (sendMetrics && glitchtipConfig.dsn) {
Sentry.init(glitchtipConfig)
}
// if (sendMetrics && glitchtipConfig.dsn) {
// Sentry.init(glitchtipConfig)
// }
return <TelemetryDeckProvider telemetryDeck={telemetrydeck}>{children}</TelemetryDeckProvider>
}

View File

@@ -1,5 +1,5 @@
{
"extends": "@react-native/typescript-config/tsconfig.json",
"extends": "@react-native/typescript-config",
"compilerOptions": {
"paths": {
"@/*": ["./*"]

713
yarn.lock

File diff suppressed because it is too large Load Diff