Recognize the performance-optimized paywall paths as subscription URLs - #9778
Open
Conversation
There was a problem hiding this comment.
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.
Contributor
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 16be7dc. Configure here.
Kyriakos-Georgiopoulos
force-pushed
the
feature/kyriakos/performance-optimized-paywalls/url-interception
branch
from
September 11, 2026 08:27
16be7dc to
053007c
Compare
Kyriakos-Georgiopoulos
requested review from
malmstein and
mikescamell
as code owners
September 11, 2026 08:27
Kyriakos-Georgiopoulos
force-pushed
the
feature/kyriakos/performance-optimized-paywalls/url-resolver
branch
from
September 11, 2026 08:27
646e4bc to
9aac626
Compare
Kyriakos-Georgiopoulos
force-pushed
the
feature/kyriakos/performance-optimized-paywalls/url-interception
branch
from
September 11, 2026 08:56
053007c to
7e33986
Compare
Kyriakos-Georgiopoulos
force-pushed
the
feature/kyriakos/performance-optimized-paywalls/url-resolver
branch
from
September 11, 2026 09:52
c08ad22 to
6efc658
Compare
Kyriakos-Georgiopoulos
force-pushed
the
feature/kyriakos/performance-optimized-paywalls/url-interception
branch
from
September 11, 2026 09:53
7e33986 to
6061d74
Compare
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/task/1218361229739464
Tech Design URL (if applicable):
API Proposals URL(s) (if applicable): None
Description
Makes the app recognize the performance-optimized paywall paths as subscription URLs, so a link straight to one of them opens the purchase screen instead of a plain tab the user cannot buy from.
/proand/subscriptionswith nothing after them, so the new paths fell through. It now also accepts the paths from the flag settings, which keeps them remote-configurable AddperformanceOptimizedPaywallsfeature flag (off by default) privacy-configuration#5809origin, and any query the buy URL itself carries are both preserved.Steps to test this PR
performanceOptimizedPaywalls, turn it on.SubscriptionsWebViewActivity. It logs the URL every time the paywall opens, and every check below just reads that line.A link to a new path opens the purchase screen
https://duckduckgo.com/subscriptions/new/mobile/duckaifrom the address bar. The purchase screen opens, not a web page in the tab, and the URL is/subscriptions/new/mobile/duckaiwithtrialandpir./subscriptions/new/mobile/vpn. URL should be/subscriptions/new/mobile/vpn.Only configured paths
https://duckduckgo.com/subscriptions/new/mobile/itr, which is not in the config. It stays a web page in the tab.Params
https://duckduckgo.com/subscriptions/new/mobile/duckai?origin=test.origin=testsurvives onto the loaded URL alongsidetrialandpir.Old entry points
https://duckduckgo.com/pro. Purchase screen opens, and with nofeaturePagethe URL defaults to/subscriptions/new/mobile/vpn.Flag off
performanceOptimizedPaywallsoff, open/subscriptions/new/mobile/duckaiagain. It stays a web page in the tab, which is the behaviour ondevelop.https://duckduckgo.com/pro. Purchase screen opens on/subscriptions, with notrialorpir.Note
Medium Risk
Changes subscription deep-link routing and paywall URL rewriting behind a feature flag; incorrect matching or query merging could send users to the wrong paywall or break attribution params.
Overview
When
performanceOptimizedPaywallsis on, deep links to remotely configured paywall paths (e.g./subscriptions/new/mobile/vpn) are treated like/proand/subscriptions, so they open the native purchase WebView instead of a normal tab.isSubscriptionUrlandshouldLaunchSubscriptionForUrlusePaywallPathProvider.getFeaturePagefor those paths; with the flag off, matching stays limited to the legacy single-segment URLs.buildSubscriptionUrlnow merges the buy URL’s existing query with the incoming link, maps a configured path to afeaturePagequery param (without duplicating an explicit non-blankfeaturePage), and preserves params likeorigin.PaywallPathProvideradds reverse path lookup, trailing-slash normalization, and in-memory caching of parsed flag settings.Reviewed by Cursor Bugbot for commit 1e7ddc0. Bugbot is set up for automated code reviews on this repo. Configure here.