Skip to content

Feedback form doesn't open on iOS while a native-stack sheet is presented #6875

Open

Description

@tareksabry1337

Versions

@sentry/react-native 8.30.0, React Native 0.86.3 (New Architecture), Expo 57, expo-router 57.0.24, react-native-screens 4.26.2, iOS simulator.

What happens

On iOS, the feedback form doesn't appear when the current screen is a native-stack modal (we hit it on presentation: 'formSheet'). Shake-to-report and showFeedbackForm() both do nothing on those screens, and there's no JS error. The same calls work on regular screens.

The native log shows why:

Attempt to present <RCTFabricModalHostViewController> on <UIViewController> (from <UIViewController>) which is already presenting <RNSScreen>.

FeedbackFormProvider renders the form inside a React Native Modal. Because the provider sits at the app root (via Sentry.wrap), the Modal is presented from the root view controller. When a native-stack sheet is open, that controller is already presenting the sheet, so UIKit refuses the second presentation.

This is easy to miss: many apps open settings, payments and similar flows as sheets, and those are the screens where users can't report bugs.

Steps to reproduce

  1. App wrapped with Sentry.wrap, feedbackIntegration enabled, using a native stack (expo-router or @react-navigation/native-stack).
  2. Open any screen with presentation: 'formSheet'.
  3. Call Sentry.showFeedbackForm() or shake the device.
  4. Nothing appears, and the "already presenting" message shows up in the device log.

What we did

On iOS we render the form inside FullWindowOverlay from react-native-screens instead of Modal. That adds the form above everything in the key window, including presented sheets, and typing, submitting and swipe-to-close all keep working. We left Android on Modal. Since the SDK can't assume react-native-screens is installed, an option to supply your own container for the form, or presenting from the topmost view controller, may be a better fit for the SDK.

Activity

  1. linear-code commented on Oct 12, 2026

    @linear-code
  2. self-assigned this
    on Oct 12, 2026
  3. antonis commented on Oct 12, 2026

    @antonis
    Contributor

    Thank you for reporting. We will investigate this and iterate back 🙇

  4. antonis commented on Oct 13, 2026

    @antonis
    Contributor

    Thanks again for reporting @tareksabry1337 🙇
    We are going to experiment with adding support for this case with #6882
    Another current workaround is to use the form component directly in your UI, but you would loose some of the out of the box functionality.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions