diff --git a/CHANGELOG.md b/CHANGELOG.md index a8d9a99372e..0e8806f3941 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - added: NYM swap provider (`nymswap`) - changed: Route maestro test builds to a dedicated Zealot channel so they no longer appear in the production release list. - changed: Hide the wallet "Get Raw Keys" option behind Developer Mode, while still showing it for wallets that fail to load. +- fixed: Share button referral link now uses the dl.edge.app deep-link domain so appreferred attribution is tracked - removed: SideShift `privateKey` from env config; the swap integration no longer sends the affiliate secret header. ## 4.49.0 (staging) diff --git a/src/components/themed/SideMenu.tsx b/src/components/themed/SideMenu.tsx index aaa6e664aa0..80ead5cbdcd 100644 --- a/src/components/themed/SideMenu.tsx +++ b/src/components/themed/SideMenu.tsx @@ -199,7 +199,13 @@ export function SideMenuComponent(props: Props): React.ReactElement { .replace('0x', '') .substring(0, 10) - const url = `${config.website}?af=appreferred_${refId}` + // Share the app via the AppsFlyer deep-link URL so the appreferred referral + // attribution (refDeviceInstallerId) is tracked. Defaults to dl.edge.app for + // Edge; white-label builds fall back to their own website domain. The trailing + // slash before the query matches the dl.edge.app deep-link format (see + // DeepLinkParser), which AppsFlyer needs to resolve the attribution. + const shareUrlBase = config.referralAppShareUrl ?? config.website + const url = `${shareUrlBase}/?af=appreferred_${refId}` const subject = sprintf(lstrings.share_subject, config.appName) await Share.open({ diff --git a/src/theme/edgeConfig.ts b/src/theme/edgeConfig.ts index 6eb1376174f..2ac9e8d952b 100644 --- a/src/theme/edgeConfig.ts +++ b/src/theme/edgeConfig.ts @@ -37,6 +37,7 @@ export const edgeConfig: AppConfig = { supportSite: 'https://help.edge.app/support/tickets/new', termsOfServiceSite: 'https://edge.app/tos/', website: 'https://edge.app', + referralAppShareUrl: 'https://dl.edge.app', supportChatSite: 'https://support.edge.app/hc/en-us?chat=open', quickActions: { uninstallWarningUrl: diff --git a/src/types/types.ts b/src/types/types.ts index e0d1717f143..0dc47aae68e 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -376,6 +376,12 @@ export interface AppConfig { supportSite: string termsOfServiceSite: string website: string + /** + * Base URL used when sharing the app for referral attribution (the AppsFlyer + * deep-link domain). Falls back to `website` when unset so white-label builds + * share links on their own domain. + */ + referralAppShareUrl?: string disableSwaps?: boolean disableSurveyModal?: boolean /**