Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions static/app/components/replaysOnboarding/sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {TextOverflow} from 'sentry/components/textOverflow';
import {
replayBackendPlatforms,
replayFrontendPlatforms,
replayGamingPlatforms,
replayJsLoaderInstructionsPlatformList,
replayMobilePlatforms,
replayOnboardingPlatforms,
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -313,7 +320,7 @@ function OnboardingContent({
/>
</Container>
) : (
!mobilePlatform &&
!nativeReplayPlatform &&
(docs?.platformOptions?.siblingOption || docs?.platformOptions?.packageManager) &&
!isProjKeysLoading && (
<Flex gap="md" align="center" wrap="wrap">
Expand Down Expand Up @@ -399,7 +406,7 @@ function OnboardingContent({
<Fragment>
{radioButtons}
<ReplayOnboardingLayout
hideMaskBlockToggles={mobilePlatform}
hideMaskBlockToggles={nativeReplayPlatform}
docsConfig={docs}
dsn={dsn}
projectKeyId={projectKeyId}
Expand All @@ -409,7 +416,7 @@ function OnboardingContent({
configType={
setupMode === 'npm' || // switched to NPM option
npmOnlyFramework ||
mobilePlatform // even if '?mode=jsLoader', only show npm/default instructions for FE frameworks & mobile platforms
nativeReplayPlatform // even if '?mode=jsLoader', only show npm/default instructions for FE frameworks, mobile & gaming platforms
? 'replayOnboarding'
: 'replayOnboardingJsLoader'
}
Expand Down
5 changes: 5 additions & 0 deletions static/app/data/platformCategories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -717,11 +717,15 @@ export const replayMobilePlatforms: PlatformKey[] = [
'cocoa-swift',
];

// These are the gaming/engine platforms that can set up replay.
export const replayGamingPlatforms: PlatformKey[] = ['unreal'];

// These are all the platforms that can set up replay.
export const replayPlatforms: readonly PlatformKey[] = [
...replayFrontendPlatforms,
...replayBackendPlatforms,
...replayMobilePlatforms,
...replayGamingPlatforms,
];

/**
Comment thread
sentry[bot] marked this conversation as resolved.
Expand All @@ -732,6 +736,7 @@ export const replayOnboardingPlatforms: readonly PlatformKey[] = [
...replayFrontendPlatforms.filter(p => !['javascript-backbone'].includes(p)),
...replayBackendPlatforms,
...replayMobilePlatforms,
...replayGamingPlatforms,
];

// These are the supported replay platforms that can also be set up using the JS loader.
Expand Down
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/unreal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
};
79 changes: 79 additions & 0 deletions static/app/gettingStartedDocs/unreal/sessionReplay.tsx
Original file line number Diff line number Diff line change
@@ -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: <ExternalLink href="https://docs.sentry.io/platforms/unreal/" />,
}
),
},
{
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: <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: (
<ExternalLink href="https://docs.sentry.io/platforms/unreal/session-replay/" />
),
}
),
},
{
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: () => [],
};
Loading