Closed
Description
Is there an existing issue for this?
- I have checked for existing issues https://github.com/getsentry/sentry-javascript/issues
- I have reviewed the documentation https://docs.sentry.io/
- I am using the latest SDK release https://github.com/getsentry/sentry-javascript/releases
How do you use Sentry?
Sentry Saas (sentry.io)
Which SDK are you using?
@sentry/nextjs
SDK Version
8.33.0
Framework Version
Next.js: ^14.0.4
Link to Sentry event
No response
Reproduction Example/SDK Setup
Next.config.js example:
/** @type {import('next').NextConfig} */
const nextConfig = {
env,
assetPrefix: isDev ? undefined : localEnv.PUBLIC_URL + baseUrl,
generateBuildId: async () => {
return process.env.CI_COMMIT_SHORT_SHA ?? null
},
crossOrigin: "anonymous",
rewrites: async () => {
return [
// for k8s readiness probe
{
source: "/hello",
destination: "/api/hello",
},
// for Prometheus Logging
{
source: "/metrics",
destination: "/api/metrics",
},
{
source: "/api/v1/:path*",
destination: "http://...", // Masked for security reasons
},
]
},
redirects: async () => {
// for old browser fallback redirect
return [
{
source: "/:path((?!old-browser-fallback.html).*)",
permanent: false,
has: [
{
type: "header",
key: "User-Agent",
value: "(.*Trident.*)",
},
],
destination: "/old-browser-fallback.html",
},
]
},
output: "standalone",
distDir: "build",
i18n: {
locales: ["default", "ko", "en", "ja", "jp"],
defaultLocale: "default",
localeDetection: false,
},
trailingSlash: true,
compiler: {
emotion: true,
},
images: {
remotePatterns: [
{
protocol: "https",
hostname: "...", // Masked for security reasons
pathname: "/images/**",
},
],
},
webpack: (config) => {
const fileLoaderRule = config.module.rules.find((rule) => rule.test?.test?.(".svg"))
config.module.rules.push(
// Reapply the existing rule, but only for svg imports ending in ?url
{
...fileLoaderRule,
test: /\.svg$/i,
resourceQuery: /url/, // *.svg?url
},
// Convert all other *.svg imports to React components
{
test: /\.svg$/i,
issuer: fileLoaderRule.issuer,
resourceQuery: { not: [...fileLoaderRule.resourceQuery.not, /url/] }, // exclude if *.svg?url
use: ["@svgr/webpack"],
}
)
// Modify the file loader rule to ignore *.svg, since we have it handled now.
fileLoaderRule.exclude = /\.svg$/i
return config
},
}
module.exports = withSentryConfig(withBundleAnalyzer(nextConfig), {
// For all available options, see:
// https://github.com/getsentry/sentry-webpack-plugin#options
org: process.env.NEXT_PUBLIC_SENTRY_ORG,
project: process.env.NEXT_PUBLIC_SENTRY_PROJECT,
// Only print logs for uploading source maps in CI
silent: !process.env.CI,
// For all available options, see:
// https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
// Upload a larger set of source maps for prettier stack traces (increases build time)
widenClientFileUpload: true,
// Automatically annotate React components to show their full name in breadcrumbs and session replay
reactComponentAnnotation: {
enabled: true,
},
// Route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers.
// This can increase your server load as well as your hosting bill.
// Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client-
// side errors will fail.
tunnelRoute: "/monitoring",
// Hides source maps from generated client bundles
hideSourceMaps: true,
// Automatically tree-shake Sentry logger statements to reduce bundle size
disableLogger: true,
authToken: process.env.SENTRY_AUTH_TOKEN,
release: {
create: true,
finalize: true,
name: process.env.RELEASE_VERSION,
setCommits: {
ignoreMissing: true,
auto: true,
},
},
})
Steps to Reproduce
When building the application for different platforms without the withSentryConfig
, the resulting files' hash reflects the generateBuildID
set in the next config options.
However, when adding Sentry and withSentryConfig
, the hashes are no longer the same on different builds.
Expected Result
Different builds to have the same hash determined by the generateBuildID option:
- amd64 output logs
+ First Load JS shared by all 407 kB
├ chunks/framework-e7594c6edddb13df.js 45.2 kB
├ chunks/main-51034d304a9d5d27.js 43.7 kB
├ chunks/pages/_app-451abad8de42175b.js 315 kB
├ chunks/webpack-7bc12fe684855cd9.js 1.95 kB
└ css/232f3b92a2886585.css 1.49 kB
arm64 output logs
+ First Load JS shared by all 407 kB
├ chunks/framework-e7594c6edddb13df.js 45.2 kB
├ chunks/main-51034d304a9d5d27.js 43.7 kB
├ chunks/pages/_app-451abad8de42175b.js 315 kB
├ chunks/webpack-7bc12fe684855cd9.js 1.95 kB
└ css/232f3b92a2886585.css 1.49 kB
Actual Result
Different hashes:
amd64 output logs
+ First Load JS shared by all 484 kB
├ chunks/framework-22843801eeddc8d4.js 45.3 kB
├ chunks/main-2934badaedd887d6.js 43.8 kB
├ chunks/pages/_app-c2aabc539f7291b6.js 391 kB <--
├ chunks/webpack-dd7495768c40548a.js 2.08 kB <--
└ css/356b0903ab48b078.css 1.49 kB
arm64 output logs
+ First Load JS shared by all 484 kB
├ chunks/framework-22843801eeddc8d4.js 45.3 kB
├ chunks/main-2934badaedd887d6.js 43.8 kB
├ chunks/pages/_app-0b06c2663882bc14.js 391 kB <--
├ chunks/webpack-b77ae631eb868914.js 2.08 kB <--
└ css/356b0903ab48b078.css 1.49 kB
Metadata
Metadata
Assignees
Type
Projects
Status
No status