Skip to content

Subscriptions: use experiment cohort for performance optimized paywalls - #9914

Merged
shakyShane merged 4 commits into
developfrom
sosbourne/perf-paywall-cohort
Oct 5, 2026
Merged

shakyShane merged 4 commits into
developfrom
sosbourne/perf-paywall-cohort

Conversation

@shakyShane

@shakyShane shakyShane commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Task/Issue URL: https://app.asana.com/1/137249556945/task/1219056538070932
Related Privacy Config PR: duckduckgo/privacy-configuration#6002
Tech Design URL (if applicable):
API Proposals URL(s) (if applicable):

Description

  • now uses the 'cohorts' support from privacy config to enable a 50/50 split of performanceOptimizedPaywalls
    • this helps to solve an attribution problem I would've had, where the impact of the performance work might have been under counted because of the way I was going to use the new vs old paths + clicks as the metric.

Steps to test this PR

Unsupported - this proves the change makes no difference to old app users

  • tap 'VPN' or other entry point
  • verify the URL used is the regular format like /subscriptions?featurePage=duckai
  • verify it DOES NOT include the experiment param experiment_perfpaywall

Supported - this proves the change will take effect when minSupportedVersion is eventually used in the remote config

  • I used a version of the remote config PR with this patch

    Index: overrides/android-override.json
    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
    ===================================================================
    diff --git a/overrides/android-override.json b/overrides/android-override.json
    --- a/overrides/android-override.json	(revision d34b3045e90cc5d27691c615d5f13a31c8040d75)
    +++ b/overrides/android-override.json	(date 1790861563871)
    @@ -4509,7 +4509,7 @@
                         }
                     },
                     "performanceOptimizedPaywalls": {
    -                    "state": "disabled",
    +                    "state": "enabled",
                         "cohorts": [
                             {
                                 "name": "control",
    
  • tap 'VPN' or other entry point

  • verify the URL used is the new format like /subscriptions/new/mobile/duckai

  • verify it DOES include the experiment param experiment_perfpaywall=control|treatment


cohort path + query
unsupported /subscriptions?origin=funnel_appmenu_android
control /subscriptions/new/mobile/vpn?origin=funnel_appmenu_android&trial=true&pir=false&experiment_perfpaywall=control
treatment /subscriptions/new/mobile/vpn?origin=funnel_appmenu_android&trial=true&pir=false&experiment_perfpaywall=treatment

image

@shakyShane

Copy link
Copy Markdown
Collaborator Author

NOTE: this is a DRAFT. I am updating the description with testing steps shortly. :)

@shakyShane shakyShane changed the title Sosbourne/perf paywall cohort Subscriptions: use experiment cohort for performance optimized paywalls Oct 1, 2026
Shane Osbourne and others added 4 commits October 1, 2026 10:53
performanceOptimizedPaywalls becomes a control/treatment experiment rather
than a plain rollout. Treatment opens the faster paywall page, control the
legacy one, and both carry experiment_perfpaywall=<cohort> so the frontend
can compare the two cohorts directly. Users who could never see the faster
page (no offers, entry points without one) are not enrolled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pick the cohort with the same enroll-then-when shape the onboarding
experiment managers use, and name the enum PerformanceOptimizedPaywallsCohorts
to match the plural Cohorts convention.

An incoming experiment_perfpaywall param is now replaced rather than
duplicated, on both the treatment and control paths, the same way trial
and pir are replaced.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@shakyShane
shakyShane force-pushed the sosbourne/perf-paywall-cohort branch from 8cd46bd to 3e10dcd Compare October 1, 2026 14:57
@shakyShane
shakyShane marked this pull request as ready for review October 1, 2026 15:34

@claude claude 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.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.

Tip: disable this comment in your organization's Code Review settings.

@Kyriakos-Georgiopoulos

Copy link
Copy Markdown
Contributor

@claude review

@claude claude 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.

Code review found no issues

No high-confidence issues detected in this change.

@shakyShane
shakyShane added this pull request to the merge queue Oct 5, 2026
Merged via the queue into develop with commit f314d41 Oct 5, 2026
25 checks passed
@shakyShane
shakyShane deleted the sosbourne/perf-paywall-cohort branch October 5, 2026 10:34
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.

2 participants