diff --git a/static/app/gettingStartedDocs/python/django/index.tsx b/static/app/gettingStartedDocs/python/django/index.tsx
new file mode 100644
index 00000000000000..d67153fbcd9d7a
--- /dev/null
+++ b/static/app/gettingStartedDocs/python/django/index.tsx
@@ -0,0 +1,31 @@
+import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
+import {
+ feedbackOnboardingJsLoader,
+ replayOnboardingJsLoader,
+} from 'sentry/gettingStartedDocs/javascript/jsLoader/jsLoader';
+import {agentMonitoring} from 'sentry/gettingStartedDocs/python/python/agentMonitoring';
+import {crashReport} from 'sentry/gettingStartedDocs/python/python/crashReport';
+import {featureFlag} from 'sentry/gettingStartedDocs/python/python/featureFlag';
+import {logs} from 'sentry/gettingStartedDocs/python/python/logs';
+import {mcp} from 'sentry/gettingStartedDocs/python/python/mcp';
+import {profiling} from 'sentry/gettingStartedDocs/python/python/profiling';
+
+import {onboarding} from './onboarding';
+import {performance} from './performance';
+
+const docs: Docs = {
+ onboarding,
+ replayOnboardingJsLoader,
+ profilingOnboarding: profiling({basePackage: 'sentry-sdk[django]'}),
+ performanceOnboarding: performance,
+ crashReportOnboarding: crashReport,
+ featureFlagOnboarding: featureFlag,
+ feedbackOnboardingJsLoader,
+ agentMonitoringOnboarding: agentMonitoring,
+ mcpOnboarding: mcp,
+ logsOnboarding: logs({
+ packageName: 'sentry-sdk[django]',
+ }),
+};
+
+export default docs;
diff --git a/static/app/gettingStartedDocs/python/django.spec.tsx b/static/app/gettingStartedDocs/python/django/onboarding.spec.tsx
similarity index 99%
rename from static/app/gettingStartedDocs/python/django.spec.tsx
rename to static/app/gettingStartedDocs/python/django/onboarding.spec.tsx
index 4acb3dc6491af8..15ba81570b59ff 100644
--- a/static/app/gettingStartedDocs/python/django.spec.tsx
+++ b/static/app/gettingStartedDocs/python/django/onboarding.spec.tsx
@@ -6,7 +6,7 @@ import {textWithMarkupMatcher} from 'sentry-test/utils';
import {ProductSolution} from 'sentry/components/onboarding/gettingStartedDoc/types';
-import docs from './django';
+import docs from '.';
describe('django onboarding docs', () => {
it('renders doc correctly', () => {
diff --git a/static/app/gettingStartedDocs/python/django.tsx b/static/app/gettingStartedDocs/python/django/onboarding.tsx
similarity index 82%
rename from static/app/gettingStartedDocs/python/django.tsx
rename to static/app/gettingStartedDocs/python/django/onboarding.tsx
index 5426f1ee7a2839..320611f8d3264c 100644
--- a/static/app/gettingStartedDocs/python/django.tsx
+++ b/static/app/gettingStartedDocs/python/django/onboarding.tsx
@@ -1,29 +1,15 @@
import {ExternalLink} from 'sentry/components/core/link';
import {
StepType,
- type Docs,
type DocsParams,
type OnboardingConfig,
} from 'sentry/components/onboarding/gettingStartedDoc/types';
-import {
- feedbackOnboardingJsLoader,
- replayOnboardingJsLoader,
-} from 'sentry/gettingStartedDocs/javascript/jsLoader/jsLoader';
-import {agentMonitoring} from 'sentry/gettingStartedDocs/python/python/agentMonitoring';
-import {crashReport} from 'sentry/gettingStartedDocs/python/python/crashReport';
-import {featureFlag} from 'sentry/gettingStartedDocs/python/python/featureFlag';
-import {logs, verify} from 'sentry/gettingStartedDocs/python/python/logs';
-import {mcp} from 'sentry/gettingStartedDocs/python/python/mcp';
-import {
- alternativeProfiling,
- profiling,
-} from 'sentry/gettingStartedDocs/python/python/profiling';
+import {verify} from 'sentry/gettingStartedDocs/python/python/logs';
+import {alternativeProfiling} from 'sentry/gettingStartedDocs/python/python/profiling';
import {getPythonInstallCodeBlock} from 'sentry/gettingStartedDocs/python/python/utils';
import {t, tct} from 'sentry/locale';
-type Params = DocsParams;
-
-const getSdkSetupSnippet = (params: Params) => `
+const getSdkSetupSnippet = (params: DocsParams) => `
import sentry_sdk
sentry_sdk.init(
@@ -65,7 +51,7 @@ sentry_sdk.init(
)
`;
-const onboarding: OnboardingConfig = {
+export const onboarding: OnboardingConfig = {
install: () => [
{
type: StepType.INSTALL,
@@ -80,7 +66,7 @@ const onboarding: OnboardingConfig = {
],
},
],
- configure: (params: Params) => [
+ configure: (params: DocsParams) => [
{
type: StepType.CONFIGURE,
content: [
@@ -104,7 +90,7 @@ const onboarding: OnboardingConfig = {
],
},
],
- verify: (params: Params) => [
+ verify: (params: DocsParams) => [
{
type: StepType.VERIFY,
content: [
@@ -152,7 +138,7 @@ urlpatterns = [
],
},
],
- nextSteps: (params: Params) => {
+ nextSteps: (params: DocsParams) => {
const steps = [] as any[];
if (params.isLogsSelected) {
steps.push({
@@ -168,7 +154,7 @@ urlpatterns = [
},
};
-const performanceOnboarding: OnboardingConfig = {
+export const performanceOnboarding: OnboardingConfig = {
introduction: () =>
t(
"Adding Performance to your Django project is simple. Make sure you've got these basics down."
@@ -239,20 +225,3 @@ sentry_sdk.init(
],
nextSteps: () => [],
};
-
-const docs: Docs = {
- onboarding,
- replayOnboardingJsLoader,
- profilingOnboarding: profiling({basePackage: 'sentry-sdk[django]'}),
- performanceOnboarding,
- crashReportOnboarding: crashReport,
- featureFlagOnboarding: featureFlag,
- feedbackOnboardingJsLoader,
- agentMonitoringOnboarding: agentMonitoring,
- mcpOnboarding: mcp,
- logsOnboarding: logs({
- packageName: 'sentry-sdk[django]',
- }),
-};
-
-export default docs;
diff --git a/static/app/gettingStartedDocs/python/django/performance.tsx b/static/app/gettingStartedDocs/python/django/performance.tsx
new file mode 100644
index 00000000000000..13257ce689b4e9
--- /dev/null
+++ b/static/app/gettingStartedDocs/python/django/performance.tsx
@@ -0,0 +1,80 @@
+import {ExternalLink} from 'sentry/components/core/link';
+import {
+ StepType,
+ type OnboardingConfig,
+} from 'sentry/components/onboarding/gettingStartedDoc/types';
+import {t, tct} from 'sentry/locale';
+
+import {onboarding} from './onboarding';
+
+export const performance: OnboardingConfig = {
+ introduction: () =>
+ t(
+ "Adding Performance to your Django project is simple. Make sure you've got these basics down."
+ ),
+ install: onboarding.install,
+ configure: params => [
+ {
+ type: StepType.CONFIGURE,
+ content: [
+ {
+ type: 'text',
+ text: tct(
+ 'To configure the Sentry SDK, initialize it in your [code:settings.py] file:',
+ {code: }
+ ),
+ },
+ {
+ type: 'code',
+ language: 'python',
+ code: `
+import sentry_sdk
+
+sentry_sdk.init(
+ dsn="${params.dsn.public}",
+
+ # Set traces_sample_rate to 1.0 to capture 100%
+ # of transactions for performance monitoring.
+ traces_sample_rate=1.0,
+)`,
+ },
+ {
+ type: 'text',
+ text: tct(
+ 'Learn more about tracing [linkTracingOptions:options], how to use the [linkTracesSampler:traces_sampler] function, or how to do [linkSampleTransactions:sampling].',
+ {
+ linkTracingOptions: (
+
+ ),
+ linkTracesSampler: (
+
+ ),
+ linkSampleTransactions: (
+
+ ),
+ }
+ ),
+ },
+ ],
+ },
+ ],
+ verify: () => [
+ {
+ type: StepType.VERIFY,
+ content: [
+ {
+ type: 'text',
+ text: tct(
+ 'Verify that performance monitoring is working correctly with our [link:automatic instrumentation] by simply using your Python application.',
+ {
+ link: (
+
+ ),
+ }
+ ),
+ },
+ ],
+ },
+ ],
+ nextSteps: () => [],
+};