Skip to content

Commit c12edfc

Browse files
committed
feat(nextjs): auto-enable development export conditions in dev mode
The SDK's webpack config now automatically adds 'development' to resolve.conditionNames when running 'next dev'. This enables: - Spotlight auto-enablement from NEXT_PUBLIC_SENTRY_SPOTLIGHT env var - Other development-only SDK features Users no longer need manual webpack configuration for Spotlight to work.
1 parent 5fdcf7d commit c12edfc

File tree

2 files changed

+10
-13
lines changed

2 files changed

+10
-13
lines changed

dev-packages/e2e-tests/test-applications/nextjs-15-spotlight/next.config.js

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,6 @@ const nextConfig = {
77
env: {
88
NEXT_PUBLIC_SENTRY_SPOTLIGHT: 'true',
99
},
10-
11-
// Configure webpack to use 'development' export condition in dev mode
12-
// This enables Sentry SDK's development-only features like Spotlight auto-enablement
13-
webpack: (config, { dev }) => {
14-
if (dev) {
15-
// Add 'development' to the front of conditionNames to prioritize dev exports
16-
config.resolve.conditionNames = [
17-
'development',
18-
...(config.resolve.conditionNames || ['import', 'module', 'browser', 'require', 'node', 'default']),
19-
];
20-
}
21-
return config;
22-
},
2310
};
2411

2512
module.exports = withSentryConfig(nextConfig, {

packages/nextjs/src/config/webpack.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,16 @@ export function constructWebpackConfigFunction({
9797
// `newConfig.module.rules` is required, so we don't have to keep asserting its existence
9898
const newConfig = setUpModuleRules(rawNewConfig);
9999

100+
// In development mode, add 'development' to resolve conditions so that
101+
// @sentry/* packages use their development exports (which include features like Spotlight auto-enablement)
102+
if (isDev) {
103+
newConfig.resolve = newConfig.resolve || {};
104+
newConfig.resolve.conditionNames = [
105+
'development',
106+
...(newConfig.resolve.conditionNames || ['import', 'module', 'browser', 'require', 'node', 'default']),
107+
];
108+
}
109+
100110
// Add a loader which will inject code that sets global values
101111
addValueInjectionLoader({
102112
newConfig,

0 commit comments

Comments
 (0)