Skip to content

feat(gatsby): Delete source maps through the bundler plugin instead of a glob - #26333

Open
timfish wants to merge 1 commit into
developfrom
feat/gatsby-delete-sourcemaps-after-upload
Open

timfish wants to merge 1 commit into
developfrom
feat/gatsby-delete-sourcemaps-after-upload

Conversation

@timfish

@timfish timfish commented Nov 13, 2026 •

Copy link
Copy Markdown
Collaborator

The Gatsby SDK deleted source maps with a ./public/**/*.map glob after the upload. It now passes deleteSourcemapsAfterUpload to the webpack plugin instead. The user's own option wins, and true is the fallback when the SDK turned on hidden source maps. When deletion is on, the SDK also sets the internal sdkEnabledSourceMaps flag, so the plugin removes every map the build emits, also CSS maps and maps of chunks the upload leaves out, and also when no upload runs. Both options are only passed in the build-javascript stage. Gatsby reads the build-html maps in .cache to map HTML render errors, and the old glob never touched them either.

There are two differences. First, with devtool: 'source-map' and deleteSourcemapsAfterUpload: true the plugin now switches to hidden source maps; before, the glob left sourceMappingURL comments that pointed to deleted files. Second, maps that the current build did not emit, such as maps copied from static/ or left in public/ from an earlier build, are no longer removed.

There is no Gatsby E2E app, so only unit tests cover this. Note that Gatsby's own production default is devtool: 'source-map', so the SDK does not turn maps on or delete them in a default Gatsby build. This PR does not change that.

@github-actions

github-actions Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

size-limit report 📦

Compared: 7e07b01 (PR test merge using develop at 9279303)

Against: 9279303 (develop) · base run #66015

✅ Baseline matches: this diff contains only this PR's changes.

Path Size % Change Change
@sentry/browser 30.1 kB - -
@sentry/browser - with treeshaking flags 28.3 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 28.2 kB - -
@sentry/browser (incl. Tracing) 52.28 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 52.29 kB - -
@sentry/browser (incl. Tracing, Profiling) 55.25 kB - -
@sentry/browser (incl. Tracing, Replay) 92.82 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 81.6 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 97.21 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 110.6 kB - -
@sentry/browser (incl. Feedback) 47.73 kB - -
@sentry/browser (incl. sendFeedback) 30.69 kB - -
@sentry/browser (incl. FeedbackAsync) 35.69 kB - -
@sentry/browser (incl. Metrics) 31.43 kB - -
@sentry/browser (incl. Logs) 31.71 kB - -
@sentry/browser (incl. Metrics & Logs) 32.37 kB - -
@sentry/react 32.11 kB - -
@sentry/react (incl. Tracing) 54.95 kB - -
@sentry/vue 38.3 kB - -
@sentry/vue (incl. Tracing) 55.24 kB - -
@sentry/svelte 30.12 kB - -
@sentry/remix (Remix 3 client bundle) 58.06 kB - -
CDN Bundle 31.87 kB - -
CDN Bundle (incl. Tracing) 52.7 kB - -
CDN Bundle (incl. Logs, Metrics) 34.67 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 55.26 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 75.7 kB - -
CDN Bundle (incl. Tracing, Replay) 90.72 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 93.33 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 96.09 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 98.69 kB - -
CDN Bundle - uncompressed 92.98 kB - -
CDN Bundle (incl. Tracing) - uncompressed 155.45 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 101.33 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 163.08 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 231.43 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 275.6 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 283.23 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 287.39 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 295.01 kB - -
@sentry/nextjs (client) 58.34 kB - -
@sentry/sveltekit (client) 53.46 kB - -
@sentry/core/server 44.57 kB - -
@sentry/core/browser 13.99 kB - -
@sentry/node 149.54 kB -0.01% -4 B 🔽
@sentry/node/import (ESM hook with diagnostics-channel injection) 83.3 kB - -
@sentry/node - without tracing 88.47 kB -0.01% -8 B 🔽
@sentry/node - without channel injection 138.5 kB -0.01% -3 B 🔽
@sentry/aws-serverless 97.39 kB -0.01% -8 B 🔽
@sentry/cloudflare (withSentry) - minified 204.55 kB - -
@sentry/cloudflare (withSentry) 474.76 kB - -
@sentry/nextjs/cloudflare (withSentry) - minified 229.86 kB - -

View base workflow run

@timfish
timfish force-pushed the feat/gatsby-delete-sourcemaps-after-upload branch from 0e1ebee to fa0c152 Compare November 13, 2026 11:34
Base automatically changed from feat/bundler-plugins-delete-without-upload to develop November 13, 2026 13:49
…f a glob

The SDK now passes `deleteSourcemapsAfterUpload` to the webpack plugin instead of the `./public/**/*.map` glob. The user's own option wins, and `true` is the fallback when the SDK turned on hidden source maps. When it is set, the SDK also sets `sdkEnabledSourceMaps`, so the plugin removes all maps of the build, also CSS maps and maps of chunks outside the upload, and also when no upload runs. Both options are only passed in the `build-javascript` stage, because Gatsby reads the `build-html` maps in `.cache` to map HTML render errors.
@timfish
timfish force-pushed the feat/gatsby-delete-sourcemaps-after-upload branch from fa0c152 to c91ce96 Compare November 13, 2026 13:53
@timfish
timfish marked this pull request as ready for review November 13, 2026 17:36
@timfish
timfish requested a review from a team November 13, 2026 17:36

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit c91ce96. Configure here.

plugins: expect.arrayContaining([expect.any(Object)]),
}),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feat lacks integration or E2E test

Medium Severity

This was flagged because the review guidelines require feat PRs to include an integration or E2E test. Coverage here is only unit tests that assert plugin options, so they never confirm that a real Gatsby public/ build has neither leftover .map files nor sourceMappingURL comments after deletion.

Fix in Cursor Fix in Web

Triggered by project rule: PR Review Guidelines for Cursor Bot

Reviewed by Cursor Bugbot for commit c91ce96. Configure here.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant