feat(shared): add digest upsell banners to notifications and bookmarks pages#5630
feat(shared): add digest upsell banners to notifications and bookmarks pages#5630
Conversation
…s pages Show digest subscription CTA banners for non-Plus users without an active digest. Notifications page gets a full-width banner; bookmarks page gets a rounded card above the feed. Both persist dismissal via IndexedDB and log impression/click events. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Unit tests cover rendering conditions (Plus, digest, dismissed, loading), impression/click analytics, CTA subscription, and dismiss behavior. E2E tests verify banner visibility and dismissal on notifications and bookmarks pages. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace usePersistentContext (client-only IndexedDB) with useActions (server-side, tied to user account) for banner dismissal. Both dismiss and subscribe now complete the action so banners are shown only once. Adds DismissDigestUpsell and DismissDigestBookmarkUpsell to ActionType. Removes unused PersistentContextKeys and updates tests accordingly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Only show DigestUpsellBanner on notifications page when push notifications are already subscribed, ensuring it never renders simultaneously with the EnableNotification CTA. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use shared ActionType.DigestUpsell for both banners - Fix notification settings overwrite with setNotificationStatusBulk - Add isAuthReady gate to prevent flash before auth resolves - Show bookmark banner only when feed is empty - Center bookmark banner on desktop - Update toast and bookmark banner copy Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Log click event with action: dismiss when user closes the banner. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@claude review |
|
Claude finished @capJavert's task in 1m 27s —— View job Code Review
Overall the feature is solid and the dismissal/impression tracking pattern is well done. A few issues to address: Critical: E2E tests check for text that doesn't exist in the components
The E2E tests will silently pass (they use Architecture: Near-complete duplication between the two banner components
This should be a single // Proposed shared component
interface DigestUpsellBannerProps {
targetId: TargetId;
title: string;
description: string;
className?: string;
}The same duplication applies to the two spec files — they're identical except for the component name, rendered text, and Minor:
|
Show digest subscription CTA banners for non-Plus users without an active digest. Notifications page gets a full-width banner; bookmarks page gets a rounded card above the feed. Both persist dismissal via IndexedDB and log impression/click events.
Changes
Events
Did you introduce any new tracking events?
Experiment
Did you introduce any new experiments?
Manual Testing
Caution
Please make sure existing components are not breaking/affected by this PR
Preview domain
https://feat-digest-upsell-banners.preview.app.daily.dev