Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
Prev Previous commit
Next Next commit
skip debug id injection for turbopack
  • Loading branch information
chargome committed Oct 3, 2025
commit cf156c35a1a2e0e1438f155ebc683af9d65c28cd
13 changes: 11 additions & 2 deletions packages/nextjs/src/config/handleRunAfterProductionCompile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@ import type { SentryBuildOptions } from './types';
* It is used to upload sourcemaps to Sentry.
*/
export async function handleRunAfterProductionCompile(
{ releaseName, distDir, buildTool }: { releaseName?: string; distDir: string; buildTool: 'webpack' | 'turbopack' },
{
releaseName,
distDir,
buildTool,
usesNativeDebugIds,
}: { releaseName?: string; distDir: string; buildTool: 'webpack' | 'turbopack'; usesNativeDebugIds?: boolean },
sentryBuildOptions: SentryBuildOptions,
): Promise<void> {
if (sentryBuildOptions.debug) {
Expand Down Expand Up @@ -44,7 +49,11 @@ export async function handleRunAfterProductionCompile(

await sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal();
await sentryBuildPluginManager.createRelease();
await sentryBuildPluginManager.injectDebugIds([distDir]);

if (!usesNativeDebugIds) {
await sentryBuildPluginManager.injectDebugIds([distDir]);
}

await sentryBuildPluginManager.uploadSourcemaps([distDir], {
// We don't want to prepare the artifacts because we injected debug ids manually before
prepareArtifacts: false,
Expand Down
34 changes: 26 additions & 8 deletions packages/nextjs/src/config/withSentryConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import type {
NextConfigFunction,
NextConfigObject,
SentryBuildOptions,
TurbopackOptions,
} from './types';
import { getNextjsVersion, supportsProductionCompileHook } from './util';
import { constructWebpackConfigFunction } from './webpack';
Expand Down Expand Up @@ -287,16 +288,33 @@ function getFinalConfigObject(
);
}

let turboPackConfig: TurbopackOptions | undefined;

if (isTurbopack) {
turboPackConfig = constructTurbopackConfig({
userNextConfig: incomingUserNextConfigObject,
userSentryOptions,
routeManifest,
nextJsVersion,
});
}

// If not explicitly set, turbopack uses the runAfterProductionCompile hook (as there are no alternatives), webpack does not.
const shouldUseRunAfterProductionCompileHook =
userSentryOptions?.useRunAfterProductionCompileHook ?? (isTurbopack ? true : false);

if (shouldUseRunAfterProductionCompileHook && supportsProductionCompileHook(nextJsVersion ?? '')) {
if (incomingUserNextConfigObject?.compiler?.runAfterProductionCompile === undefined) {
incomingUserNextConfigObject.compiler ??= {};

incomingUserNextConfigObject.compiler.runAfterProductionCompile = async ({ distDir }) => {
await handleRunAfterProductionCompile(
{ releaseName, distDir, buildTool: isTurbopack ? 'turbopack' : 'webpack' },
{
releaseName,
distDir,
buildTool: isTurbopack ? 'turbopack' : 'webpack',
usesNativeDebugIds: isTurbopack ? turboPackConfig?.debugIds : undefined,
},
userSentryOptions,
);
};
Expand All @@ -308,7 +326,12 @@ function getFinalConfigObject(
const { distDir }: { distDir: string } = argArray[0] ?? { distDir: '.next' };
await target.apply(thisArg, argArray);
await handleRunAfterProductionCompile(
{ releaseName, distDir, buildTool: isTurbopack ? 'turbopack' : 'webpack' },
{
releaseName,
distDir,
buildTool: isTurbopack ? 'turbopack' : 'webpack',
usesNativeDebugIds: isTurbopack ? turboPackConfig?.debugIds : undefined,
},
userSentryOptions,
);
},
Expand Down Expand Up @@ -380,12 +403,7 @@ function getFinalConfigObject(
}),
...(isTurbopackSupported && isTurbopack
? {
turbopack: constructTurbopackConfig({
userNextConfig: incomingUserNextConfigObject,
routeManifest,
nextJsVersion,
userSentryOptions,
}),
turbopack: turboPackConfig,
}
: {}),
};
Expand Down
Loading