ReadyNative
Tester feedbackPro

Tester feedback

Tester feedback for an Expo app, compared: Feedback sheet, or none - Expo Go support and what each option installs.

Pro

Hey - here's how tester feedback works in ReadyNative.

This category owns the in-app channel testers use to tell you what is wrong: the sheet they open, and the one call that delivers what they wrote.

@/lib/feedback always exists, whichever option you pick: feedback.open(), feedback.send(report) and feedbackEnabled read the same in both, and feedback/none is a no-op. Calls you write against the shim keep working when you switch options, and nothing crashes when a webhook URL or Sentry DSN is missing - every option degrades to a no-op.

  • feedback - testers shake the device or tap "Send feedback" in Settings, write a note, and optionally attach a screenshot and an address to reply to. The report carries the app version, build number, update id, OS and the current route, so "the totals are wrong" arrives with enough to reproduce it. The sheet is on by default in development and preview builds and off in production; features.feedback in readynative.config.ts sets it to "testers" (the default), "everyone" or "off". Pick it when a build goes to people who are not you.
  • none - nothing opens and nothing is sent: feedback.open() does nothing, feedback.send() resolves to undefined, and there is no Settings row. Right when you ship no tester builds.

Reports are delivered through one list of sinks in src/lib/feedback-sinks.ts, and the first one available wins:

  • a webhook, when EXPO_PUBLIC_FEEDBACK_WEBHOOK_URL is set;
  • Sentry User Feedback, when crash/sentry is selected with a DSN and the user has given crash consent;
  • otherwise a prefilled email to urls.support.

Adding or removing a destination is one line in that list.

This category is part of ReadyNative Pro.

Options

One option per category - --feedback <option> picks it:

bun run setup --feedback feedback
OptionLabelExpo GoHint
feedbackFeedback sheet (default)yesshake or Settings row → webhook, Sentry or email · Expo Go OK
noneNo feedbackyesfeedback.open() is a no-op, no Settings row

On this page

Get ReadyNative