Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
4162390
Apply color animations on tab-switching (Android-only) (#7975)
d4vidi Mar 5, 2025
9205aa0
Update package.json version to 7.44.0 [buildkite skip]
mobileoss Mar 5, 2025
749936c
Fix npm registry and recreate package-lock.json (#7987)
d4vidi Mar 31, 2025
a9a2e8e
fix(sdk35): Apply inset over bottom-tabs (#7991)
d4vidi Apr 3, 2025
9121357
Update package.json version to 7.45.0 [buildkite skip]
mobileoss Apr 6, 2025
4509824
Revert "Feat/rn76 oldarch (#7967)" (#8003)
d4vidi Apr 17, 2025
9b84952
Update package.json version to 7.46.0 [buildkite skip]
mobileoss Apr 17, 2025
1ee3747
Mocked side-menus - support (#8017)
d4vidi May 4, 2025
d3d6961
Update package.json version to 7.47.0 [buildkite skip]
mobileoss May 4, 2025
0bdfb20
Support drawer menus opening as overlay instead of pushing content in…
liatnetach May 27, 2025
a3a05d5
Update package.json version to 7.48.0 [buildkite skip]
mobileoss May 27, 2025
b38690d
Patch-fix some recent side-menu overlay mode changes (#8039)
d4vidi Jun 3, 2025
06195fd
Introduce options to make a floating bottom-tabs (Android) (#8064)
d4vidi Jul 27, 2025
ab1a697
Update package.json version to 7.49.0 [buildkite skip]
mobileoss Jul 27, 2025
18db32e
fix: top bar buttons disappeared when lock screen then unlock sreen (…
gosha212 Jul 30, 2025
37717da
Update package.json version to 7.50.0 [buildkite skip]
mobileoss Jul 30, 2025
2257ec8
Back-compat edge2edge for standard layout, incl. drawBehind
d4vidi Aug 7, 2025
6f66d03
merge master into me
markdevocht Mar 30, 2026
04d5371
first config to get it running
markdevocht Mar 30, 2026
b3ee6c1
bottom bar edge2edge complete?
markdevocht Mar 30, 2026
f0a8c75
statusbar e2e
markdevocht Mar 30, 2026
730eabb
cleanup
markdevocht Mar 30, 2026
57681c9
backward compatiblility
markdevocht Mar 30, 2026
5ea1125
final touches
markdevocht Mar 30, 2026
e0ac2db
Merge remote-tracking branch 'origin/master' into feat/edge2edge-android
markdevocht Mar 30, 2026
e4a6cbd
Fix yarn registry to use public npmjs.org instead of internal wixpress
markdevocht Mar 31, 2026
88bb092
https://github.com/wix/react-native-navigation/issues/8080
markdevocht Mar 31, 2026
0e13a7b
conflict fixes
markdevocht Mar 31, 2026
8350ea4
snapshot updates
markdevocht Mar 31, 2026
8d5f259
more updates
markdevocht Mar 31, 2026
505ae42
Merge remote-tracking branch 'origin/master' into feat/edge2edge-android
markdevocht Apr 9, 2026
7e868ff
update e2e android
markdevocht Apr 9, 2026
9476ae2
snapsot update
markdevocht Apr 9, 2026
04f3328
documentation
markdevocht Apr 9, 2026
64d3d82
added
markdevocht Apr 9, 2026
97e04dd
codex fixes
markdevocht Apr 9, 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
1 change: 1 addition & 0 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ dependencies {
implementation "androidx.constraintlayout:constraintlayout:2.0.4"

implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.activity:activity:1.9.0'
implementation 'androidx.annotation:annotation:1.2.0'
implementation 'com.google.android.material:material:1.2.0-alpha03'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;

import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
import com.facebook.react.modules.core.PermissionAwareActivity;
Expand All @@ -17,10 +18,12 @@
import com.reactnativenavigation.react.JsDevReloadHandler;
import com.reactnativenavigation.react.ReactGateway;
import com.reactnativenavigation.react.CommandListenerAdapter;
import com.reactnativenavigation.utils.SystemUiUtils;
import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry;
import com.reactnativenavigation.viewcontrollers.modal.ModalStack;
import com.reactnativenavigation.viewcontrollers.navigator.Navigator;

import androidx.activity.EdgeToEdge;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
Expand All @@ -36,6 +39,7 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
enableEdgeToEdge();
super.onCreate(savedInstanceState);
if (isFinishing()) {
return;
Expand Down Expand Up @@ -63,7 +67,9 @@ public void onConfigurationChanged(@NonNull Configuration newConfig) {
@Override
public void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
navigator.setContentLayout(findViewById(android.R.id.content));
ViewGroup contentLayout = findViewById(android.R.id.content);
navigator.setContentLayout(contentLayout);
SystemUiUtils.setupSystemBarBackgrounds(this, contentLayout);
}

@Override
Expand All @@ -88,6 +94,7 @@ protected void onPause() {
@Override
protected void onDestroy() {
super.onDestroy();
SystemUiUtils.tearDown();
if (navigator != null) {
navigator.destroy();
}
Expand Down Expand Up @@ -146,6 +153,25 @@ public void onReload() {
navigator.destroyViews();
}

/**
* Enables edge-to-edge display only if the app theme sets
* {@code windowOptOutEdgeToEdgeEnforcement} to {@code false} (API 35+).
* By default, edge-to-edge is not enabled. Override to customize.
* Called at the start of onCreate, before super.onCreate.
*/
protected void enableEdgeToEdge() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
android.content.res.TypedArray a = getTheme().obtainStyledAttributes(
new int[]{android.R.attr.windowOptOutEdgeToEdgeEnforcement});
boolean optOut = a.getBoolean(0, true);
a.recycle();
if (!optOut) {
EdgeToEdge.enable(this);
SystemUiUtils.activateEdgeToEdge();
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.

The new internal edge-to-edge flag is only set in the default NavigationActivity.enableEdgeToEdge() implementation via SystemUiUtils.activateEdgeToEdge(). If an app overrides enableEdgeToEdge() and calls EdgeToEdge.enable(this) itself, the override never reaches that helper, so ComponentViewController still treats edge-to-edge as inactive and skips forwarding nav-bar insets to SafeAreaView, while nav-bar colors continue going through the non-edge-to-edge path. That is also the exact override pattern documented in the new guide, so custom adopters of this API will get partially broken edge-to-edge behavior unless they know to call an extra internal helper.

}
}
}

protected void addDefaultSplashLayout() {
View view = new View(this);
setContentView(view);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ open class ModalHostLayout(reactContext: ThemedReactContext) : ViewGroup(reactCo
}

@TargetApi(23)
override fun dispatchProvideStructure(structure: ViewStructure) {
mHostView.dispatchProvideStructure(structure)
override fun dispatchProvideStructure(structure: ViewStructure?) {
structure?.let { mHostView.dispatchProvideStructure(it) }
}

override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,8 @@
import android.text.TextUtils;
import androidx.annotation.Nullable;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.common.ReactConstants;
import com.facebook.react.views.text.ReactFontManager;
import com.facebook.react.views.text.ReactTextShadowNode;
import com.facebook.react.common.ReactConstants;
import java.util.ArrayList;
import java.util.List;

Expand Down
Loading