Skip to content
Closed
Show file tree
Hide file tree
Changes from 37 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
1b582fe
Enable flexible page sizes in CMake build
chrispader Jun 20, 2025
c8e519f
chore: update HybridApp build.gradle
chrispader Jun 24, 2025
e1871d0
Update cspell.json
chrispader Jun 24, 2025
b579616
chore: enable legacy packaging
chrispader Jun 24, 2025
1ae4dd5
chore: add 16kb mode to other libraries
chrispader Jun 24, 2025
29dad86
chore: update nitro
chrispader Jun 24, 2025
db87ce8
chore: react-native-safe-area-context patch
chrispader Jun 28, 2025
3a08162
chore: @rnmapbox/maps
chrispader Jun 28, 2025
c8b6ae4
chore: add details.md for react-native-safe-area-context patch
chrispader Jun 28, 2025
db6da9a
chore: @react-native-firebase/crashlytics
chrispader Jun 28, 2025
47795fd
fix: update PR link in details.md
chrispader Jun 28, 2025
939cc7d
chore: @expensify/react-native-live-markdown
chrispader Jun 28, 2025
0ac7a67
Update @expensify+react-native-live-markdown+0.1.288+001+android-jni-…
chrispader Jun 28, 2025
4246383
chore: expo-av and expo-modules-core
chrispader Jun 28, 2025
808ae15
chore: react-native-fs
chrispader Jun 28, 2025
93ea3b3
fix: expo-av patch
chrispader Jun 28, 2025
a8f82c2
Update @react-native-firebase+crashlytics+12.9.3+002+android-jni-pack…
chrispader Jun 28, 2025
c30adc7
Update @rnmapbox+maps+10.1.33+002+android-jni-packaging-for-16kb-memo…
chrispader Jun 28, 2025
69d7408
chore: rename patches
chrispader Jun 28, 2025
4a813f4
chore: react-native-pdf
chrispader Jun 28, 2025
c3163f2
chore: update nitro-sqlite
chrispader Jun 28, 2025
5362897
chore: rename and update initial onfido patch
chrispader Jul 17, 2025
0b27a61
chore: patch onfido for android 16kb memory alignment
chrispader Jul 17, 2025
0dabdb2
chore: move back onfido patch
chrispader Jul 17, 2025
79548ce
chore: update live-markdown and remove patch
chrispader Jul 17, 2025
8dd9b65
chore: ignore another file in cspell
chrispader Jul 17, 2025
38bcd3d
Update @onfido+react-native-sdk+10.6.0.patch
chrispader Jul 17, 2025
e126fce
chore: remove useLegacyPackaging
chrispader Jul 17, 2025
9a5d8a8
chore: update @rnmapbox/map
chrispader Jul 17, 2025
df54ee8
chore: updat react-native-pdf
chrispader Jul 17, 2025
0ba1e85
chore: update firebase crashlytics patch
chrispader Jul 17, 2025
bc1e090
Delete @rnmapbox+maps+10.1.39+001+initial.patch
chrispader Jul 17, 2025
2081da0
chore: new @rnmapbox/maps patch
chrispader Jul 17, 2025
9730a54
Create check-android-16kb-memory-page-size-compatibility.sh
chrispader Jul 17, 2025
148eeaa
chore: extract vision camrea bump
chrispader Jul 17, 2025
2c6701e
fix(63871): update dependencies and remove redundant patches
Kureev Aug 25, 2025
5fbc4d5
fix(63871): remove legacy react-native-vision-camera patch
Kureev Aug 25, 2025
081bff3
fix(63871): remove redundant patches
Kureev Aug 25, 2025
bb81143
fix(63871): revert submodule update
Kureev Aug 25, 2025
23e2322
fix(63871): types for PDFThumbnail
Kureev Aug 26, 2025
d2457ee
fix(63871): reorg patches
Kureev Aug 26, 2025
fa8c9f3
fix(63871): make contentAfterStartOfChecklist optional
Kureev Aug 26, 2025
05e087c
fix(63871): remove redundant 16kb script
Kureev Aug 26, 2025
12041a5
fix(63871): fix 16kb alignment script to pass on CI
Kureev Aug 26, 2025
347c26f
fix(63871): add cspell words
Kureev Aug 26, 2025
8ee429e
fix(63871): update Podfile.lock
Kureev Aug 27, 2025
cdd13d9
fix(63871): align expo dependencies with 53.x
Kureev Aug 28, 2025
eee574b
fix(63871): update dependencies
Kureev Aug 28, 2025
0828ab2
fix(63871): revert image-picker to 7.1.2
Kureev Aug 28, 2025
06ac2e4
fix(63871): use shellUtils for formatting check-android-16kb script
Kureev Aug 29, 2025
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
2 changes: 1 addition & 1 deletion Mobile-Expensify
Comment thread
Kureev marked this conversation as resolved.
18 changes: 16 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,18 @@ android {
// Supported language variants must be declared here to avoid from being removed during the compilation.
// This also helps us to not include unnecessary language variants in the APK.
resConfigs "en", "es"

externalNativeBuild {
cmake {
arguments "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
}
}
}

