From 2b077f6dc6046fe905a1222a9f3e3a6067d7345b Mon Sep 17 00:00:00 2001 From: Michael Clapham Date: Mon, 17 Aug 2026 14:24:08 +0100 Subject: [PATCH 1/4] Update bridget to 8.14.0 Co-authored-by: Richard Bangay --- dotcom-rendering/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json index 0efffba19ba..318dc36a3d6 100644 --- a/dotcom-rendering/package.json +++ b/dotcom-rendering/package.json @@ -29,7 +29,7 @@ "@emotion/server": "11.11.0", "@guardian/ab-testing-config": "workspace:ab-testing-config", "@guardian/braze-components": "23.0.2", - "@guardian/bridget": "8.13.1", + "@guardian/bridget": "8.14.0", "@guardian/browserslist-config": "6.1.0", "@guardian/cdk": "catalog:", "@guardian/commercial-core": "34.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b4e7d6027d..8d00577aa6f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -318,8 +318,8 @@ importers: specifier: 23.0.2 version: 23.0.2(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@guardian/libs@32.0.0(@guardian/ophan-tracker-js@5.1.1)(tslib@2.6.2)(typescript@6.0.3))(@guardian/source@12.2.1(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@6.0.3))(react@18.3.1) '@guardian/bridget': - specifier: 8.13.1 - version: 8.13.1 + specifier: 8.14.0 + version: 8.14.0 '@guardian/browserslist-config': specifier: 6.1.0 version: 6.1.0(browserslist@4.24.4)(tslib@2.6.2) @@ -2641,8 +2641,8 @@ packages: '@guardian/source': 12.2.0 react: 17.0.2 || 18.2.0 - '@guardian/bridget@8.13.1': - resolution: {integrity: sha512-aSza9vG5hPqB0x3mX0ZUTBWbT1vB3k567KWGy6tVoWPw7vSolFD82qo03YcUYqE7AJbe/XHwJp74PaSMsG//Ow==} + '@guardian/bridget@8.14.0': + resolution: {integrity: sha512-0ZYPSGaevgaVBceFHC21nFhy0SIaMb8eaVy4xQwBJN6UYc5oucexvY/X4v3BDu4+huQ0SjcLddQBwVrHYRJltw==} '@guardian/browserslist-config@6.1.0': resolution: {integrity: sha512-qM0QxAv6E5IHXny5Okli6AZXEio0mpXzzEzz38qrb4IwO91R6eWVKyihdj0qW2k7TVxMFVOSfNmBZ1H5EiJhgw==} @@ -12571,7 +12571,7 @@ snapshots: '@guardian/source': 12.2.1(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@6.0.3) react: 18.3.1 - '@guardian/bridget@8.13.1': {} + '@guardian/bridget@8.14.0': {} '@guardian/browserslist-config@6.1.0(browserslist@4.24.4)(tslib@2.6.2)': dependencies: From e588c625ae1fde5e7d935657d37a3cdeb365bd0b Mon Sep 17 00:00:00 2001 From: Michael Clapham Date: Mon, 17 Aug 2026 15:16:26 +0100 Subject: [PATCH 2/4] Attempt to fill in email in newsletters sign up using bridget function (if apps) Co-authored-by: Richard Bangay --- .../src/lib/useNewsletterSignupForm.ts | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/dotcom-rendering/src/lib/useNewsletterSignupForm.ts b/dotcom-rendering/src/lib/useNewsletterSignupForm.ts index cc48cda4915..5f4c196b9eb 100644 --- a/dotcom-rendering/src/lib/useNewsletterSignupForm.ts +++ b/dotcom-rendering/src/lib/useNewsletterSignupForm.ts @@ -22,6 +22,7 @@ import { import { clearSubscriptionCache } from './newsletterSubscriptionCache'; import { useAuthStatus, useIsSignedIn } from './useAuthStatus'; import { useBrowserId } from './useBrowserId'; +import { getNewslettersClient } from './bridgetApi'; // --------------------------------------------------------------------------- // Helpers (kept local — not part of the public API) @@ -305,17 +306,36 @@ export const useNewsletterSignupForm = ( useEffect(() => { setCaptchaSiteKey(window.guardian.config.page.googleRecaptchaSiteKey); }, []); + useEffect(() => { - if (emailFetchStartedRef.current) return; - if (isSignedIn === 'Pending') return; - emailFetchStartedRef.current = true; - - void resolveUserEmail(isSignedIn).then((email) => { - if (!isString(email)) return; - setUserEmail(email); - setHasPrefilledEmail(true); - setIsInteracted(true); - }); + console.log('after useEffect fill in email'); + if (renderingTarget === 'Apps') { + // Fill in email using apps bridget API + void getNewslettersClient() + .getLoggedInUserEmail() + .then((maybeEmail) => { + console.log('after getLoggedInUserEmail ', maybeEmail); + const email = maybeEmail.emailAddress; + if (!email) return; + setUserEmail(email); + setHasPrefilledEmail(true); + setIsInteracted(true); + }) + .catch((reason) => { + console.log('after getLoggedInUserEmail catch ', reason); + }); + } else { + if (emailFetchStartedRef.current) return; + if (isSignedIn === 'Pending') return; + emailFetchStartedRef.current = true; + + void resolveUserEmail(isSignedIn).then((email) => { + if (!isString(email)) return; + setUserEmail(email); + setHasPrefilledEmail(true); + setIsInteracted(true); + }); + } }, [isSignedIn]); const submitForm = useCallback( From 2c1565a3a21b8e287bf154a3c1a4c71ddd1ac432 Mon Sep 17 00:00:00 2001 From: Michael Clapham Date: Mon, 17 Aug 2026 15:22:39 +0100 Subject: [PATCH 3/4] Make renderingTarget a useEffect dependency and lint fix --- dotcom-rendering/src/lib/useNewsletterSignupForm.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dotcom-rendering/src/lib/useNewsletterSignupForm.ts b/dotcom-rendering/src/lib/useNewsletterSignupForm.ts index 5f4c196b9eb..ec50961bc05 100644 --- a/dotcom-rendering/src/lib/useNewsletterSignupForm.ts +++ b/dotcom-rendering/src/lib/useNewsletterSignupForm.ts @@ -5,6 +5,7 @@ import type React from 'react'; import { useCallback, useEffect, useRef, useState } from 'react'; import type ReactGoogleRecaptcha from 'react-google-recaptcha'; import type { RenderingTarget } from '../types/renderingTarget'; +import { getNewslettersClient } from './bridgetApi'; import { lazyFetchEmailWithTimeout } from './fetchEmail'; import { getEffectiveMarketingOptIn, @@ -22,7 +23,6 @@ import { import { clearSubscriptionCache } from './newsletterSubscriptionCache'; import { useAuthStatus, useIsSignedIn } from './useAuthStatus'; import { useBrowserId } from './useBrowserId'; -import { getNewslettersClient } from './bridgetApi'; // --------------------------------------------------------------------------- // Helpers (kept local — not part of the public API) @@ -336,7 +336,7 @@ export const useNewsletterSignupForm = ( setIsInteracted(true); }); } - }, [isSignedIn]); + }, [isSignedIn, renderingTarget]); const submitForm = useCallback( async (emailAddress: string, token: string): Promise => { From a6b1717ee4f8508be679685ee763af9f01feb1c1 Mon Sep 17 00:00:00 2001 From: Michael Clapham Date: Tue, 18 Aug 2026 09:30:30 +0100 Subject: [PATCH 4/4] Only console.log in exception catch --- dotcom-rendering/src/lib/useNewsletterSignupForm.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dotcom-rendering/src/lib/useNewsletterSignupForm.ts b/dotcom-rendering/src/lib/useNewsletterSignupForm.ts index ec50961bc05..e12c0050aee 100644 --- a/dotcom-rendering/src/lib/useNewsletterSignupForm.ts +++ b/dotcom-rendering/src/lib/useNewsletterSignupForm.ts @@ -308,13 +308,11 @@ export const useNewsletterSignupForm = ( }, []); useEffect(() => { - console.log('after useEffect fill in email'); if (renderingTarget === 'Apps') { // Fill in email using apps bridget API void getNewslettersClient() .getLoggedInUserEmail() .then((maybeEmail) => { - console.log('after getLoggedInUserEmail ', maybeEmail); const email = maybeEmail.emailAddress; if (!email) return; setUserEmail(email); @@ -322,7 +320,10 @@ export const useNewsletterSignupForm = ( setIsInteracted(true); }) .catch((reason) => { - console.log('after getLoggedInUserEmail catch ', reason); + console.log( + 'Failed to getLoggedInUserEmail from bridget ', + reason, + ); }); } else { if (emailFetchStartedRef.current) return;