Skip to content

feat(plus): turn the feed scroll stopper into a Plus promotion - #6868

Open
tsahimatsliah wants to merge 14 commits into
mainfrom
claude/plus-feed-banner
Open

tsahimatsliah wants to merge 14 commits into
mainfrom
claude/plus-feed-banner

Conversation

@tsahimatsliah

@tsahimatsliah tsahimatsliah commented Oct 12, 2026 •

Copy link
Copy Markdown
Member

Nimrod asked (Slack) to change the in-feed "Still scrolling? Let's fix that" briefing banner into a Plus promotion.

What changed

  • New PlusFeedBanner (components/plus/PlusFeedBanner.tsx) replaces BriefBanner + BriefBannerFeed. Same headline hook, then "daily.dev Plus cleans up the feed you already read every day.", four verb-first perks single-sourced from plusFeatureListApiFirst (Removes every ad, Rewrites clickbait titles, Filters out keywords you mute, Builds feeds you can query), and a bacon Get Plus button to /plus.
  • Same slot, same cadence. The GrowthBook flag id (brief_feed_banner_page) and the once-a-day seen logic on alerts.briefBannerLastSeen are unchanged, so the banner keeps appearing exactly where and as often as before. The "has a brief today" gate is dropped since it no longer applies.
  • Logging moves to the Plus pattern: impression / upgrade subscription with target_type: plus, target_id: scroll (the same target id the brief banner used), via usePlusSubscription.
  • Feed plumbing renamed from brief-specific to generic: promoFeedBannerPage, isPromoBannerEligible, promoBannerPage.
  • Storybook: "Features / Plus entry points / Feed scroll stopper".

Screenshots

Light, dark, and 375px in the Storybook story. Perks wrap to multiple lines on phones.

Verification

  • PlusFeedBanner.spec.tsx (6 tests) and the Feed banner integration test pass.
  • pnpm --filter webapp test: 110 suites / 844 tests pass.
  • Full webapp tsc clean; strict typecheck guard on changed files passes.

🤖 Generated with Claude Code

Preview domain

https://claude-plus-feed-banner.preview.app.daily.dev

The in-feed "Still scrolling? Let's fix that" banner sold the Presidential
Briefing. Nimrod asked for it to promote Plus instead. The banner keeps its
slot, flag (brief_feed_banner_page), once-a-day cadence via
alerts.briefBannerLastSeen, and the scroll target id so analytics line up
across the switch; only the content and the gating on today's brief change.

Content follows the Plus entry-point kit: bacon Plus tile, verb-first perks
single-sourced from plusFeatureListApiFirst (the four that act on the feed),
bacon Get Plus button, Impression/UpgradeSubscription logging via
usePlusSubscription.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
daily-webapp Ready Ready Preview Oct 12, 2026 1:43pm UTC

Request Review

Storybook "Features / Plus scroll stopper" stacks the shipped banner with
ten alternatives, each pulling a different lever (live demo, the reader's
own numbers, self-aware ad framing, dev-brand terminal, restraint, price
anchor, low-salience strip). Sample numbers stand in for what the loaded
feed would report. The Providers wrapper moves out of the entry-points
story so both stories can render the real shared components.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Replaces the ten-variant exploration with one direction: the landing page's
glass-and-aurora frame around a two-column strip. Left is the pitch (Plus
mark, headline, real price, Get Plus, refund line); right is six feature
chips using the Plus page's colored tiles, each driving a live mock of the
feed inside a tiny app window. It rotates every four seconds until the
reader picks a feature, then holds. Stories show it in the feed slot, on
its own, and without autoplay.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Left column is down to the Plus tile, the headline, Get Plus and one price
line. The perk verb moves into the mock window's title bar as a colored
badge, which drops the caption row and the per-preview status lines. The
window shrinks to 9.5rem, chips fit one row, and the frame padding tightens,
taking the strip from about 300px to 254px at feed width.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
tsahimatsliah and others added 2 commits October 12, 2026 14:36
The strip's width in the feed depends on column count and the sidebar,
not just the viewport, so its layout now follows its own width with
container queries: stacked below 600px, a header row (headline left, CTA
right) from 600px, two columns from 1000px, and a capped preview column
from 1400px. The chip row scrolls horizontally when it does not fit and
keeps the active chip in view; autoplay only runs while the strip is in
view. The Plus tile is gone, the button already carries the glyph.

Folders and Briefing get real "before" states (a flat pile of saves, a
scanning header with skeleton lines) instead of an empty window during
the reveal delay. The "Every width" story renders the strip at eleven
widths side by side, and the feed story matches the real column counts.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
tsahimatsliah and others added 2 commits October 12, 2026 15:09
Below the two-column width the head is one row: headline and price on
the left, the button on the right, so phones and tablets lose a full
row of height. The two-column layout keeps the vertical stack.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The global flex-shrink reset kept the headline block from shrinking, so
the headline refused to wrap and pushed Get Plus off the card. The copy
block now takes flex 1 1 0 and the badge text may shrink. Under 420px
containers the headline drops to the title3 size and the window label
hides so the perk badge has room.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
tsahimatsliah and others added 2 commits October 12, 2026 15:21
…the window

The button goes back under the headline in every layout and switches to
the plain Primary variant, which reads white on the dark glass. The mock
window drops its browser chrome (dots and URL) and leads with the perk
pill on the left as a caption for the preview under it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
tsahimatsliah and others added 3 commits October 12, 2026 16:22
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Feature tabs lose their border and shadow and mute their icon tile when
inactive, so they stop competing with the Get Plus button. Every preview
now fits the window at every width: tighter rows, Clean titles down to one
row under the bait, a 12px taller window for Ad-free's three rows, the
feeds sidebar sized by container width with names that never wrap, and
tag and muted-word rows that clip instead of wrapping.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

This branch was successfully deployed

1 active deployment
Preview — 147557b8 Deployed Oct 12, 2026 by vercel[bot]
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