diff --git a/src/ageAssurance/components/DeviceSignalsNotice.tsx b/src/ageAssurance/components/DeviceSignalsNotice.tsx
new file mode 100644
index 0000000000..bd2d7d2381
--- /dev/null
+++ b/src/ageAssurance/components/DeviceSignalsNotice.tsx
@@ -0,0 +1,63 @@
+import {Trans, useLingui} from '@lingui/react/macro'
+
+import {atoms as a, useTheme} from '#/alf'
+import {createStaticClick, SimpleInlineLinkText} from '#/components/Link'
+import {Text} from '#/components/Typography'
+import {IS_IOS} from '#/env'
+
+/**
+ * Explains what sharing on-device age signals reveals, shown alongside the
+ * "Share age range" button on the age assurance surfaces (the no-access screen
+ * and the account settings card).
+ *
+ * Platform-split so the copy can name the OS account the age range comes from
+ * (Apple Account vs Google Account) and reassure users that only a range is
+ * shared. Device signals are only supported on iOS and Android, so these are
+ * the only two cases.
+ */
+export function DeviceSignalsNotice({onPressKws}: {onPressKws: () => void}) {
+ const t = useTheme()
+ const {t: l} = useLingui()
+
+ return (
+
+ {IS_IOS ? (
+
+ Sharing your age range reveals only the range associated with your
+ Apple Account – for example, that you’re at least 18.{' '}
+
+ Your exact age and birthday are never shared,
+ {' '}
+ and this data never leaves this device. Therefore, it only enables
+ access on this device. Alternatively,{' '}
+ {
+ onPressKws()
+ })}>
+ you can use our trusted partner, KWS
+
+ , to complete your verification and enable access on all platforms.
+
+ ) : (
+
+ Sharing your age range reveals only the range associated with your
+ Google Account – for example, that you’re at least 18.{' '}
+
+ Your exact age and birthday are never shared,
+ {' '}
+ and this data never leaves this device. Therefore, it only enables
+ access on this device. Alternatively,{' '}
+ {
+ onPressKws()
+ })}>
+ you can use our trusted partner, KWS
+
+ , to complete your verification and enable access on all platforms.
+
+ )}
+
+ )
+}
diff --git a/src/ageAssurance/components/NoAccessScreen.tsx b/src/ageAssurance/components/NoAccessScreen.tsx
index 29d9abc5b2..895e57d077 100644
--- a/src/ageAssurance/components/NoAccessScreen.tsx
+++ b/src/ageAssurance/components/NoAccessScreen.tsx
@@ -27,6 +27,7 @@ import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography'
import {BottomSheetOutlet} from '#/../modules/bottom-sheet'
import {useAgeAssurance} from '#/ageAssurance'
+import {DeviceSignalsNotice} from '#/ageAssurance/components/DeviceSignalsNotice'
import {useAgeAssuranceServerDataContext} from '#/ageAssurance/data'
import {useComputeAgeAssuranceRegionAccess} from '#/ageAssurance/useComputeAgeAssuranceRegionAccess'
import {useAgeAssuranceVerificationFlow} from '#/ageAssurance/useVerificationFlow'
@@ -428,23 +429,7 @@ function AccessSection() {
{useDeviceSignals ? (
-
-
- Sharing your age data uses information stored on your
- device, and will therefore only work on this device.
- Alternatively,{' '}
- {
- openInitDialog()
- })}>
- you can use our trusted partner, KWS
-
- , to complete your verification and enable access on all
- platforms.
-
-
+
) : lastInitiatedAt && timeAgo && diff ? (
{useDeviceSignals ? (
-
-
- Sharing your age data uses information stored on your
- device, and will therefore only work on this device.
- Alternatively,{' '}
- {
- openInitDialog()
- })}>
- you can use our trusted partner, KWS
-
- , to complete your verification and enable access on all
- platforms.
-
-
+
) : lastInitiatedAt && timeAgo && diff ? (