From fec0235202291170ee95765d818ebe74d955c944 Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Tue, 12 May 2026 23:15:26 +0200 Subject: [PATCH 1/2] fix(onboarding): Update JS snippets when logs or metrics are toggled The base JavaScript onboarding did not react to logs or metrics product selection changes, unlike all other JS framework variants (React, Angular, Vue, Svelte). Add enableLogs to init config, a logger example to the verify snippet, and logs next-step links for both loader-script and npm/yarn install modes. Co-Authored-By: Claude Opus 4.6 --- .../gettingStartedDocs/javascript/utils.tsx | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/static/app/gettingStartedDocs/javascript/utils.tsx b/static/app/gettingStartedDocs/javascript/utils.tsx index af7ed955ec50..5757a15e9750 100644 --- a/static/app/gettingStartedDocs/javascript/utils.tsx +++ b/static/app/gettingStartedDocs/javascript/utils.tsx @@ -92,6 +92,12 @@ const getDynamicParts = (params: Params): string[] => { replaysOnErrorSampleRate: 1.0 // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.`); } + if (params.isLogsSelected) { + dynamicParts.push(` + // Enable logs to be sent to Sentry + enableLogs: true`); + } + if (params.isProfilingSelected) { dynamicParts.push(` // Set profileSessionSampleRate to 1.0 to profile during every session. @@ -146,13 +152,21 @@ export const installSnippetBlock: ContentBlock = { }; const getVerifyJSSnippet = (params: Params) => { + const logsCode = params.isLogsSelected + ? ` // Send a log before calling undefined function + Sentry.logger.info('User triggered test error', { + action: 'test_error_button_click', + }); +` + : ''; + const metricsCode = params.isMetricsSelected ? ` // Send a test metric before calling undefined function Sentry.metrics.count('test_counter', 1); ` : ''; - return `${metricsCode}myUndefinedFunction();`; + return `${logsCode}${metricsCode}myUndefinedFunction();`; }; const getVerifySnippetBlock = (params: Params): ContentBlock[] => [ @@ -325,6 +339,17 @@ export const loaderScriptOnboarding: OnboardingConfig = { }, ]; + if (params.isLogsSelected) { + steps.push({ + id: 'logs', + name: t('Logs'), + description: t( + 'Learn how to send structured logs to Sentry and correlate them with your errors.' + ), + link: 'https://docs.sentry.io/platforms/javascript/logs/', + }); + } + if (params.isMetricsSelected) { steps.push({ id: 'metrics', @@ -445,6 +470,17 @@ export const packageManagerOnboarding: OnboardingConfig = { nextSteps: (params: Params) => { const steps = []; + if (params.isLogsSelected) { + steps.push({ + id: 'logs', + name: t('Logs'), + description: t( + 'Learn how to send structured logs to Sentry and correlate them with your errors.' + ), + link: 'https://docs.sentry.io/platforms/javascript/logs/', + }); + } + if (params.isMetricsSelected) { steps.push({ id: 'metrics', From c163d31e63c038cdc5af61783dc60bb1ec6966b6 Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Tue, 12 May 2026 23:19:41 +0200 Subject: [PATCH 2/2] fix(onboarding): Add missing logs/metrics snippets to Vue, SolidStart, TanStack Start Vue was missing logs in its verify snippet. SolidStart was missing enableLogs in both client and server init configs and metrics in nextSteps. TanStack Start was missing logs in its verify snippet and had no nextSteps at all. Co-Authored-By: Claude Opus 4.6 --- .../javascript-solidstart/onboarding.tsx | 17 +++++++++ .../javascript-solidstart/utils.tsx | 6 ++++ .../onboarding.tsx | 35 +++++++++++++++++++ .../javascript-vue/onboarding.tsx | 10 +++++- 4 files changed, 67 insertions(+), 1 deletion(-) diff --git a/static/app/gettingStartedDocs/javascript-solidstart/onboarding.tsx b/static/app/gettingStartedDocs/javascript-solidstart/onboarding.tsx index 60686c51baee..8da5d968006d 100644 --- a/static/app/gettingStartedDocs/javascript-solidstart/onboarding.tsx +++ b/static/app/gettingStartedDocs/javascript-solidstart/onboarding.tsx @@ -25,6 +25,12 @@ Sentry.init({ // Set 'tracePropagationTargets' to control for which URLs distributed tracing should be enabled tracePropagationTargets: ["localhost", /^https:\\/\\/yourserver\\.io\\/api/],` : '' + }${ + params.isLogsSelected + ? ` + // Enable logs to be sent to Sentry + enableLogs: true,` + : '' }${ params.isProfilingSelected ? ` @@ -334,6 +340,17 @@ export const onboarding: OnboardingConfig = { }); } + if (params.isMetricsSelected) { + steps.push({ + id: 'metrics', + name: t('Application Metrics'), + description: t( + 'Learn how to track custom metrics to monitor your application performance and business KPIs.' + ), + link: 'https://docs.sentry.io/platforms/javascript/guides/solidstart/metrics/', + }); + } + return steps; }, }; diff --git a/static/app/gettingStartedDocs/javascript-solidstart/utils.tsx b/static/app/gettingStartedDocs/javascript-solidstart/utils.tsx index 36822ac1ca2b..de6f2bd6081d 100644 --- a/static/app/gettingStartedDocs/javascript-solidstart/utils.tsx +++ b/static/app/gettingStartedDocs/javascript-solidstart/utils.tsx @@ -54,6 +54,12 @@ const getDynamicParts = (params: DocsParams): string[] => { replaysOnErrorSampleRate: 1.0 // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.`); } + if (params.isLogsSelected) { + dynamicParts.push(` + // Enable logs to be sent to Sentry + enableLogs: true`); + } + if (params.isProfilingSelected) { dynamicParts.push(` // Set profileSessionSampleRate to 1.0 to profile during every session. diff --git a/static/app/gettingStartedDocs/javascript-tanstackstart-react/onboarding.tsx b/static/app/gettingStartedDocs/javascript-tanstackstart-react/onboarding.tsx index e8eebfc53ff1..eefc5b8645ff 100644 --- a/static/app/gettingStartedDocs/javascript-tanstackstart-react/onboarding.tsx +++ b/static/app/gettingStartedDocs/javascript-tanstackstart-react/onboarding.tsx @@ -498,6 +498,14 @@ const route = createRoute({ code: `