@@ -15,7 +15,7 @@ import type {
1515 SlotConfig ,
1616} from '../lib/messagePicker' ;
1717import { pickMessage } from '../lib/messagePicker' ;
18- import { useAB } from '../lib/useAB' ;
18+ import { useAB , useBetaAB } from '../lib/useAB' ;
1919import { useIsSignedIn } from '../lib/useAuthStatus' ;
2020import { useBraze } from '../lib/useBraze' ;
2121import { useCountryCode } from '../lib/useCountryCode' ;
@@ -269,6 +269,7 @@ export const StickyBottomBanner = ({
269269 const isSignedIn = useIsSignedIn ( ) ;
270270 const ophanPageViewId = usePageViewId ( renderingTarget ) ;
271271 const abTestAPI = useAB ( ) ?. api ;
272+ const betaABTest = useBetaAB ( ) ;
272273 const isInAuxiaControlGroup = ! ! abTestAPI ?. isUserInVariant (
273274 'NoAuxiaSignInGate' ,
274275 'control' ,
@@ -409,11 +410,23 @@ export const StickyBottomBanner = ({
409410 // Dispatches 'banner:none' event for mobile sticky ad integration (see @guardian/commercial-dev).
410411 // Ensures ads only insert when no banner will be shown.
411412 // hasPickMessageCompleted distinguishes between initial state (not picked yet) and final state (picked nothing).
413+ // Gated behind commercial-banner-ad-coordination A/B test (currently at 0%)
412414 useEffect ( ( ) => {
413- if ( hasPickMessageCompleted && SelectedBanner == null ) {
415+ const isInBannerAdTest =
416+ betaABTest ?. isUserInTestGroup (
417+ 'commercial-banner-ad-coordination' ,
418+ 'variant' ,
419+ ) ?? false ;
420+
421+ if (
422+ isInBannerAdTest &&
423+ hasPickMessageCompleted &&
424+ SelectedBanner == null
425+ ) {
414426 document . dispatchEvent ( new CustomEvent ( 'banner:none' ) ) ;
415427 }
416- } , [ SelectedBanner , hasPickMessageCompleted ] ) ;
428+ } , [ SelectedBanner , hasPickMessageCompleted , betaABTest ] ) ;
429+
417430 if ( SelectedBanner ) {
418431 return < SelectedBanner /> ;
419432 }
0 commit comments