Skip to main content
Question

Paywalls v2: Icon components (e.g. close button) have no accessibility label — unlike Image components

  • August 2, 2026
  • 1 reply
  • 15 views

Forum|alt.badge.img

Following up on Tarek's answer in the closed thread "Accessibility configuration support in Paywalls?" (community.revenuecat.com/sdks-51/accessibility-configuration-support-in-paywalls-7709) - that thread is closed for comments, so filing the concrete example he asked for as a new post.

 

Component: the built-in paywall close (X) button, a `type: icon` component (icon_name "x"), not an image.

 

Issue 1 - no accessibility label field: Image components support alt text (confirmed via the media gallery's "Image preview" panel). Icon components have no equivalent field anywhere in the builder - checked the Icon, Button, and Stack property panels for the close button, none of them expose a label/content-description field.

 

Issue 2 - Android traversal order: on Android the close button also renders after the entire scrollable body content in the accessibility tree (confirmed via adb shell uiautomator dump on a real device with TalkBack on), even though the paywall's own component JSON declares "header" (containing the close button) before "stack" (body). A TalkBack user has to swipe through the full pricing/feature/CTA list before ever reaching it - in practice indistinguishable from it never getting focus.

 

Together these make the close button effectively unreachable on Android and generically-labeled ("button") on iOS VoiceOver.

 

Requests:

1. Add alt-text/content-description support to icon components (parity with image components).

2. Make Android's rendered traversal order consistent with the declared header/stack order in the component JSON.

 

1 reply

guilherme
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • August 3, 2026

Hey ​@Alperen Acikgoz - thanks for following up on this.

I've passed the two points on to our Paywalls team internally, and I'll keep nudging on our side.

As a potential workaround (untested, but trying to unblock you as is), could you try putting a Text element inside the same Button as the Icon at a very small font size. Screen readers read the text as the button's label. We haven't tested this on device so I can't promise how it renders at your sizing, but it should get you a labelled control without reworking your header!

On the Android traversal order, could you share the project and Paywall you tested on, along with which RevenueCat SDK and version you're on (native Android, or a hybrid like Flutter, React Native or KMP), plus the device and Android version you saw it on? 

If you'd rather not post those publicly, just feel free to open a Support Ticket and reference this thread too.