Skip to content

Edge-to-edge cleanup (expo-status-bar, expo-navigation-bar)#43276

Merged
zoontek merged 32 commits intomainfrom
edge-to-edge-cleanup
Feb 24, 2026
Merged

Edge-to-edge cleanup (expo-status-bar, expo-navigation-bar)#43276
zoontek merged 32 commits intomainfrom
edge-to-edge-cleanup

Conversation

@zoontek
Copy link
Copy Markdown
Contributor

@zoontek zoontek commented Feb 19, 2026

Why

Android (and Expo) now enforces edge-to-edge, making several StatusBar / NavigationBar APIs obsolete. This PR deprecate and no-op those APIs.

Those APIs are:

But we can also includes some long-time deprecated functions and props, like networkActivityIndicatorVisible (deprecated since iOS 13 release) or androidNavigationBar.visible / expo-navigation-bar legacyVisible (deprecated 3 years ago)

How

@expo/config-plugins

  • Deprecate and no-op androidStatusBar.backgroundColor and androidStatusBar.translucent and emit a warning in case of usage
  • Enforce android:statusBarColor to be @android:color/transparent

@expo/config-types

  • Deprecate androidStatusBar.backgroundColor, androidStatusBar.translucent and androidNavigationBar

@expo/prebuild-config

  • Remove androidNavigationBar.enforceContrast property handling in withEdgeToEdge (it has been moved to the expo-navigation-bar plugin config)
  • Remove androidNavigationBar.visible property handling / warning
  • Deprecate and no-op androidNavigationBar.backgroundColor property
  • Enforce android:navigationBarColor to be @android:color/transparent

expo-navigation-bar

  • Deprecate and no-op setBackgroundColorAsync, getBackgroundColorAsync, setBorderColorAsync, getBorderColorAsync, setBehaviorAsync, getBehaviorAsync, setPositionAsync, unstable_getPositionAsync and getButtonStyleAsync functions. Remove their native Android implementations
  • Deprecate and no-op borderColor, backgroundColor, behavior, position plugin options
  • Add the enforceContrast plugin option. Fallback to androidNavigationBar.enforceContrast if androidNavigationBar is set
  • Remove legacyVisible property handling / warning
  • Remove the (now unnecessary) @react-native/normalize-colors dependency

expo-status-bar

  • Deprecate and no-op the backgroundColor, networkActivityIndicatorVisible, and translucent StatusBar props
  • Deprecate and no-op the setStatusBarBackgroundColor, setStatusBarNetworkActivityIndicatorVisible, and setStatusBarTranslucent functions

Other

  • Remove deprecated NavigationBar screen examples from the test app

Test Plan

  1. Run expo-navigation-bar, expo-status-bar , @expo/config-plugins and @expo/prebuild-config packages and plugins unit tests
  2. Run npx expo prebuild on a bare Android project with the following app.json and verify:
    • android:statusBarColor is @android:color/transparent in styles.xml
    • android:navigationBarColor is @android:color/transparent in styles.xml
    • Build warnings are emitted for each deprecated property used

Checklist

@zoontek zoontek requested a review from brentvatne February 19, 2026 13:56
@zoontek zoontek changed the title Edge-to-edge cleanup (expo-router, expo-status-bar, expo-navigation-bar) Edge-to-edge cleanup (expo-status-bar, expo-navigation-bar) Feb 19, 2026
@expo-bot expo-bot added the bot: suggestions ExpoBot has some suggestions label Feb 19, 2026
@expo-bot
Copy link
Copy Markdown
Collaborator

expo-bot commented Feb 19, 2026

The Pull Request introduced fingerprint changes against the base commit: 36a8bff

Fingerprint diff
[
  {
    "op": "changed",
    "beforeSource": {
      "type": "dir",
      "filePath": "../../packages/expo-navigation-bar/android",
      "reasons": [
        "expoAutolinkingAndroid"
      ],
      "hash": "12355caa2f60471a3d7f098a7218cfb74493f1f5"
    },
    "afterSource": {
      "type": "dir",
      "filePath": "../../packages/expo-navigation-bar/android",
      "reasons": [
        "expoAutolinkingAndroid"
      ],
      "hash": "dcc4f711a9b26866c05609dd10c2f424a3c7b791"
    }
  }
]

Generated by PR labeler 🤖

Copy link
Copy Markdown
Collaborator

@alanjhughes alanjhughes left a comment

Choose a reason for hiding this comment

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

Looks good. You'll need to clean the build folder in expo-navigation-bar and rebuild for the check packages check to pass

@zoontek
Copy link
Copy Markdown
Contributor Author

zoontek commented Feb 19, 2026

@alanjhughes Done ✅

@zoontek zoontek force-pushed the edge-to-edge-cleanup branch from 9260eb4 to 784bb38 Compare February 19, 2026 14:23
@expo-bot expo-bot added bot: passed checks ExpoBot has nothing to complain about and removed bot: suggestions ExpoBot has some suggestions labels Feb 19, 2026
@zoontek zoontek marked this pull request as ready for review February 19, 2026 14:25
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 19, 2026

Subscribed to pull request

File Patterns Mentions
docs/** @amandeepmittal
packages/@expo/config-plugins/** @EvanBacon, @brentvatne
packages/@expo/config-types/** @EvanBacon, @douglowder
packages/@expo/prebuild-config/** @EvanBacon
packages/expo-navigation-bar/** @EvanBacon
packages/expo-router/** @EvanBacon, @Ubax, @hassankhan, @kitten
packages/expo-status-bar/** @brentvatne

Generated by CodeMention

Copy link
Copy Markdown
Member

@amandeepmittal amandeepmittal left a comment

Choose a reason for hiding this comment

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

Docs changes look good to me!

Please generate unversioned JSON files. It's basically running the following command for each package:

et gdad -p expo-status-bar

et gdad -p expo-navigation-bar

For more information, kindly see: https://github.com/expo/expo/blob/main/docs/README.md#update-api-reference-docs.

@zoontek
Copy link
Copy Markdown
Contributor Author

zoontek commented Feb 20, 2026

@amandeepmittal Done, thank you.

@zoontek zoontek force-pushed the edge-to-edge-cleanup branch 2 times, most recently from 1ce4974 to fe8c9f1 Compare February 23, 2026 10:47
@expo-bot expo-bot added bot: suggestions ExpoBot has some suggestions bot: passed checks ExpoBot has nothing to complain about and removed bot: passed checks ExpoBot has nothing to complain about bot: suggestions ExpoBot has some suggestions labels Feb 23, 2026
@zoontek zoontek force-pushed the edge-to-edge-cleanup branch from 7b74de9 to ff6a8fb Compare February 23, 2026 16:10
@zoontek zoontek merged commit 118c09d into main Feb 24, 2026
72 of 77 checks passed
@zoontek zoontek deleted the edge-to-edge-cleanup branch February 24, 2026 09:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot: fingerprint changed bot: passed checks ExpoBot has nothing to complain about

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants