Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
3bb930f
add to withLoggingOnboarding
JoshuaMoelans Dec 2, 2025
04ff44a
add native logs onboarding
JoshuaMoelans Dec 2, 2025
9ddd0bd
Add logs onboarding for dotnet, symfony and unreal
JoshuaMoelans Dec 2, 2025
ad62efe
add tracing to native/unity/unreal
JoshuaMoelans Dec 2, 2025
f2ce4ed
fixup native onboarding
JoshuaMoelans Dec 2, 2025
eebb1ca
add mock for native onboarding
JoshuaMoelans Dec 2, 2025
4308906
use DocsParams directly
JoshuaMoelans Dec 30, 2025
97c8487
chore(cleanup): remove tracing-related content to keep original PR lo…
JoshuaMoelans Dec 31, 2025
f3c1a29
further performace_monitoring cleanup
JoshuaMoelans Jan 9, 2026
b9a911e
add/fix logs onboarding
JoshuaMoelans Jan 9, 2026
c34b024
feat(onboarding): Add logs for .NET platforms
alexander-alderman-webb Jan 19, 2026
9d23394
add comma to gcp config
alexander-alderman-webb Jan 20, 2026
cb6048d
feat(onboarding): Logs page for .NET platforms (#106550)
alexander-alderman-webb Jan 20, 2026
aa12c66
cleanup unreal gettingStartedDocs
JoshuaMoelans Jan 20, 2026
de53264
remove unnecessary link from native logs
JoshuaMoelans Jan 20, 2026
85eb3cc
reduce duplication for Unreal logs
JoshuaMoelans Jan 20, 2026
fa39a8f
logsVerify for native
JoshuaMoelans Jan 20, 2026
289c696
verifyLogs for Unity
JoshuaMoelans Jan 20, 2026
0b0d848
cleanup unreal onboarding
JoshuaMoelans Jan 20, 2026
8b6daca
logsVerify for php-symfony
JoshuaMoelans Jan 20, 2026
c4e7597
fix test
JoshuaMoelans Jan 20, 2026
a251b1f
small unity fix
JoshuaMoelans Jan 21, 2026
32eadef
add Godot logs
JoshuaMoelans Jan 21, 2026
7c0b26e
fix Unity API
JoshuaMoelans Jan 21, 2026
4d70c3f
update godot logs
JoshuaMoelans Jan 21, 2026
b3793e1
bump dotnet version fallback & simplify fallback version in utils.tsx
JoshuaMoelans Jan 22, 2026
f2e17b7
cleanup unnecessary godot logs code snippet
JoshuaMoelans Jan 22, 2026
7ac8cf6
update dotnetLogs to logs
JoshuaMoelans Jan 22, 2026
4946d21
change logs tests to be visual
JoshuaMoelans Jan 22, 2026
539a83f
fix godot param
JoshuaMoelans Jan 22, 2026
67dff7a
Merge branch 'master' into joshua/chore/logs_onboarding
Flash0ver Jan 28, 2026
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
27 changes: 18 additions & 9 deletions static/app/components/onboarding/productSelection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,15 +92,19 @@ export const platformProductAvailability = {
'apple-macos': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.PROFILING],
bun: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
capacitor: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.SESSION_REPLAY],
dotnet: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.PROFILING],
'dotnet-aspnet': [ProductSolution.PERFORMANCE_MONITORING],
'dotnet-aspnetcore': [ProductSolution.PERFORMANCE_MONITORING],
'dotnet-awslambda': [ProductSolution.PERFORMANCE_MONITORING],
'dotnet-gcpfunctions': [ProductSolution.PERFORMANCE_MONITORING],
'dotnet-maui': [ProductSolution.PERFORMANCE_MONITORING],
'dotnet-winforms': [ProductSolution.PERFORMANCE_MONITORING],
'dotnet-wpf': [ProductSolution.PERFORMANCE_MONITORING],
'dotnet-xamarin': [ProductSolution.PERFORMANCE_MONITORING],
dotnet: [
ProductSolution.PERFORMANCE_MONITORING,
ProductSolution.PROFILING,
ProductSolution.LOGS,
],
'dotnet-aspnet': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
'dotnet-aspnetcore': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
'dotnet-awslambda': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
'dotnet-gcpfunctions': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
'dotnet-maui': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
'dotnet-winforms': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
'dotnet-wpf': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
'dotnet-xamarin': [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
dart: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
kotlin: [ProductSolution.PERFORMANCE_MONITORING],
go: [
Expand Down Expand Up @@ -143,6 +147,7 @@ export const platformProductAvailability = {
ProductSolution.LOGS,
ProductSolution.METRICS,
],
godot: [ProductSolution.LOGS],
ionic: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.SESSION_REPLAY],
java: [
ProductSolution.PERFORMANCE_MONITORING,
Expand Down Expand Up @@ -232,6 +237,7 @@ export const platformProductAvailability = {
ProductSolution.LOGS,
ProductSolution.METRICS,
],
native: [ProductSolution.LOGS],
node: [
ProductSolution.PERFORMANCE_MONITORING,
ProductSolution.PROFILING,
Expand Down Expand Up @@ -322,6 +328,7 @@ export const platformProductAvailability = {
'php-symfony': [
ProductSolution.PERFORMANCE_MONITORING,
ProductSolution.PROFILING,
ProductSolution.LOGS,
ProductSolution.METRICS,
],
python: [
Expand Down Expand Up @@ -447,6 +454,8 @@ export const platformProductAvailability = {
ProductSolution.PROFILING,
ProductSolution.LOGS,
],
unity: [ProductSolution.LOGS],
unreal: [ProductSolution.LOGS],
} as Record<PlatformKey, ProductSolution[]>;

type ProductProps = {
Expand Down
16 changes: 16 additions & 0 deletions static/app/data/platformCategories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,18 @@ export const withLoggingOnboarding: Set<PlatformKey> = new Set([
'apple-ios',
'apple-macos',
'bun',
'cocoa-objc',
'cocoa-swift',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing docs for platforms added to withLoggingOnboarding

Medium Severity

cocoa-objc and cocoa-swift are added to withLoggingOnboarding, but no gettingStartedDocs exist for these platforms. When useLoadGettingStarted runs with productType === 'logs' for these platforms, it will attempt a dynamic import that fails, resulting in an error logged to Sentry and empty documentation shown to users. Unlike apple which re-exports from apple-macos, there's no aliasing mechanism for these legacy platform identifiers.

Fix in Cursor Fix in Web

'dart',
'dotnet',
'dotnet-aspnet',
'dotnet-aspnetcore',
'dotnet-awslambda',
'dotnet-gcpfunctions',
'dotnet-maui',
'dotnet-winforms',
'dotnet-wpf',
'dotnet-xamarin',
'flutter',
'go',
'go-echo',
Expand All @@ -315,6 +326,7 @@ export const withLoggingOnboarding: Set<PlatformKey> = new Set([
'go-iris',
'go-martini',
'go-negroni',
'godot',
'java',
'java-log4j2',
'java-logback',
Expand All @@ -336,6 +348,7 @@ export const withLoggingOnboarding: Set<PlatformKey> = new Set([
'javascript-sveltekit',
'javascript-tanstackstart-react',
'javascript-vue',
'native',
'node',
'node-azurefunctions',
'node-connect',
Expand All @@ -350,6 +363,7 @@ export const withLoggingOnboarding: Set<PlatformKey> = new Set([
'node-nestjs',
'php',
'php-laravel',
'php-symfony',
'python',
'python-aiohttp',
'python-asgi',
Expand All @@ -376,6 +390,8 @@ export const withLoggingOnboarding: Set<PlatformKey> = new Set([
'ruby-rack',
'ruby-rails',
'rust',
'unity',
'unreal',
]);

// List of platforms that do not have logging support. We make use of this list in the product to not provide any Logging
Expand Down
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-aspnet/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {
feedbackOnboardingJsLoader,
replayOnboardingJsLoader,
Expand All @@ -12,6 +13,7 @@ const docs: Docs = {
replayOnboardingJsLoader,
crashReportOnboarding: crashReport,
feedbackOnboardingJsLoader,
logsOnboarding: logs,
};

export default docs;
12 changes: 12 additions & 0 deletions static/app/gettingStartedDocs/dotnet-aspnet/onboarding.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@ describe('aspnet onboarding docs', () => {
version: '1.99.9',
},
},
selectedProducts: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
});

// Renders main headings
expect(screen.getByRole('heading', {name: 'Install'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Configure SDK'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Documentation'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Samples'})).toBeInTheDocument();

// Renders SDK version from registry
Expand All @@ -39,4 +41,14 @@ describe('aspnet onboarding docs', () => {
await screen.findByText(textWithMarkupMatcher(/o.TracesSampleRate/))
).toBeInTheDocument();
});

it('renders logs onboarding docs correctly', async () => {
renderWithOnboardingLayout(docs, {
selectedProducts: [ProductSolution.LOGS],
});

expect(
await screen.findByText(textWithMarkupMatcher(/o.EnableLogs/))
).toBeInTheDocument();
});
});
17 changes: 16 additions & 1 deletion static/app/gettingStartedDocs/dotnet-aspnet/onboarding.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import type {
OnboardingConfig,
} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs';
import {t, tct} from 'sentry/locale';
import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion';

Expand Down Expand Up @@ -50,6 +51,12 @@ public class MvcApplication : HttpApplication
// We recommend adjusting this value in production
o.TracesSampleRate = 1.0;`
: ''
}${
params.isLogsSelected
? `
// Enable logs to be sent to Sentry
o.EnableLogs = true;`
: ''
}
// If you are using EF (and installed the NuGet package):
o.AddEntityFramework();
Expand Down Expand Up @@ -136,7 +143,7 @@ export const onboarding: OnboardingConfig = {
},
],
// TODO: Add proper verify step
verify: () => [
verify: params => [
{
title: t('Documentation'),
content: [
Expand All @@ -153,6 +160,14 @@ export const onboarding: OnboardingConfig = {
},
],
},
...(params.isLogsSelected
? [
{
title: t('Verify Logs'),
content: [logsVerify(params)],
},
]
: []),
{
title: t('Samples'),
content: [
Expand Down
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-aspnetcore/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {
feedbackOnboardingJsLoader,
replayOnboardingJsLoader,
Expand All @@ -12,6 +13,7 @@ const docs: Docs = {
replayOnboardingJsLoader,
crashReportOnboarding: crashReport,
feedbackOnboardingJsLoader,
logsOnboarding: logs,
};

export default docs;
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@ describe('aspnetcore onboarding docs', () => {
version: '1.99.9',
},
},
selectedProducts: [ProductSolution.PERFORMANCE_MONITORING, ProductSolution.LOGS],
});

// Renders main headings
expect(screen.getByRole('heading', {name: 'Install'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Configure SDK'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Verify'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Tracing'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Samples'})).toBeInTheDocument();

// Renders SDK version from registry
Expand All @@ -40,4 +42,14 @@ describe('aspnetcore onboarding docs', () => {
await screen.findByText(textWithMarkupMatcher(/o.TracesSampleRate/))
).toBeInTheDocument();
});

it('renders logs onboarding docs correctly', async () => {
renderWithOnboardingLayout(docs, {
selectedProducts: [ProductSolution.LOGS],
});

expect(
await screen.findByText(textWithMarkupMatcher(/o.EnableLogs/))
).toBeInTheDocument();
});
});
15 changes: 15 additions & 0 deletions static/app/gettingStartedDocs/dotnet-aspnetcore/onboarding.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import type {
OnboardingStep,
} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs';
import {t, tct} from 'sentry/locale';
import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion';

Expand Down Expand Up @@ -40,6 +41,12 @@ public static IHostBuilder CreateHostBuilder(string[] args) =>
// We recommend adjusting this value in production
o.TracesSampleRate = 1.0;`
: ''
}${
params.isLogsSelected
? `
// Enable logs to be sent to Sentry
o.EnableLogs = true;`
: ''
}
});
});`;
Expand Down Expand Up @@ -177,6 +184,14 @@ export const onboarding: OnboardingConfig = {
},
] satisfies OnboardingStep[])
: []),
...(params.isLogsSelected
? [
{
title: t('Verify Logs'),
content: [logsVerify(params)],
},
]
: []),
{
title: t('Samples'),
content: [
Expand Down
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-awslambda/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';

import {crashReport} from './crashReport';
import {onboarding} from './onboarding';
Expand All @@ -8,6 +9,7 @@ const docs: Docs = {
onboarding,
feedbackOnboardingCrashApi: feedback,
crashReportOnboarding: crashReport,
logsOnboarding: logs,
};

export default docs;
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@ describe('awslambda onboarding docs', () => {
version: '1.99.9',
},
},
selectedProducts: [ProductSolution.LOGS],
});

// Renders main headings
expect(screen.getByRole('heading', {name: 'Install'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Configure SDK'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Verify'})).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Verify Logs'})).toBeInTheDocument();

// Renders SDK version from registry
expect(
Expand All @@ -38,4 +40,14 @@ describe('awslambda onboarding docs', () => {
await screen.findByText(textWithMarkupMatcher(/o.TracesSampleRate/))
).toBeInTheDocument();
});

it('renders logs onboarding docs correctly', async () => {
renderWithOnboardingLayout(docs, {
selectedProducts: [ProductSolution.LOGS],
});

expect(
await screen.findByText(textWithMarkupMatcher(/o.EnableLogs/))
).toBeInTheDocument();
});
});
17 changes: 16 additions & 1 deletion static/app/gettingStartedDocs/dotnet-awslambda/onboarding.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import type {
OnboardingConfig,
} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {logsVerify} from 'sentry/gettingStartedDocs/dotnet/logs';
import {t, tct} from 'sentry/locale';
import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion';

Expand Down Expand Up @@ -41,6 +42,12 @@ public class LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFu
// We recommend adjusting this value in production.
o.TracesSampleRate = 1.0;`
: ''
}${
params.isLogsSelected
? `
// Enable logs to be sent to Sentry
o.EnableLogs = true;`
: ''
}
})
.UseStartup<Startup>();
Expand Down Expand Up @@ -126,7 +133,7 @@ export const onboarding: OnboardingConfig = {
],
},
],
verify: () => [
verify: params => [
{
type: StepType.VERIFY,
content: [
Expand Down Expand Up @@ -161,5 +168,13 @@ export const onboarding: OnboardingConfig = {
},
],
},
...(params.isLogsSelected
? [
{
title: t('Verify Logs'),
content: [logsVerify(params)],
},
]
: []),
],
};
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-gcpfunctions/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';

import {crashReport} from './crashReport';
import {onboarding} from './onboarding';
Expand All @@ -8,6 +9,7 @@ const docs: Docs = {
onboarding,
feedbackOnboardingCrashApi: feedback,
crashReportOnboarding: crashReport,
logsOnboarding: logs,
};

export default docs;
Loading
Loading