Replace Duck.ai onboarding experiment with a feature toggle#8938
Open
lmac012 wants to merge 7 commits into
Open
Replace Duck.ai onboarding experiment with a feature toggle#8938lmac012 wants to merge 7 commits into
lmac012 wants to merge 7 commits into
Conversation
The Duck.ai onboarding experiment has concluded and experiment-specific metrics instrumentation is no longer needed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Introduces the permanent feature toggle (default FALSE) and the availability interface that will replace the experiment manager. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…bility Replaces experiment enrollment logic with a plain feature toggle check throughout WelcomePageViewModel, BrandDesignUpdatePageViewModel, and NewUserOnboardingPlanProvider. Behavior matches the former TREATMENT_WITH_SEARCH_DEFAULT variant (isSearchDefault = true). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This suppressor kept the legacy omnibar for experiment enrollees. Now that enrollment is replaced by a plain feature toggle, it is no longer needed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Deletes the experiment manager and its test, and removes the now-unused onboardingDuckAiExperimentMay26 toggle and DuckAiOnboardingExperimentCohort enum from ExtendedOnboardingFeatureToggles. Also fixes test mocks for the Boolean suspend function to avoid unboxing NPE. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
isDuckAiOnboardingEnabled() now also requires DuckChat.isEnabled() and AndroidBrowserConfigFeature.singleTabFireDialog().isEnabled(), matching the gate that existed in the old experiment manager. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This duckchat-api plugin point was added only to suppress the native input field for Duck.ai onboarding experiment enrollees. With the experiment and its suppressor removed, the API has no implementers, so RealDuckChat now reads the nativeInputField toggle directly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task/Issue URL: https://app.asana.com/1/137249556945/project/1205648422731273/task/1215861422445747?focus=true
Tech Design URL (if applicable):
Description
The Duck.ai onboarding experiment (
onboardingDuckAiExperimentMay26) has concluded and the winning variant (TREATMENT_WITH_SEARCH_DEFAULT) is being promoted to a permanent feature. This PR removes the experiment scaffolding and replaces it with a plainduckAiOnboardingfeature toggle (defaultFALSE). When the toggle is enabled, the input screen preview is always shown with search as the default (matchingTREATMENT_WITH_SEARCH_DEFAULT).Steps to test this PR
Duck.ai onboarding disabled (default)
extendedOnboarding.duckAiOnboardingtoggle off, run a fresh-install onboarding flow.Duck.ai onboarding enabled
extendedOnboarding.duckAiOnboarding, and ensure Duck.ai is enabled andandroidBrowserConfig.singleTabFireDialogis enabled.No UI changes
Note
Medium Risk
Touches first-run onboarding and Duck Chat native-input behavior for users who were on the old experiment cohorts; rollout now depends on the new toggle and prerequisites instead of experiment enrollment.
Overview
Removes the May 2026 Duck.ai onboarding experiment (
onboardingDuckAiExperimentMay26), including enrollment/cohort logic, experiment metrics pixels, and the hook that suppressed the native unified input for enrolled users.New gating:
DuckAiOnboardingAvailabilitychecks Duck Chat enabled,singleTabFireDialog, and the newextendedOnboarding.duckAiOnboardingtoggle (default off). Welcome/brand-design onboarding andNewUserOnboardingPlanProvideruse this instead ofenroll(); when enabled, the input-screen preview always uses search as default (winning treatment behavior).Cleanup: Deletes
DuckAiOnboardingExperimentManager,DuckAiOnboardingExperimentMetrics,OnboardingExperimentNativeInputFieldSuppressor, and theNativeInputFieldSuppressorplugin API;RealDuckChatno longer applies suppressors when caching native-input config. CTA/browser: Removes experiment metric calls fromCtaViewModeland stops callingonDuckAiFireButtonCtaPressed()when the Duck AI fire-button CTA is shown (early return unchanged). Tests updated accordingly.Reviewed by Cursor Bugbot for commit bca8125. Bugbot is set up for automated code reviews on this repo. Configure here.