Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unexpected color given in StatusBar._updatePropsStack when using PlatformColor for theming #48402

Open
Glavotaner opened this issue Dec 27, 2024 · 1 comment
Labels
Component: StatusBar Issue: Author Provided Repro This issue can be reproduced in Snack or an attached project.

Comments

@Glavotaner
Copy link

Description

Setting a PlatformColor value as the backgroundColor prop of StatusBar causes an "Unexpected color given in StatusBar._updatePropsStack" error.

Steps to reproduce

  1. Install and run the application on an Android device or emulator which supports Material You theming with npm run android
  2. Notice the background colour was appropriately applied to the View defined in line 27
  3. Uncomment line 25 (StatusBar.backgroundColor)
  4. The app throws an "Unexpected color given in StatusBar._updatePropsStack" error

React Native Version

0.76.5

Affected Platforms

Runtime - Android

Output of npx react-native info

System:
  OS: macOS 15.1.1
  CPU: (8) arm64 Apple M1
  Memory: 121.88 MB / 8.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 23.3.0
    path: /opt/homebrew/bin/node
  Yarn:
    version: 1.22.22
    path: /opt/homebrew/bin/yarn
  npm:
    version: 10.9.0
    path: /opt/homebrew/bin/npm
  Watchman:
    version: 2024.11.25.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods: Not Found
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 24.2
      - iOS 18.2
      - macOS 15.2
      - tvOS 18.2
      - visionOS 2.2
      - watchOS 11.2
  Android SDK:
    API Levels:
      - "28"
      - "29"
      - "30"
      - "31"
      - "32"
      - "33"
      - "34"
      - "35"
    Build Tools:
      - 28.0.3
      - 29.0.2
      - 30.0.2
      - 30.0.3
      - 31.0.0
      - 33.0.0
      - 34.0.0
      - 35.0.0
    System Images:
      - android-24 | Google APIs ARM 64 v8a
      - android-24 | Google APIs Intel x86 Atom
      - android-24 | Google APIs Intel x86 Atom_64
      - android-29 | Google APIs ARM 64 v8a
      - android-31 | Google Play ARM 64 v8a
      - android-32 | Google Play ARM 64 v8a
      - android-S | Google Play ARM 64 v8a
    Android NDK: Not Found
IDEs:
  Android Studio: 2024.1 AI-241.18034.62.2411.12071903
  Xcode:
    version: 16.2/16C5032a
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.13
    path: /usr/bin/javac
  Ruby:
    version: 2.7.5
    path: /Users/marin/.rvm/rubies/ruby-2.7.5/bin/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 15.0.1
    wanted: 15.0.1
  react:
    installed: 18.3.1
    wanted: 18.3.1
  react-native:
    installed: 0.76.5
    wanted: 0.76.5
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: Not found
  newArchEnabled: false

Stacktrace or Logs

(NOBRIDGE) ERROR  Invariant Violation: Unexpected color given in StatusBar._updatePropsStack

Reproducer

https://github.com/Glavotaner/InvariantStatusBar

Screenshots and Videos

No response

@shubhamguptadream11
Copy link
Collaborator

Issue:
For the StatusBar component, it seems that we are currently only accepting integer values for color, and not PlatformColor values from Android.

You can see the relevant code here:

When a PlatformColor is passed, processedColor becomes an object, which causes an error. This behavior appears to be intentional, but the exact reason for not supporting PlatformColor is unclear.

Proposed Solution:
We can use ColorPropConverter.getColor, which parses PlatformColor values correctly. However, for this solution to work, we would also need to update StatusBarModule to accept these values as valid inputs.

@cortinico , what are your thoughts on this approach?

@shubhamguptadream11 shubhamguptadream11 added Issue: Author Provided Repro This issue can be reproduced in Snack or an attached project. and removed Needs: Triage 🔍 labels Dec 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: StatusBar Issue: Author Provided Repro This issue can be reproduced in Snack or an attached project.
Projects
None yet
Development

No branches or pull requests

3 participants