Skip to content

Commit 381b7c5

Browse files
scttcperclaude
andcommitted
feat(feature-flags): Add Bun and Deno support to feature flag onboarding
Both @sentry/bun and @sentry/deno export featureFlagsIntegration, but neither was wired up in the feature flag onboarding sidebar. Bun just needs the package name override. Deno uses a different import path (npm:@sentry/deno) so featureFlag() now accepts an optional sentryImport param — when set it swaps the install step from npm/yarn/pnpm tabs to a single import statement, matching the pattern from deno/agentMonitoring.tsx. Also adds bun and deno to featureFlagOnboardingPlatforms and featureFlagDrawerPlatforms, same pattern as agentMonitoringPlatforms. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 026d33b commit 381b7c5

File tree

4 files changed

+63
-29
lines changed

4 files changed

+63
-29
lines changed

static/app/data/platformCategories.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -843,14 +843,22 @@ export const feedbackOnboardingPlatforms: readonly PlatformKey[] = [
843843
const platformKeys = platforms.map(p => p.id);
844844

845845
// Feature flag platforms with gettingStartedDocs. Note backend js platforms start with 'node-'.
846-
export const featureFlagOnboardingPlatforms: readonly PlatformKey[] = platformKeys.filter(
847-
id => id.startsWith('javascript') || id.startsWith('node') || id.startsWith('python')
848-
);
846+
export const featureFlagOnboardingPlatforms: readonly PlatformKey[] = [
847+
...platformKeys.filter(
848+
id => id.startsWith('javascript') || id.startsWith('node') || id.startsWith('python')
849+
),
850+
'bun',
851+
'deno',
852+
];
849853

850854
// Feature flag platforms to show the issue details distribution drawer for.
851-
export const featureFlagDrawerPlatforms: readonly PlatformKey[] = platformKeys.filter(
852-
id => id.startsWith('javascript') || id.startsWith('node') || id.startsWith('python')
853-
);
855+
export const featureFlagDrawerPlatforms: readonly PlatformKey[] = [
856+
...platformKeys.filter(
857+
id => id.startsWith('javascript') || id.startsWith('node') || id.startsWith('python')
858+
),
859+
'bun',
860+
'deno',
861+
];
854862

855863
export const agentMonitoringPlatforms: ReadonlySet<PlatformKey> = new Set([
856864
...platformKeys.filter(id => id.startsWith('javascript')),

static/app/gettingStartedDocs/bun/index.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
feedbackOnboardingJsLoader,
55
replayOnboardingJsLoader,
66
} from 'sentry/gettingStartedDocs/javascript/jsLoader';
7+
import {featureFlag} from 'sentry/gettingStartedDocs/node/featureFlag';
78
import {getNodeLogsOnboarding} from 'sentry/gettingStartedDocs/node/utils';
89

910
import {crashReport} from './crashReport';
@@ -14,6 +15,9 @@ export const docs: Docs = {
1415
replayOnboardingJsLoader,
1516
crashReportOnboarding: crashReport,
1617
feedbackOnboardingJsLoader,
18+
featureFlagOnboarding: featureFlag({
19+
packageName: '@sentry/bun',
20+
}),
1721
logsOnboarding: getNodeLogsOnboarding({
1822
docsPlatform: 'bun',
1923
packageName: '@sentry/bun',

static/app/gettingStartedDocs/deno/index.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
feedbackOnboardingJsLoader,
44
replayOnboardingJsLoader,
55
} from 'sentry/gettingStartedDocs/javascript/jsLoader';
6+
import {featureFlag} from 'sentry/gettingStartedDocs/node/featureFlag';
67

78
import {agentMonitoring} from './agentMonitoring';
89
import {onboarding} from './onboarding';
@@ -11,5 +12,9 @@ export const docs: Docs = {
1112
onboarding,
1213
replayOnboardingJsLoader,
1314
feedbackOnboardingJsLoader,
15+
featureFlagOnboarding: featureFlag({
16+
packageName: '@sentry/deno',
17+
sentryImport: 'import * as Sentry from "npm:@sentry/deno";',
18+
}),
1419
agentMonitoringOnboarding: agentMonitoring,
1520
};

static/app/gettingStartedDocs/node/featureFlag.tsx

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,13 @@ type FeatureFlagConfiguration = {
1111
// Node.js only supports the generic featureFlagsIntegration. Vendor-specific
1212
// integrations (LaunchDarkly, OpenFeature, etc.) are browser-only in @sentry/browser.
1313
// All providers therefore use the same generic setup.
14-
function getGenericConfig(packageName: `@sentry/${string}`): FeatureFlagConfiguration {
14+
function getGenericConfig(
15+
packageName: `@sentry/${string}`,
16+
sentryImport?: string
17+
): FeatureFlagConfiguration {
18+
const importStatement = sentryImport ?? `import * as Sentry from "${packageName}";`;
1519
return {
16-
makeConfigureCode: (dsn: string) => `import * as Sentry from "${packageName}";
20+
makeConfigureCode: (dsn: string) => `${importStatement}
1721
1822
Sentry.init({
1923
dsn: "${dsn}",
@@ -31,9 +35,10 @@ Sentry.captureException(new Error("Something went wrong!"));`,
3135
}
3236

3337
function getFeatureFlagConfigurationMap(
34-
packageName: `@sentry/${string}`
38+
packageName: `@sentry/${string}`,
39+
sentryImport?: string
3540
): Record<FeatureFlagProviderEnum, FeatureFlagConfiguration> {
36-
const config = getGenericConfig(packageName);
41+
const config = getGenericConfig(packageName, sentryImport);
3742
return {
3843
[FeatureFlagProviderEnum.GENERIC]: config,
3944
[FeatureFlagProviderEnum.LAUNCHDARKLY]: config,
@@ -45,12 +50,14 @@ function getFeatureFlagConfigurationMap(
4550

4651
export const featureFlag = ({
4752
packageName = '@sentry/node',
53+
sentryImport,
4854
}: {
4955
packageName?: `@sentry/${string}`;
56+
sentryImport?: string;
5057
} = {}): OnboardingConfig => ({
5158
install: () => [],
5259
configure: ({featureFlagOptions = {integration: ''}, dsn}) => {
53-
const configMap = getFeatureFlagConfigurationMap(packageName);
60+
const configMap = getFeatureFlagConfigurationMap(packageName, sentryImport);
5461
const {makeConfigureCode, makeVerifyCode} =
5562
configMap[featureFlagOptions.integration as keyof typeof configMap];
5663

@@ -60,27 +67,37 @@ export const featureFlag = ({
6067
content: [
6168
{
6269
type: 'text',
63-
text: t('Install the Sentry SDK.'),
70+
text: sentryImport
71+
? t('Import the Sentry SDK.')
72+
: t('Install the Sentry SDK.'),
6473
},
6574
{
6675
type: 'code',
67-
tabs: [
68-
{
69-
label: 'npm',
70-
language: 'bash',
71-
code: `npm install --save ${packageName}`,
72-
},
73-
{
74-
label: 'yarn',
75-
language: 'bash',
76-
code: `yarn add ${packageName}`,
77-
},
78-
{
79-
label: 'pnpm',
80-
language: 'bash',
81-
code: `pnpm add ${packageName}`,
82-
},
83-
],
76+
tabs: sentryImport
77+
? [
78+
{
79+
label: 'JavaScript',
80+
language: 'javascript',
81+
code: sentryImport,
82+
},
83+
]
84+
: [
85+
{
86+
label: 'npm',
87+
language: 'bash',
88+
code: `npm install --save ${packageName}`,
89+
},
90+
{
91+
label: 'yarn',
92+
language: 'bash',
93+
code: `yarn add ${packageName}`,
94+
},
95+
{
96+
label: 'pnpm',
97+
language: 'bash',
98+
code: `pnpm add ${packageName}`,
99+
},
100+
],
84101
},
85102
],
86103
},

0 commit comments

Comments
 (0)