Skip to content

fix(feedback): Improve dialog keyboard access and input contrast - #26194

Open
david-kirkland wants to merge 1 commit into
getsentry:developfrom
david-kirkland:feat/feedback-accessibility
Open

david-kirkland wants to merge 1 commit into
getsentry:developfrom
david-kirkland:feat/feedback-accessibility

Conversation

@david-kirkland

Copy link
Copy Markdown

Fixes #26081

Why: Improve the feedback dialog’s accessibility:

Escape-to-close is also improved, though its absence alone is not necessarily a WCAG violation.

How to review: Check dialog focus, keyboard behavior, accessible naming, and field contrast.

@david-kirkland
david-kirkland requested a review from a team as a code owner November 7, 2026 02:41
@david-kirkland
david-kirkland requested review from logaretm and msonnb and removed request for a team November 7, 2026 02:41
@github-actions github-actions Bot added the external PR from an external contributor label Nov 7, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 67b5d1d. Configure here.

} else {
dialog.setAttribute('open', '');
dialog.querySelector<HTMLElement>('[autofocus]')?.focus();
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

showModal throw bricks the widget

High Severity

showModal() is called without a try/catch, while isOpen is already set to true. showModal() throws InvalidStateError when the dialog is disconnected or the document is sandboxed without allow-modals. That exception escapes the layout effect, and later open() calls no-op because isOpen stays true, so the widget never opens again. The missing-showModal fallback never runs in these cases.

Additional Locations (1)
Fix in Cursor Fix in Web

Triggered by project rule: PR Review Guidelines for Cursor Bot

Reviewed by Cursor Bugbot for commit 67b5d1d. Configure here.

}
renderContent(false);
DOCUMENT.body.style.overflow = originalOverflow;
restoreFocus();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Focus restored too early on submit

Medium Severity

close() always calls restoreFocus(), and successful submit calls close() before the success message appears. Focus therefore moves to the still-hidden default launcher (aria-hidden / visibility: hidden) while the thank-you toast is on screen. If the toast later times out, close() runs again and can steal focus from whatever the user moved to.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 67b5d1d. Configure here.

This branch has not been deployed

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

Labels

external PR from an external contributor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dialog lacks accessible name and keyboard focus handling; default input boundaries have low contrast

1 participant