From 8c053aead5df04276e0d22a0c429105db3f07dfe Mon Sep 17 00:00:00 2001 From: Graham Mendick Date: Fri, 16 Jan 2026 16:56:02 +0000 Subject: [PATCH 1/2] Exposed back pressed callback so can be disabled This callback prevents the predictive back animation when exiting the app. Apps that use predictive back can disable the callback to restore the exiting animation --- .../src/main/java/com/facebook/react/ReactActivity.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java index 356bc32c0c18..b1440dcc7eca 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java @@ -182,4 +182,8 @@ protected final ReactInstanceManager getReactInstanceManager() { protected final void loadApp(String appKey) { mDelegate.loadApp(appKey); } + + protected OnBackPressedCallback getBackPressedCallback() { + return mBackPressedCallback; + } } From 291f66cae7878259802559e3be916c2e1a659e76 Mon Sep 17 00:00:00 2001 From: Graham Mendick Date: Fri, 16 Jan 2026 19:12:34 +0000 Subject: [PATCH 2/2] Restored to previous value The callback might've been manually disabled, in which case want to leave it disabled --- .../src/main/java/com/facebook/react/ReactActivity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java index b1440dcc7eca..3210128cbe1d 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java @@ -122,11 +122,12 @@ public void onBackPressed() { public void invokeDefaultOnBackPressed() { // Disabling callback so the fallback logic (finish activity) can run // as super.onBackPressed() will call all enabled callbacks in the dispatcher. + boolean enabled = mBackPressedCallback.isEnabled(); mBackPressedCallback.setEnabled(false); super.onBackPressed(); // Re-enable callback to ensure custom back handling works after activity resume // Without this, the callback remains disabled when the app returns from background - mBackPressedCallback.setEnabled(true); + mBackPressedCallback.setEnabled(enabled); } @Override