Skip to content

Extract Feedback feature into a separate module#9088

Open
landomen wants to merge 8 commits into
developfrom
feature/landomen/feedback-impl
Open

Extract Feedback feature into a separate module#9088
landomen wants to merge 8 commits into
developfrom
feature/landomen/feedback-impl

Conversation

@landomen

@landomen landomen commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Task/Issue URL: https://app.asana.com/1/137249556945/project/1214295689610258/task/1216232692978954?focus=true
Tech Design URL (if applicable): https://app.asana.com/1/137249556945/project/1210594645151737/task/1214800684060464?focus=true

Description

Extracts the Feedback feature from the :app module into a new :feedback module so it can be reused by several other features.

Steps to test this PR

Smoke check Feedback and entry points

  • Settings → Share Feedback — tap opens the initial "How do you feel about DDG?" screen.
  • Browser overflow / prompted LaunchFeedbackView — whichever surface fires BrowserViewModel's LaunchFeedbackView command opens the feedback screen.
  • DuckChat Settings → Share Feedback — opens the feedback screen.
  • Duck AI Input Screen → Share Feedback action — opens the feedback screen.
  • Privacy Dashboard → Report / Feedback link — opens the feedback screen.
  • VPN Report Breakage flow (AppFeedbackContract) — the "report app breakage" path launches the shared feedback intent.
  • Subscription "General" feedback — from Settings, "Pro" feedback entry launches SubscriptionFeedbackActivity (separate flow; verify it still launches too and is not broken by the split).
  • Submitting closes the screen. When entered from Settings, a "Thanks for the feedback!" snackbar appears on the settings root.
  • Submitting from a fire-and-forget entry (BrowserActivity, DuckChat, Privacy Dashboard, VPN) does not show a snackbar and does not crash.
  • Opening the feedback screen fires the "feedback shown" pixel.
  • Positive path fires the positive submission pixel.
  • Each negative main reason fires the correct sub-reason pixel on submit.
  • Broken-site submission fires the broken-site pixel with the URL.
  • Cancelling fires the appropriate cancellation pixel (if one existed before the split).

UI changes

No UI changes


Note

Medium Risk
Large modular refactor with many entry points; wrong wiring could break feedback launches or analytics, and About no longer exposes feedback where it did before.

Overview
Moves in-app Share Feedback out of :app into new :feedback-api / :feedback-impl modules and wires callers through shared navigation APIs.

Launch paths: BrowserActivity, VPN breakage (AppFeedbackContract), and similar flows now start feedback via GlobalActivityStarter and FeedbackScreenNoParams instead of FeedbackActivity in :app. Settings registers FeedbackLauncher.feedbackContract() for result-based launches and still shows the thanks snackbar; feedback copy strings move out of :app locales while thanksForTheFeedback stays in :app for that snackbar.

Removed from :app: manifest entry for FeedbackActivity, app-local FeedbackContract, NetworkModule feedback submitter wiring, and feedback submission pixel names in AppPixelName. Lint baseline drops entries for deleted feedback fragments.

About screen: share-feedback commands, activity-result flow, and unified-subscription feedback routing are removed from About (Settings still handles Share Feedback with subscription unified feedback when applicable).

Reviewed by Cursor Bugbot for commit ccdc960. Bugbot is set up for automated code reviews on this repo. Configure here.

@landomen landomen force-pushed the feature/landomen/feedback-impl branch from ede95df to 67c688a Compare July 3, 2026 12:15
@landomen landomen force-pushed the feature/landomen/feedback-impl branch from 67c688a to ccdc960 Compare July 3, 2026 12:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant