From 07344f70fc4683e4ed49838f6ee624868a16af2c Mon Sep 17 00:00:00 2001 From: DS Boyce <260543580+ds-boyce@users.noreply.github.com> Date: Tue, 21 Apr 2026 13:59:13 -0700 Subject: [PATCH] Fix missing recId values for suggested user events (#10291) Co-authored-by: Eric Bailey --- src/analytics/metrics/types.ts | 2 ++ src/components/FeedInterstitials.tsx | 1 + src/components/ProgressGuide/FollowDialog.tsx | 10 +++++++++- src/screens/Onboarding/StepSuggestedAccounts/index.tsx | 8 +++++++- src/screens/Search/Explore.tsx | 3 ++- .../Search/modules/ExploreSuggestedAccounts.tsx | 2 +- .../trending/useGetSuggestedOnboardingUsersQuery.ts | 4 ++++ .../trending/useGetSuggestedUsersForDiscoverQuery.ts | 4 ++++ .../trending/useGetSuggestedUsersForExploreQuery.ts | 4 ++++ .../trending/useGetSuggestedUsersForSeeMoreQuery.ts | 4 ++++ 10 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/analytics/metrics/types.ts b/src/analytics/metrics/types.ts index 1d74e1c5b8..2b374e17ad 100644 --- a/src/analytics/metrics/types.ts +++ b/src/analytics/metrics/types.ts @@ -487,6 +487,7 @@ export type Events = { | 'SeeMoreSuggestedUsers' | 'ProgressGuide' location: 'Card' | 'Profile' | 'FollowAll' + recSource?: 'Search' recId?: number | string position: number suggestedDid: string @@ -514,6 +515,7 @@ export type Events = { | 'Onboarding' | 'SeeMoreSuggestedUsers' | 'ProgressGuide' + recSource?: 'Search' recId?: number | string position: number suggestedDid: string diff --git a/src/components/FeedInterstitials.tsx b/src/components/FeedInterstitials.tsx index 36a3f40a73..02dee2fd6e 100644 --- a/src/components/FeedInterstitials.tsx +++ b/src/components/FeedInterstitials.tsx @@ -167,6 +167,7 @@ export function SuggestedFollowsHome() { return ( @@ -264,7 +265,7 @@ function DialogInner({guide}: {guide?: Follow10ProgressGuide}) { return null } }, - [moderationOpts, recIdForLogging, isGuide], + [moderationOpts, hasSearchText, recIdForLogging, isGuide], ) // Track seen profiles @@ -286,6 +287,7 @@ function DialogInner({guide}: {guide?: Follow10ProgressGuide}) { ) ax.metric('suggestedUser:seen', { logContext: isGuide ? 'ProgressGuide' : 'SeeMoreSuggestedUsers', + recSource: hasSearchText ? 'Search' : undefined, recId: recIdForLogging, position: position !== -1 ? position : 0, suggestedDid: item.profile.did, @@ -548,6 +550,7 @@ let FollowProfileCard = ({ moderationOpts, noBorder, position, + recSource, recId, isGuide, }: { @@ -555,6 +558,7 @@ let FollowProfileCard = ({ moderationOpts: ModerationOpts noBorder?: boolean position: number + recSource?: 'Search' recId?: string isGuide: boolean }): React.ReactNode => { @@ -564,6 +568,7 @@ let FollowProfileCard = ({ moderationOpts={moderationOpts} noBorder={noBorder} position={position} + recSource={recSource} recId={recId} isGuide={isGuide} /> @@ -577,6 +582,7 @@ function FollowProfileCardInner({ onFollow, noBorder, position, + recSource, recId, isGuide, }: { @@ -585,6 +591,7 @@ function FollowProfileCardInner({ onFollow?: () => void noBorder?: boolean position: number + recSource?: 'Search' recId?: string isGuide: boolean }) { @@ -625,6 +632,7 @@ function FollowProfileCardInner({ ? 'ProgressGuide' : 'SeeMoreSuggestedUsers', location: 'Card', + recSource, recId, position, suggestedDid: profile.did, diff --git a/src/screens/Onboarding/StepSuggestedAccounts/index.tsx b/src/screens/Onboarding/StepSuggestedAccounts/index.tsx index c3368f897e..eaa68d9254 100644 --- a/src/screens/Onboarding/StepSuggestedAccounts/index.tsx +++ b/src/screens/Onboarding/StepSuggestedAccounts/index.tsx @@ -105,6 +105,7 @@ export function StepSuggestedAccounts() { ax.metric('suggestedUser:follow', { logContext: 'Onboarding', location: 'FollowAll', + recSource: !useFullExperience ? 'Search' : undefined, recId: suggestedUsers?.recId, position: i, suggestedDid: did, @@ -155,6 +156,7 @@ export function StepSuggestedAccounts() { seenProfilesRef.current.add(did) ax.metric('suggestedUser:seen', { logContext: 'Onboarding', + recSource: !useFullExperience ? 'Search' : undefined, recId: suggestedUsers?.recId, position, suggestedDid: did, @@ -162,7 +164,7 @@ export function StepSuggestedAccounts() { }) } }, - [ax, selectedInterest, suggestedUsers?.recId], + [ax, selectedInterest, suggestedUsers?.recId, useFullExperience], ) useEffect(() => { @@ -248,6 +250,7 @@ export function StepSuggestedAccounts() { position={index} category={selectedInterest} onSeen={onProfileSeen} + recSource={!useFullExperience ? 'Search' : undefined} recId={suggestedUsers.recId} /> ))} @@ -358,6 +361,7 @@ function SuggestedProfileCard({ position, category, onSeen, + recSource, recId, }: { profile: bsky.profile.AnyProfileView @@ -365,6 +369,7 @@ function SuggestedProfileCard({ position: number category: string | null onSeen: (did: string, position: number) => void + recSource?: 'Search' recId?: number | string }) { const t = useTheme() @@ -432,6 +437,7 @@ function SuggestedProfileCard({ ax.metric('suggestedUser:follow', { logContext: 'Onboarding', location: 'Card', + recSource, recId, position, suggestedDid: profile.did, diff --git a/src/screens/Search/Explore.tsx b/src/screens/Search/Explore.tsx index e7401cfbf6..0afc72e1a6 100644 --- a/src/screens/Search/Explore.tsx +++ b/src/screens/Search/Explore.tsx @@ -162,7 +162,7 @@ type ExploreScreenItems = type: 'profile' key: string profile: AppBskyActorDefs.ProfileView - recId?: number + recId?: string } | { type: 'profileEmpty' @@ -406,6 +406,7 @@ export function Explore({ type: 'profile', key: actor.did, profile: actor, + recId: suggestedUsers.recId, }) } } diff --git a/src/screens/Search/modules/ExploreSuggestedAccounts.tsx b/src/screens/Search/modules/ExploreSuggestedAccounts.tsx index 438d7c2a37..9e459198ca 100644 --- a/src/screens/Search/modules/ExploreSuggestedAccounts.tsx +++ b/src/screens/Search/modules/ExploreSuggestedAccounts.tsx @@ -105,7 +105,7 @@ let SuggestedProfileCard = ({ }: { profile: bsky.profile.AnyProfileView moderationOpts: ModerationOpts - recId?: number + recId?: string position: number }): React.ReactNode => { const t = useTheme() diff --git a/src/state/queries/trending/useGetSuggestedOnboardingUsersQuery.ts b/src/state/queries/trending/useGetSuggestedOnboardingUsersQuery.ts index 20ca8736af..3697c51a7c 100644 --- a/src/state/queries/trending/useGetSuggestedOnboardingUsersQuery.ts +++ b/src/state/queries/trending/useGetSuggestedOnboardingUsersQuery.ts @@ -5,6 +5,7 @@ import { import {type QueryClient, useQuery} from '@tanstack/react-query' import {createBskyTopicsHeader} from '#/lib/api/feed/utils' +import {logger} from '#/logger' import {getContentLanguages} from '#/state/preferences/languages' import {STALE} from '#/state/queries' import {usePreferencesQuery} from '#/state/queries/preferences' @@ -54,6 +55,9 @@ export function useGetSuggestedOnboardingUsersQuery(props: QueryProps) { }, ) + if (!data.recIdStr) { + logger.debug('getSuggestedOnboardingUsers response missing recIdStr') + } return {...data, recId: data.recIdStr} }, }) diff --git a/src/state/queries/trending/useGetSuggestedUsersForDiscoverQuery.ts b/src/state/queries/trending/useGetSuggestedUsersForDiscoverQuery.ts index 74c8886693..c18a4d05c4 100644 --- a/src/state/queries/trending/useGetSuggestedUsersForDiscoverQuery.ts +++ b/src/state/queries/trending/useGetSuggestedUsersForDiscoverQuery.ts @@ -8,6 +8,7 @@ import { aggregateUserInterests, createBskyTopicsHeader, } from '#/lib/api/feed/utils' +import {logger} from '#/logger' import {getContentLanguages} from '#/state/preferences/languages' import {STALE} from '#/state/queries' import {usePreferencesQuery} from '#/state/queries/preferences' @@ -46,6 +47,9 @@ export function useGetSuggestedUsersForDiscoverQuery(props: QueryProps = {}) { }, }, ) + if (!data.recIdStr) { + logger.debug('getSuggestedUsersForDiscover response missing recIdStr') + } return {...data, recId: data.recIdStr} }, }) diff --git a/src/state/queries/trending/useGetSuggestedUsersForExploreQuery.ts b/src/state/queries/trending/useGetSuggestedUsersForExploreQuery.ts index 26967fb87c..a2e56573e5 100644 --- a/src/state/queries/trending/useGetSuggestedUsersForExploreQuery.ts +++ b/src/state/queries/trending/useGetSuggestedUsersForExploreQuery.ts @@ -8,6 +8,7 @@ import { aggregateUserInterests, createBskyTopicsHeader, } from '#/lib/api/feed/utils' +import {logger} from '#/logger' import {getContentLanguages} from '#/state/preferences/languages' import {STALE} from '#/state/queries' import {usePreferencesQuery} from '#/state/queries/preferences' @@ -48,6 +49,9 @@ export function useGetSuggestedUsersForExploreQuery(props: QueryProps = {}) { }, ) + if (!data.recIdStr) { + logger.debug('getSuggestedUsersForExplore response missing recIdStr') + } return {...data, recId: data.recIdStr} }, }) diff --git a/src/state/queries/trending/useGetSuggestedUsersForSeeMoreQuery.ts b/src/state/queries/trending/useGetSuggestedUsersForSeeMoreQuery.ts index e816f0cedb..73fdf6b451 100644 --- a/src/state/queries/trending/useGetSuggestedUsersForSeeMoreQuery.ts +++ b/src/state/queries/trending/useGetSuggestedUsersForSeeMoreQuery.ts @@ -8,6 +8,7 @@ import { aggregateUserInterests, createBskyTopicsHeader, } from '#/lib/api/feed/utils' +import {logger} from '#/logger' import {getContentLanguages} from '#/state/preferences/languages' import {STALE} from '#/state/queries' import {usePreferencesQuery} from '#/state/queries/preferences' @@ -54,6 +55,9 @@ export function useGetSuggestedUsersForSeeMoreQuery(props: QueryProps = {}) { }, ) + if (!data.recIdStr) { + logger.debug('getSuggestedUsersForSeeMore response missing recIdStr') + } return {...data, recId: data.recIdStr} }, })