From c8cfaa341e7954f740d1141e3834e15a7dd6c922 Mon Sep 17 00:00:00 2001 From: sbs44 <83440025+sbs44@users.noreply.github.com> Date: Fri, 6 Feb 2026 06:35:35 -0500 Subject: [PATCH] feat(feedback): add autoCorrect and spellCheck config - Add optional autoCorrect and spellCheck props to FeedbackGeneralConfiguration - Pass props through to all three TextInput elements (default: true) - Add autoCapitalize="none" to email input to prevent iOS capitalization - Add tests for prop forwarding, defaults, and email autoCapitalize --- CHANGELOG.md | 7 +++ .../core/src/js/feedback/FeedbackWidget.tsx | 9 ++++ .../src/js/feedback/FeedbackWidget.types.ts | 14 ++++++ .../test/feedback/FeedbackWidget.test.tsx | 31 ++++++++++++ .../FeedbackWidget.test.tsx.snap | 42 ++++++++++++++++ .../FeedbackWidgetManager.test.tsx.snap | 49 +++++++++++++++++++ 6 files changed, 152 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 091fc015cf..6e37bbe015 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,13 @@ > make sure you follow our [migration guide](https://docs.sentry.io/platforms/react-native/migration/) first. +## Unreleased + +### Features + +- Add `autoCorrect` and `spellCheck` config options to `FeedbackWidget` ([#5627](https://github.com/getsentry/sentry-react-native/pull/5627)) +- Add `autoCapitalize="none"` to `FeedbackWidget` email input ([#5627](https://github.com/getsentry/sentry-react-native/pull/5627)) + ## 7.12.0 ### Features diff --git a/packages/core/src/js/feedback/FeedbackWidget.tsx b/packages/core/src/js/feedback/FeedbackWidget.tsx index 2725b3747a..5ecbe707c7 100644 --- a/packages/core/src/js/feedback/FeedbackWidget.tsx +++ b/packages/core/src/js/feedback/FeedbackWidget.tsx @@ -261,6 +261,8 @@ export class FeedbackWidget extends React.Component { if (onFormClose) { onFormClose(); @@ -310,6 +312,8 @@ export class FeedbackWidget extends React.Component this.setState({ name: value })} + autoCorrect={false} + spellCheck={false} /> )} @@ -325,6 +329,9 @@ export class FeedbackWidget extends React.Component this.setState({ email: value })} /> @@ -342,6 +349,8 @@ export class FeedbackWidget extends React.Component this.setState({ description: value })} multiline + autoCorrect={autoCorrect} + spellCheck={spellCheck} /> {(config.enableScreenshot || imagePickerConfiguration.imagePicker || this._hasScreenshot()) && ( diff --git a/packages/core/src/js/feedback/FeedbackWidget.types.ts b/packages/core/src/js/feedback/FeedbackWidget.types.ts index d3878dcfb0..e73a4b00f1 100644 --- a/packages/core/src/js/feedback/FeedbackWidget.types.ts +++ b/packages/core/src/js/feedback/FeedbackWidget.types.ts @@ -60,6 +60,20 @@ export interface FeedbackGeneralConfiguration { */ enableTakeScreenshot?: boolean; + /** + * Enable auto-correct for text inputs. + * + * @default true + */ + autoCorrect?: boolean; + + /** + * Enable spell check for text inputs. + * + * @default true + */ + spellCheck?: boolean; + /** * Fill in email/name input fields with Sentry user context if it exists. * The value of the email/name keys represent the properties of your user context. diff --git a/packages/core/test/feedback/FeedbackWidget.test.tsx b/packages/core/test/feedback/FeedbackWidget.test.tsx index 1e424cde77..5432edc8da 100644 --- a/packages/core/test/feedback/FeedbackWidget.test.tsx +++ b/packages/core/test/feedback/FeedbackWidget.test.tsx @@ -149,6 +149,37 @@ describe('FeedbackWidget', () => { expect(toJSON()).toMatchSnapshot(); }); + it('passes autoCorrect and spellCheck props to message input', () => { + const { getByTestId } = render( + , + ); + + expect(getByTestId('sentry-feedback-message-input').props.autoCorrect).toBe(false); + expect(getByTestId('sentry-feedback-message-input').props.spellCheck).toBe(false); + }); + + it('defaults autoCorrect and spellCheck to true on message input', () => { + const { getByTestId } = render(); + + expect(getByTestId('sentry-feedback-message-input').props.autoCorrect).toBe(true); + expect(getByTestId('sentry-feedback-message-input').props.spellCheck).toBe(true); + }); + + it('hardcodes autoCorrect and spellCheck to false on name and email inputs', () => { + const { getByTestId } = render(); + + expect(getByTestId('sentry-feedback-name-input').props.autoCorrect).toBe(false); + expect(getByTestId('sentry-feedback-name-input').props.spellCheck).toBe(false); + expect(getByTestId('sentry-feedback-email-input').props.autoCorrect).toBe(false); + expect(getByTestId('sentry-feedback-email-input').props.spellCheck).toBe(false); + }); + + it('sets autoCapitalize to none on email input', () => { + const { getByTestId } = render(); + + expect(getByTestId('sentry-feedback-email-input').props.autoCapitalize).toBe('none'); + }); + it('renders correctly', () => { const { getByPlaceholderText, getByText, getByTestId, queryByText } = render(); diff --git a/packages/core/test/feedback/__snapshots__/FeedbackWidget.test.tsx.snap b/packages/core/test/feedback/__snapshots__/FeedbackWidget.test.tsx.snap index a3841f1597..5e8acf336f 100644 --- a/packages/core/test/feedback/__snapshots__/FeedbackWidget.test.tsx.snap +++ b/packages/core/test/feedback/__snapshots__/FeedbackWidget.test.tsx.snap @@ -73,8 +73,10 @@ exports[`FeedbackWidget matches the snapshot with custom styles 1`] = ` Name