Skip to content

ref(feedback): Extend Dialog instead of AlertDialog in SentryUserFeedbackForm - #6338

Open
runningcode wants to merge 4 commits into
9.x.xfrom
no/feedback-form-extend-dialog
Open

runningcode wants to merge 4 commits into
9.x.xfrom
no/feedback-form-extend-dialog

Conversation

@runningcode

@runningcode runningcode commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

📜 Description

SentryUserFeedbackForm now extends android.app.Dialog instead of android.app.AlertDialog. The form never used AlertDialog's title, message, buttons or custom-view slots. It replaced the whole content with its own layout in onCreate.

The default theme changes slightly. For themeResId == 0, AlertDialog used android.R.attr.alertDialogTheme, and Dialog uses android.R.attr.dialogTheme. Showing the form under both in Robolectric gave the same width in portrait and landscape, because the form's layout already fills the available width. The form's contents were already themed with ?android:attr/dialogTheme. What remains:

  • DeviceDefault themes use Animation.DeviceDefault.Dialog instead of Animation.Material.Dialog for the window animation.
  • Apps that styled the form through android:alertDialogTheme need to pass that theme to SentryUserFeedbackForm.Builder(context, themeResId) instead. The changelog says so.

The Builder Javadoc now names android:dialogTheme as the default.

This also drops the FLAG_ALT_FOCUSABLE_IM workaround from #5359. AlertDialog set that flag because it found no text input in its own content, which hid the soft keyboard. Dialog never sets it. The existing test that checks the flag is absent still passes.

💡 Motivation and Context

Changing the superclass breaks binary and source compatibility for anyone calling AlertDialog-only methods on the form (setButton, setMessage, setView, getButton, ...), so it waits for v9.

💚 How did you test it?

  • ./gradlew spotlessApply apiDump
  • ./gradlew :sentry-android-core:testReleaseUnitTest :sentry-samples:sentry-samples-android:compileReleaseKotlin :sentry-android-integration-tests:sentry-uitest-android:compileReleaseAndroidTestKotlin
  • A temporary Robolectric test (not committed) showed the form under dialogTheme and alertDialogTheme on API 35, in portrait and landscape, and compared the window and form widths.

📝 Checklist

  • I added GH Issue ID & Linear ID
  • I added tests to verify the changes.
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled.
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • Review from the native team if needed.
  • No breaking change or entry added to the changelog.
  • No breaking change for hybrid SDKs or communicated to hybrid SDKs.
  • Public API changes reviewed by another Mobile SDK team member or implemented according to the develop docs spec.

🔮 Next steps

  • Check the form on a device or emulator. The width comparison ran in Robolectric only.
  • Mention the new superclass and default theme in the v8 → v9 migration guide (JAVA-732).

🤖 Generated with Claude Code

@linear-code

linear-code Bot commented Oct 21, 2026

Copy link
Copy Markdown

JAVA-494

@sentry

sentry Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
SDK Size io.sentry.tests.size 8.62.0 (1) release

⚙️ sentry-android Build Distribution Settings

@runningcode runningcode added the next-major This should only be merged in the next major version. label Oct 21, 2026
@runningcode
runningcode force-pushed the no/feedback-form-extend-dialog branch 2 times, most recently from ced4589 to 0eb7685 Compare October 22, 2026 12:41
@runningcode
runningcode marked this pull request as ready for review October 22, 2026 15:21
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sentry_dialog_user_feedback);
final @Nullable Window window = getWindow();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this is not needed for Dialog anymore?

@romtsn romtsn left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM with one question

runningcode and others added 4 commits October 27, 2026 13:01
…backForm

The form never used AlertDialog's title, message, buttons or custom
view; it replaces the content with its own layout in onCreate.

Dialog falls back to dialogTheme for theme 0, while AlertDialog uses
alertDialogTheme, so the form now resolves alertDialogTheme itself to
keep the default look unchanged. The FLAG_ALT_FOCUSABLE_IM workaround
goes away because only AlertDialog set that flag.

Resolves JAVA-494

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drop resolveTheme so the form follows Dialog's default of
android:dialogTheme. Showing the form under both themes in Robolectric
gave the same width in portrait and landscape, so the only differences
left are the window animation on DeviceDefault themes and apps that
customize android:alertDialogTheme, which the changelog now covers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@runningcode
runningcode force-pushed the no/feedback-form-extend-dialog branch from 4be78a0 to 425a0fe Compare October 27, 2026 12:03

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

next-major This should only be merged in the next major version.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants