Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
2604caa
chore: temporarily remove LaTeX math rendering to unblock RN upgrade …
diegolmello Jul 6, 2026
66dd910
chore: upgrade to React Native 0.83.10 and Expo SDK 55 (#7470)
diegolmello Jul 7, 2026
2441341
chore: bump nitro-modules 0.35.9 + mmkv 4.3.1 for RN 0.83 (#7471)
diegolmello Jul 7, 2026
7e350ee
chore: re-validate patch-package patches for RN 0.83 / Expo 55 (#7474)
diegolmello Jul 9, 2026
4c9f063
chore(ios): regenerate Podfile.lock to drop expo-av EXAV pod (#7480)
diegolmello Jul 9, 2026
159457e
Merge remote-tracking branch 'origin/develop' into chore/rn-0.83-expo-55
diegolmello Jul 9, 2026
a0ff89a
feat: re-enable typeset math rendering in messages (#7484)
diegolmello Jul 10, 2026
89cb988
Merge remote-tracking branch 'origin/develop' into chore/rn-0.83-expo-55
diegolmello Jul 10, 2026
dc92141
chore: add expo-font dep, bump keyboard-controller, dedup Info.plist key
diegolmello Jul 10, 2026
f9765ba
Merge remote-tracking branch 'origin/chore/rn-0.83-expo-55' into chor…
diegolmello Jul 10, 2026
a32e82a
chore: revert keyboard-controller to 1.18.5, breaks hardware-keyboard…
diegolmello Jul 10, 2026
5f1bb88
chore: replace react-native-restart with expo reloadAppAsync (#7485)
diegolmello Jul 13, 2026
4ee6f65
chore: replace react-native-background-timer with plain setInterval (…
diegolmello Jul 13, 2026
6c5d191
chore: bump react-native-localize to 3.7.0 (#7487)
diegolmello Jul 13, 2026
0751c5c
chore: replace react-native-file-viewer with @magrinj/expo-quick-look…
diegolmello Jul 13, 2026
baaaa0d
Merge remote-tracking branch 'origin/develop' into chore/rn-0.83-expo-55
diegolmello Jul 13, 2026
f03f405
fix(android): activate RNGH RectButton on hardware Enter/Space/DPAD_C…
diegolmello Jul 14, 2026
def8cf9
ci: raise node heap limit for jest to fix OOM on RN 0.83
diegolmello Jul 14, 2026
9815856
ci: run jest with worker memory limit to bound test heap
diegolmello Jul 14, 2026
96cc50d
ci: use 2 jest workers so memory-limit recycling doesn't clip suites
diegolmello Jul 14, 2026
c1e8293
ci: 3 jest workers with 1GB recycle limit to bound heap without clipping
diegolmello Jul 14, 2026
d4596a4
ci: raise node heap ceiling and lower worker recycle limit for jest
diegolmello Jul 14, 2026
188c027
chore: align @react-native/codegen with RN 0.83.10 toolchain
diegolmello Jul 14, 2026
a43b380
fix: stub media-download I/O in tests to prevent snapshot-suite OOM
diegolmello Jul 14, 2026
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
4 changes: 1 addition & 3 deletions .github/actions/build-ios/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,7 @@ runs:
path: |
~/.pods
ios/Pods
key: pods-v1-{{ checksum "ios/Podfile.lock" }}
restore-keys: |
pods-v1-
key: pods-v2-${{ hashFiles('ios/Podfile.lock') }}

- name: pod install
run: |
Expand Down
4 changes: 1 addition & 3 deletions .github/actions/upload-ios/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,7 @@ runs:
path: |
~/.pods
ios/Pods
key: pods-v1-{{ checksum "ios/Podfile.lock" }}
restore-keys: |
pods-v1-
key: pods-v2-${{ hashFiles('ios/Podfile.lock') }}

- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
Expand Down
2 changes: 1 addition & 1 deletion __mocks__/react-native-localize.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
export const initialConstants = null;
export const findBestAvailableLanguage = () => null;
export const findBestLanguageTag = () => null;
5 changes: 5 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- Libraries declare conflicting maxSdkVersion values for this permission; pin 29 since scoped storage replaces it on Android 10+. -->
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="29"
tools:replace="android:maxSdkVersion" />

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
import com.facebook.react.ReactInstanceEventListener
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.bridge.ReactContext
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.defaults.DefaultReactNativeHost
import com.nozbe.watermelondb.jsi.WatermelonDBJSIPackage;
import com.bugsnag.android.Bugsnag
import expo.modules.ApplicationLifecycleDispatcher
Expand All @@ -39,30 +36,22 @@ import chat.rocket.reactnative.input.ExternalInputPackage
*/
open class MainApplication : Application(), ReactApplication {

override val reactNativeHost: ReactNativeHost =
object : DefaultReactNativeHost(this) {
override fun getPackages(): List<ReactPackage> =
PackageList(this).packages.apply {
add(SSLPinningTurboPackage())
add(WatermelonDBJSIPackage())
add(VideoConfTurboPackage())
add(PushNotificationTurboPackage())
add(VoipTurboPackage())
add(SecureStoragePackage())
add(InvertedScrollPackage())
add(ExternalInputPackage())
}

override fun getJSMainModuleName(): String = "index"

override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG

override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
}

override val reactHost: ReactHost
get() = getDefaultReactHost(applicationContext, reactNativeHost)
override val reactHost: ReactHost by lazy {
getDefaultReactHost(
context = applicationContext,
packageList =
PackageList(this).packages.apply {
add(SSLPinningTurboPackage())
add(WatermelonDBJSIPackage())
add(VideoConfTurboPackage())
add(PushNotificationTurboPackage())
add(VoipTurboPackage())
add(SecureStoragePackage())
add(InvertedScrollPackage())
add(ExternalInputPackage())
},
)
}

override fun onCreate() {
super.onCreate()
Expand Down
1 change: 1 addition & 0 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,5 @@ subprojects { subproject ->
}
}

apply plugin: "expo-root-project"
apply plugin: "com.facebook.react.rootproject"
2 changes: 1 addition & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
45 changes: 37 additions & 8 deletions android/settings.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,41 @@
pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
plugins { id("com.facebook.react.settings") }
extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() }
pluginManagement {
def reactNativeGradlePlugin = new File(
providers.exec {
workingDir(rootDir)
commandLine("node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })")
}.standardOutput.asText.get().trim()
).getParentFile().absolutePath
includeBuild(reactNativeGradlePlugin)

def expoPluginsPath = new File(
providers.exec {
workingDir(rootDir)
commandLine("node", "--print", "require.resolve('expo-modules-autolinking/package.json', { paths: [require.resolve('expo/package.json')] })")
}.standardOutput.asText.get().trim(),
"../android/expo-gradle-plugin"
).absolutePath
includeBuild(expoPluginsPath)
}

plugins {
id("com.facebook.react.settings")
id("expo-autolinking-settings")
}

extensions.configure(com.facebook.react.ReactSettingsExtension) { ex ->
if (System.getenv('EXPO_USE_COMMUNITY_AUTOLINKING') == '1') {
ex.autolinkLibrariesFromCommand()
} else {
ex.autolinkLibrariesFromCommand(expoAutolinking.rnConfigCommand)
}
}
expoAutolinking.useExpoModules()

rootProject.name = 'RocketChatRN'
expoAutolinking.useExpoVersionCatalog()

include ':watermelondb-jsi'
project(':watermelondb-jsi').projectDir = new File(rootProject.projectDir, '../node_modules/@nozbe/watermelondb/native/android-jsi')
include ':app'

includeBuild('../node_modules/@react-native/gradle-plugin')

apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle");
useExpoModules()
include ':app'
includeBuild(expoAutolinking.reactNativeGradlePlugin)
2 changes: 1 addition & 1 deletion app/containers/AudioPlayer/index.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { useEffect, useRef, useState } from 'react';
import { InteractionManager, View } from 'react-native';
import { type AVPlaybackStatus } from 'expo-av';
import { activateKeepAwake, deactivateKeepAwake } from 'expo-keep-awake';
import { useSharedValue } from 'react-native-reanimated';
import { useNavigation } from '@react-navigation/native';

import { type AVPlaybackStatus } from '../../lib/methods/helpers/expoAvShim';
import { useTheme } from '../../theme';
import styles from './styles';
import Seek from './Seek';
Expand Down
Loading
Loading