diff --git a/static/app/components/replaysOnboarding/sidebar.tsx b/static/app/components/replaysOnboarding/sidebar.tsx index f7281b8e6dd7..70cf93e0514b 100644 --- a/static/app/components/replaysOnboarding/sidebar.tsx +++ b/static/app/components/replaysOnboarding/sidebar.tsx @@ -26,6 +26,7 @@ import {TextOverflow} from 'sentry/components/textOverflow'; import { replayBackendPlatforms, replayFrontendPlatforms, + replayGamingPlatforms, replayJsLoaderInstructionsPlatformList, replayMobilePlatforms, replayOnboardingPlatforms, @@ -218,6 +219,12 @@ function OnboardingContent({ currentProject.platform && replayBackendPlatforms.includes(currentProject.platform); const mobilePlatform = currentProject.platform && replayMobilePlatforms.includes(currentProject.platform); + const gamingPlatform = + currentProject.platform && replayGamingPlatforms.includes(currentProject.platform); + // Mobile SDKs and gaming engines record replays as video: they use their own + // native replay onboarding (not the browser JS-loader flow) and don't expose + // the rrweb mask/block toggles. + const nativeReplayPlatform = mobilePlatform || gamingPlatform; const npmOnlyFramework = currentProject.platform && replayFrontendPlatforms @@ -313,7 +320,7 @@ function OnboardingContent({ /> ) : ( - !mobilePlatform && + !nativeReplayPlatform && (docs?.platformOptions?.siblingOption || docs?.platformOptions?.packageManager) && !isProjKeysLoading && ( @@ -399,7 +406,7 @@ function OnboardingContent({ {radioButtons} !['javascript-backbone'].includes(p)), ...replayBackendPlatforms, ...replayMobilePlatforms, + ...replayGamingPlatforms, ]; // These are the supported replay platforms that can also be set up using the JS loader. diff --git a/static/app/gettingStartedDocs/unreal/index.tsx b/static/app/gettingStartedDocs/unreal/index.tsx index c52f302fd9e9..62dee282fb04 100644 --- a/static/app/gettingStartedDocs/unreal/index.tsx +++ b/static/app/gettingStartedDocs/unreal/index.tsx @@ -3,10 +3,12 @@ import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types'; import {crashReport} from './crashReport'; import {logs} from './logs'; import {onboarding} from './onboarding'; +import {sessionReplay} from './sessionReplay'; export const docs: Docs = { onboarding, feedbackOnboardingCrashApi: crashReport, crashReportOnboarding: crashReport, + replayOnboarding: sessionReplay, logsOnboarding: logs, }; diff --git a/static/app/gettingStartedDocs/unreal/sessionReplay.tsx b/static/app/gettingStartedDocs/unreal/sessionReplay.tsx new file mode 100644 index 000000000000..578a20e5b32d --- /dev/null +++ b/static/app/gettingStartedDocs/unreal/sessionReplay.tsx @@ -0,0 +1,79 @@ +import {ExternalLink} from '@sentry/scraps/link'; + +import type {OnboardingConfig} from 'sentry/components/onboarding/gettingStartedDoc/types'; +import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types'; +import {t, tct} from 'sentry/locale'; + +const getConfigureIniSnippet = () => `[/Script/Sentry.SentrySettings] +AttachSessionReplay=True`; + +export const sessionReplay: OnboardingConfig = { + install: () => [ + { + type: StepType.INSTALL, + content: [ + { + type: 'text', + text: tct( + 'Session Replay is available in the Sentry Unreal Engine SDK. Make sure the Sentry plugin is installed and configured by following the [link:Unreal Engine setup guide] before enabling Session Replay.', + { + link: , + } + ), + }, + { + type: 'alert', + alertType: 'info', + showIcon: false, + text: t('Session Replay for Unreal Engine is currently experimental.'), + }, + ], + }, + ], + configure: () => [ + { + type: StepType.CONFIGURE, + content: [ + { + type: 'text', + text: tct( + 'Enable Session Replay from the Sentry configuration window by going to [strong:Project Settings > Plugins > Sentry] and toggling the [strong:Enable session replay (experimental)] option.', + {strong: } + ), + }, + { + type: 'text', + text: t( + 'Alternatively, you can enable Session Replay by adding the following to your project config file:' + ), + }, + { + type: 'code', + language: 'ini', + code: getConfigureIniSnippet(), + }, + { + type: 'text', + text: tct( + 'You can tune the replay duration, target framerate, and target bitrate from the same settings window. For the full list of options, see the [link:Session Replay documentation].', + { + link: ( + + ), + } + ), + }, + { + type: 'alert', + alertType: 'warning', + showIcon: false, + text: t( + 'Unlike our browser and mobile SDKs, the Unreal Engine SDK does not automatically mask sensitive content in the recorded footage. Make sure no sensitive information is displayed while Session Replay is enabled.' + ), + }, + ], + }, + ], + verify: () => [], + nextSteps: () => [], +};