Skip to content

fix(extension): restore the hijacking login strip on the laptop new tab - #7035

Merged
tsahimatsliah merged 7 commits into
mainfrom
fix/extension-hijacking-strip-laptop
Oct 25, 2026
Merged

tsahimatsliah merged 7 commits into
mainfrom
fix/extension-hijacking-strip-laptop

Conversation

@tsahimatsliah

@tsahimatsliah tsahimatsliah commented Oct 25, 2026 •

Copy link
Copy Markdown
Member

Problem

Layout v2 graduation (#7017) left MainFeedPage ignoring the shortcuts slot on laptop. HijackingPage used that slot to render HijackingLoginStrip, so logged-out and onboarding-incomplete users on the laptop new tab (/hijacking) only got the generic sticky ExtensionSignInStrip ("Sign in to personalize your feed…"). The cover strip with the "Log in to continue", "Continue as…" and "Continue onboarding" variants, plus its hijacking impression and click events, stopped rendering.

Fix

  • MainFeedPage gets a dedicated loginStrip prop in place of the generic shortcuts override.
  • Laptop: loginStrip renders in the top banner above the feed card. The sign-in title and Log in / Sign up CTAs (ExtensionSignInContent, split out of ExtensionSignInStrip) move into the feed's page header through a new MainFeedLayout prop, pageHeaderContent. Before this change that header was an empty bar for anonymous users. The header only gets the CTAs while the user is logged out.
  • Below laptop: it stays in the feed's shortcuts slot, as before.
  • HijackingPage passes loginStrip={<HijackingLoginStrip />}.

The regular signed-in new tab is unchanged.

Verified

Built the extension and loaded it unpacked in Chromium (1440×900, logged out). Before: generic sign-in strip. After: the hijacking cover strip is above the feed card, and the sign-in title and CTAs are in the feed header.
Ran eslint, tsc and jest src/newtab (17 tests) and the shared MainFeedLayout/Feed specs (58 tests); all pass.

🤖 Opened by Smith (AI) for @tsahimatsliah

Preview domain

https://fix-extension-hijacking-strip-la.preview.app.daily.dev

Layout v2 dropped MainFeedPage's shortcuts slot on laptop, and that slot was
how HijackingPage rendered HijackingLoginStrip, so logged-out and
onboarding-incomplete visitors only got the generic ExtensionSignInStrip.
Pass the strip as a dedicated loginStrip prop and render it in the top
banner in place of ExtensionSignInStrip on laptop; smaller screens keep it in
the shortcuts slot.
@vercel

vercel Bot commented Oct 25, 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 25, 2026 11:18am UTC
storybook Ready Ready Preview Oct 25, 2026 11:18am UTC

Request Review

On the laptop hijacking new tab, render the 'Sign in to personalize your feed'
title with Log in / Sign up inside the feed's page header (new
MainFeedLayout pageHeaderContent prop), alongside the cover strip above the
feed card.
@CLAassistant

CLAassistant commented Oct 25, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

The sticky ExtensionSignInStrip it replaced stayed reachable while
scrolling; the feed page header holding the same CTAs did not. Pin it
under --sticky-header-offset with an opaque background, only when it
holds the sign-in content, so the regular feed heading is unchanged.

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

The header's Log in / Sign up opened the in-extension auth modal, where
social OAuth from the extension origin is rejected with a 403; the cover
strip on the same screen already hands off to the webapp onboarding URL.
Both now share one onboardingHref module.

Drop the ExtensionSignInStrip wrapper: App.tsx routes every logged-out
or onboarding-incomplete user to HijackingPage, which always passes
loginStrip, so the fallback could only ever render null. MainFeedPage
gates the top-banner strip on laptop itself instead of leaning on
MainLayout hiding the slot.

Drop feedStyles.cards from the hijacking strip: its desktopL cap reads
--num-cards, which is only set inside the feed, and below laptop the
breakpoint never applies, so the class was inert in both placements.

Add a MainFeedPage spec for the laptop/below-laptop strip and header
wiring, the path #7017 dropped without any test noticing.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
<div className="flex shrink-0 items-center gap-2">
<Button
tag="a"
href={loginHref}

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking: once these became plain anchors, header clicks stopped showing up in analytics. Before this commit they went through showLogin({ trigger: AuthTriggers.MainButton }), so the auth flow recorded where the click came from. Now nothing is logged before the browser leaves for the webapp. The cover strip on the same screen logs LogEvent.Click with TargetType.LoginButton / SignupButton and target_id: 'hijacking' (HijackingLoginStrip.tsx, logClick), so a sign-up from the cover strip will be counted but one from the header CTAs on that same screen won't.

Suggest adding the same onClick click log to both anchors, with a separate target_id (e.g. 'hijacking_header') so the two placements can be compared. Keep href as is.

Reviewed by AI.

@tsahimatsliah
tsahimatsliah merged commit 4e4b804 into main Oct 25, 2026
13 checks passed
@tsahimatsliah
tsahimatsliah deleted the fix/extension-hijacking-strip-laptop branch October 25, 2026 11:22
tsahimatsliah added a commit that referenced this pull request Oct 25, 2026
Takes main's extension new tab (#7035: the hijacking cover strip above the
card and the sign-in CTAs in the feed header replace ExtensionSignInStrip);
the shared SignInStrip stays webapp-only.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
tsahimatsliah added a commit that referenced this pull request Oct 25, 2026
…he shared strip is webapp only

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
tsahimatsliah added a commit that referenced this pull request Oct 25, 2026
Takes #7035 (the hijacking login strip on the laptop new tab), which
rewrote MainFeedPage.tsx. Kept main's version plus this branch's removal
of the CompanionPopupButton slot; the new MainFeedPage spec no longer
mocks the deleted module.

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

This branch was successfully deployed

2 active deployments
Preview – daily-webapp — fdcbb3dc Deployed Oct 25, 2026 by vercel[bot]
Preview – storybook — fdcbb3dc Deployed Oct 25, 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.

3 participants