android fix#29290
Open
chrisnojima wants to merge 4 commits into
Open
Conversation
configureCache is iOS-only native in expo-image 56; unguarded module-load call threw on Android, aborting registerComponent and crashing startup.
Android targets SDK 35+ which enforces edge-to-edge, so pushed stack screens drew content under the system nav bar. Mirror TabScreenWrapper and wrap StackScreenWrapper in RNScreensSafeAreaView with a bottom edge on Android.
The bottom tab bar only hides for screens that live in the app root stack (above the tabs). Other tabs push distinct routes there; Files was the exception because tapping a folder re-pushed fsRoot inside the fsTab stack, keeping the bar visible. Add fsBrowse (same screen as fsRoot, but not a tab root) so on phones it lands in the root stack and hides the tab bar on push, matching every other tab. Route within-Files folder navigation (folder taps, parent nav, conflict /reset banners, destination-picker) through fsBrowse; leave outside-Files entries (navToPath, deeplinks, linking) on fsRoot so they still land in the Files tab. public-reminder dismiss now targets the current route so its replace collapses to setParams instead of a cross-stack replace; daemon treats fsBrowse as an fs screen.
- bump work-runtime 2.11.1->2.11.2, firebase-messaging 25.0.1->25.0.2, msgpack-core 0.9.10->0.9.12 - fix Gradle 9->10 space-assignment deprecations in our build.gradle files (ndkVersion/namespace/multiDexEnabled/signingConfig/maven url) - android:debug now builds+installs+launches MainActivity directly via a script instead of expo run:android, avoiding the broken keybase://expo-development-client deep link (no expo-dev-client bundled)
There was a problem hiding this comment.
Pull request overview
This PR improves the Android developer workflow and fixes several Android/mobile navigation and layout issues, primarily around edge-to-edge safe areas and Files navigation behavior.
Changes:
- Add a custom Android debug script and wire it up as
yarn android:debugto avoidexpo run:android’s dev-client deep link. - Adjust native screen layout wrappers to apply a bottom safe-area inset on Android for non-tab stack screens (edge-to-edge).
- Introduce an
fsBrowseroute and update multiple Files entry points to push folder browsing above the tab bar on phones. - Guard an iOS-only
expo-imageAPI call, and modernize Android Gradle repository configuration / bump a few Android dependency versions.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| shared/scripts/android-debug.sh | New helper script to build/install/launch Android debug app and start Metro without the dev-client deep link. |
| shared/package.json | Updates android:debug to use the new debug script. |
| shared/router-v2/screen-layout.tsx | Applies Android bottom safe-area handling to stack (non-tab) screens as well. |
| shared/fs/routes.tsx | Adds fsBrowse route and factors shared header options for folder screens. |
| shared/fs/common/use-open.tsx | Changes folder-open navigation to push fsBrowse rather than reusing fsRoot. |
| shared/fs/simple-screens/oops.tsx | Updates “open parent” navigation to use fsBrowse. |
| shared/fs/common/daemon.tsx | Treats fsBrowse as an FS screen for daemon in/out lifecycle tracking. |
| shared/fs/browser/destination-picker.tsx | After move/copy, navigates to the destination folder via fsBrowse. |
| shared/fs/banner/reset-banner.tsx | Navigates to a filtered path using fsBrowse instead of FS.navToPath. |
| shared/fs/banner/public-reminder.tsx | Ensures banner dismissal updates params on either fsRoot or fsBrowse, depending on the current screen. |
| shared/fs/banner/conflict-banner.tsx | Navigates to rebased paths using fsBrowse. |
| shared/app/index.native.tsx | Avoids calling an iOS-only ExpoImage.configureCache API on Android. |
| shared/android/build.gradle | Updates Maven repository url syntax (assignment style). |
| shared/android/app/build.gradle | Updates some Android DSL assignments and bumps a few dependency versions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.