react / react/react-native

[0.76][New Arch] Pressable loses background when applying borderless ripple effect

Offen
#48,552 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Issue: Author Provided Repro Type: New Architecture
Vorherrschende Sprache
C++
Sterne
127k
Forks
25.3k
Ø Merge
1 T. 23 Std.
Gemergte PRs (30 T.)
4

Beschreibung

Description

The Pressable component loses its backgroundColor and ripple effect when android_ripple is set with borderless: true.

Notes:
• If Pressable is the only component in the app or if all parent components have transparent backgrounds, the ripple effect works as expected. However, this scenario is not realistic.

Edit 1:
Crazy thing: if you add overflow: hidden to the parent, the Pressable background and ripple works again for some reason. But again, only if the parent and pressable are in the root.

I have two snacks:

  1. Using SDK 51 (old arch), this is working fine:
    https://snack.expo.dev/@wfern/android-pressable-borderless-sdk-51

  2. Using SDK 52 (new arch), where the bug happens:
    https://snack.expo.dev/@wfern/android-pressable-borderless-sdk-52

Steps to reproduce

In the Snack with SDK 52 set Pressable android_ripple borderless to true and see it's background and ripple effect disappear.

React Native Version

0.76.5

Affected Platforms

Runtime - Android

Areas

Fabric - The New Renderer

Output of npx react-native info
info Fetching system and libraries information...
System:
  OS: macOS 15.2
  CPU: (8) arm64 Apple M1
  Memory: 126.64 MB / 8.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 20.17.0
    path: ~/.nvm/versions/node/v20.17.0/bin/node
  Yarn:
    version: 1.22.22
    path: /opt/homebrew/bin/yarn
  npm:
    version: 11.0.0
    path: ~/.nvm/versions/node/v20.17.0/bin/npm
  Watchman:
    version: 2024.12.02.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.16.2
    path: /opt/homebrew/lib/ruby/gems/3.4.0/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 24.1
      - iOS 18.1
      - macOS 15.1
      - tvOS 18.1
      - visionOS 2.1
      - watchOS 11.1
  Android SDK: Not Found
IDEs:
  Android Studio: 2024.1 AI-241.18034.62.2412.12266719
  Xcode:
    version: 16.1/16B40
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.13
    path: /usr/bin/javac
  Ruby:
    version: 3.4.1
    path: /opt/homebrew/opt/ruby/bin/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 15.1.3
    wanted: ^15.1.3
  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: true
  newArchEnabled: true
Stacktrace or Logs
No logs.
Reproducer

https://snack.expo.dev/@wfern/android-pressable-borderless-sdk-52

In this snack set the Pressable ripple borderless to true.

Screenshots and Videos

No response

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem SDK 52 Snack-Reproducer und vergleiche ihn mit dem funktionierenden SDK 51 Snack. Verfolge die Android-Fabric-Behandlung von Pressable für android_ripple mit borderless: true, insbesondere wie übergeordnete Hintergründe und overflow das Rendering beeinflussen. Als abgeschlossen gilt die Aufgabe, wenn der Pressable-Hintergrund und der Ripple im SDK-52-Szenario mit der neuen Architektur sichtbar bleiben.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
android, react-native
Bereich
mobile
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.