packagingOptions {
jniLibs {
useLegacyPackaging true
}
}

flavorDimensions "default"
Expand Down Expand Up @@ -249,8 +261,10 @@ dependencies {
implementation "com.google.firebase:firebase-crashlytics"

// GIF support
implementation 'com.facebook.fresco:fresco:2.5.0'
implementation 'com.facebook.fresco:animated-gif:2.5.0'
implementation 'com.facebook.fresco:fresco:3.6.0'
implementation 'com.facebook.fresco:animated-gif:3.6.0'

implementation "pl.droidsonroids.gif:android-gif-drawable:1.2.29"

// AndroidX support library
implementation 'androidx.legacy:legacy-support-core-utils:1.0.0'
Expand Down
2 changes: 2 additions & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -781,6 +781,8 @@
"modules/ExpensifyNitroUtils/nitrogen/**",
"modules/ExpensifyNitroUtils/android/build.gradle",
"modules/ExpensifyNitroUtils/android/src/main/cpp/**",
"modules/hybrid-app/android/build.gradle",
"modules/background-task/android/build.gradle",
"src/TIMEZONES.ts",
"tests/unit/EmojiTest.ts",
"tests/unit/FastSearchTest.ts",
Expand Down
2 changes: 1 addition & 1 deletion modules/ExpensifyNitroUtils/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ android {
externalNativeBuild {
cmake {
cppFlags "-O2 -frtti -fexceptions -Wall -fstack-protector-all"
arguments "-DANDROID_STL=c++_shared"
arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
abiFilters (*reactNativeArchitectures())
}
}
Expand Down
5 changes: 5 additions & 0 deletions modules/background-task/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ android {
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()

externalNativeBuild {
cmake {
arguments "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
}
}
}

buildFeatures {
Expand Down
6 changes: 6 additions & 0 deletions modules/hybrid-app/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ android {
minSdkVersion getExtOrIntegerDefault("minSdkVersion")
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", "true"

externalNativeBuild {
cmake {
arguments "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
}
}
}

buildFeatures {
Expand Down
36 changes: 24 additions & 12 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@
"@fullstory/react-native": "^1.7.6",
"@gorhom/portal": "^1.0.14",
"@invertase/react-native-apple-authentication": "^2.2.2",
"@onfido/react-native-sdk": "10.6.0",
"@onfido/react-native-sdk": "^15.0.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'm not keen to upgrade so many unrelated dependencies all at once in a single PR. We should split this PR up in to several distinct PRs. In no particular order:

  • @onfido/react-native-sdk and onfido-sdk-ui
  • @rnmapbox/maps
  • expo and expo-image
  • react-native-blob-util
  • react-native-pdf

Then we can test, merge, deploy and QA them independently. This may take longer but will result in higher quality testing and lower likelihood of having to revert. If we do have to revert one of the dependency bumps, it doesn't affect the others.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Sure thing, we can use this PR as a ref and split it up into more atomic changes. Good call!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

#69600
#69612
#69591
#69649

I split all dependency bumps into separate (sort of logical) PRs, so I believe it should become way easier to test and merge

"@pusher/pusher-websocket-react-native": "^1.3.1",
"@react-native-camera-roll/camera-roll": "7.4.0",
"@react-native-clipboard/clipboard": "^1.15.0",
Expand All @@ -118,7 +118,7 @@
"@react-navigation/native-stack": "7.3.14",
"@react-navigation/stack": "7.3.3",
"@react-ng/bounds-observer": "^0.2.1",
"@rnmapbox/maps": "10.1.33",
"@rnmapbox/maps": "^10.1.41-rc.2",
"@shopify/flash-list": "1.8.2",
"@ua/react-native-airship": "~24.4.0",
"awesome-phonenumber": "^5.4.0",
Expand All @@ -134,7 +134,7 @@
"expo-asset": "^11.1.2",
"expo-av": "^15.1.5",
"expo-font": "^13.0.4",
"expo-image": "^2.1.6",
"expo-image": "^2.4.0",
"expo-image-manipulator": "^13.1.5",
"fast-equals": "^5.2.2",
"focus-trap-react": "^11.0.3",
Expand All @@ -146,7 +146,7 @@
"lodash-es": "4.17.21",
"lottie-react-native": "6.5.1",
"mapbox-gl": "^2.15.0",
"onfido-sdk-ui": "14.42.0",
"onfido-sdk-ui": "^14.53.0",
"pako": "^2.1.0",
"process": "^0.11.10",
"pusher-js": "8.3.0",
Expand Down Expand Up @@ -181,7 +181,7 @@
"react-native-nitro-sqlite": "9.1.10",
"react-native-onyx": "2.0.132",
"react-native-pager-view": "6.5.3",
"react-native-pdf": "6.7.3",
"react-native-pdf": "^6.7.7",
"react-native-performance": "^5.1.4",
"react-native-permissions": "^5.4.0",
"react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#07d60d78d4772d47afd7a744940fc6b6d1881806",
Expand All @@ -198,7 +198,7 @@
"react-native-tab-view": "^4.1.0",
"react-native-url-polyfill": "^2.0.0",
"react-native-view-shot": "4.0.0",
"react-native-vision-camera": "^4.7.0",
"react-native-vision-camera": "^4.6.1",
Comment thread
Kureev marked this conversation as resolved.
"react-native-web": "0.20.0",
"react-native-webview": "13.13.1",
"react-plaid-link": "3.3.2",
Expand Down
6 changes: 3 additions & 3 deletions patches/@onfido+react-native-sdk+10.6.0.patch
Original file line number Diff line number Diff line change
Expand Up @@ -1176,7 +1176,7 @@ index 0000000..998f79b
+@end
diff --git a/node_modules/@onfido/react-native-sdk/js/NativeOnfidoModule.ts b/node_modules/@onfido/react-native-sdk/js/NativeOnfidoModule.ts
new file mode 100644
index 0000000..c48f86e
index 0000000..8ed5cd0
--- /dev/null
+++ b/node_modules/@onfido/react-native-sdk/js/NativeOnfidoModule.ts
@@ -0,0 +1,13 @@
Expand Down Expand Up @@ -1227,7 +1227,7 @@ index db35471..fa6c1ef 100644

addCustomMediaCallback(callback: (result: OnfidoMediaResult) => OnfidoMediaResult) {
diff --git a/node_modules/@onfido/react-native-sdk/onfido-react-native-sdk.podspec b/node_modules/@onfido/react-native-sdk/onfido-react-native-sdk.podspec
index a9de0d0..da83d9f 100644
index a9de0d0..ed1e6fd 100644
--- a/node_modules/@onfido/react-native-sdk/onfido-react-native-sdk.podspec
+++ b/node_modules/@onfido/react-native-sdk/onfido-react-native-sdk.podspec
@@ -2,6 +2,8 @@ require "json"
Expand Down Expand Up @@ -1317,4 +1317,4 @@ index 49f9d4c..1b9f304 100755
+ sed -i '' -e "s/_pluginVersion = @\"[0-9]*\.[0-9]*\.[0-9]*\"/_pluginVersion = @\"$2\"/g" $1
}

update_manifest ${MANIFEST_FILE} $PACKAGE_VERSION
update_manifest ${MANIFEST_FILE} $PACKAGE_VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
diff --git a/node_modules/@onfido/react-native-sdk/android/build.gradle b/node_modules/@onfido/react-native-sdk/android/build.gradle
index 895bfd7..257605f 100644
--- a/node_modules/@onfido/react-native-sdk/android/build.gradle
+++ b/node_modules/@onfido/react-native-sdk/android/build.gradle
@@ -93,6 +93,12 @@ android {
versionName "1.0"
multiDexEnabled true
consumerProguardFiles 'proguard-rules.pro'
+
+ externalNativeBuild {
+ cmake {
+ arguments "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
+ }
+ }
}
lintOptions {
abortOnError false
8 changes: 8 additions & 0 deletions patches/@onfido/react-native-sdk/details.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# `@onfido/react-native-sdk` patches

### [@onfido+react-native-sdk+10.6.0+002+android-enable-16kb-memory-page-size.patch](@onfido+react-native-sdk+10.6.0+002+android-enable-16kb-memory-page-size.patch)

- Reason: Updates the packaging of the library on Android to enable 16KB memory page sizes on Android.
- Upstream PR/issue: TODO
- E/App issue: [#63871](https://github.com/Expensify/App/issues/63871)
- PR Introducing Patch: [#64640](https://github.com/Expensify/App/pull/64640)
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
diff --git a/node_modules/@react-native-firebase/crashlytics/android/build.gradle b/node_modules/@react-native-firebase/crashlytics/android/build.gradle
index 9b89ae7..3069e6c 100644
--- a/node_modules/@react-native-firebase/crashlytics/android/build.gradle
+++ b/node_modules/@react-native-firebase/crashlytics/android/build.gradle
@@ -67,6 +67,12 @@ project.ext {
android {
defaultConfig {
multiDexEnabled true
+
+ externalNativeBuild {
+ cmake {
+ arguments "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
+ }
+ }
}
lintOptions {
disable 'GradleCompatible'
@@ -87,7 +93,11 @@ dependencies {
api appProject
implementation platform("com.google.firebase:firebase-bom:${ReactNative.ext.getVersion("firebase", "bom")}")
implementation "com.google.firebase:firebase-crashlytics"
- implementation "com.google.firebase:firebase-crashlytics-ndk"
+ implementation ("com.google.firebase:firebase-crashlytics-ndk") {
+ version {
+ strictly "[19.0.2,)"
+ }
+ }
}

ReactNative.shared.applyPackageVersion()
2 changes: 1 addition & 1 deletion patches/@react-native-firebase/crashlytics/details.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
- Reason: The patch adapts `@react-native-firebase/crashlytics`'s build process to work reliably in our custom environment.
- Upstream PR/issue: Since this is tightly coupled to our specific Gradle configuration, it's not appropriate for upstream inclusion.
- E/App issue: This patch will remain in place to maintain compatibility with our build setup.
- PR introducing patch: N/A
- PR introducing patch: N/A

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not seeing any diff here. What is GitHub seeing that I'm not?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No idea, maybe some spacing or something? Happy to revert

Loading
Loading