Skip to content

feat(nextjs): Record cache spans for use cache functions - #24302

Open
s1gr1d wants to merge 1 commit into
sig/nextjs-use-cache-testsfrom
sig/nextjs-use-cache-instrument
Open

feat(nextjs): Record cache spans for use cache functions#24302
s1gr1d wants to merge 1 commit into
sig/nextjs-use-cache-testsfrom
sig/nextjs-use-cache-instrument

Conversation

@s1gr1d

@s1gr1d s1gr1d commented Sep 10, 2026

Copy link
Copy Markdown
Member

First merge: #24301

use cache reads and writes are invisible in traces. This wraps get/set on Next's cache-handler registry (@next/cache-handlers-map, plus the dev-only private handler) with cache.get/cache.put spans.

Decisions:

  • Keys are SHA-1 digests, because raw keys serialize function arguments (PII).
  • cache.hit mirrors Next: entries past expire count as misses. Tag discards stay hits (undetectable at the handler).
  • Hits carry cache.item_age, cache.ttl, and cache.tags. The first and last are pending sentry-conventions upstreaming.
  • Guards live on globalThis (the module loads once per bundle). Both initorderings work: next start and dev server.

Related to #12888. But the legacy incremental cache (fetch/ISR) stays uncovered.

Cache Fill
image


Cache Get
image

Closes #24289

@s1gr1d
s1gr1d requested a review from a team as a code owner September 10, 2026 12:43
@s1gr1d
s1gr1d requested review from mydea and nicohrubec and removed request for a team September 10, 2026 12:43
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 28.91 kB added added
@sentry/browser - with treeshaking flags 27.21 kB added added
@sentry/browser - with treeshaking flags tracing without tracing 27.1 kB added added
@sentry/browser (incl. Tracing) 50.27 kB added added
@sentry/browser (incl. Tracing + Span Streaming) 50.28 kB added added
@sentry/browser (incl. Tracing, Profiling) 53.26 kB added added
@sentry/browser (incl. Tracing, Replay) 89.76 kB added added
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 78.86 kB added added
@sentry/browser (incl. Tracing, Replay with Canvas) 94.45 kB added added
@sentry/browser (incl. Tracing, Replay, Feedback) 107.46 kB added added
@sentry/browser (incl. Feedback) 46.4 kB added added
@sentry/browser (incl. sendFeedback) 33.96 kB added added
@sentry/browser (incl. FeedbackAsync) 39.07 kB added added
@sentry/browser (incl. Metrics) 29.93 kB added added
@sentry/browser (incl. Logs) 30.19 kB added added
@sentry/browser (incl. Metrics & Logs) 30.86 kB added added
@sentry/react 30.66 kB added added
@sentry/react (incl. Tracing) 52.59 kB added added
@sentry/vue 36.15 kB added added
@sentry/vue (incl. Tracing) 52.53 kB added added
@sentry/svelte 28.93 kB added added
CDN Bundle 30.64 kB added added
CDN Bundle (incl. Tracing) 50.78 kB added added
CDN Bundle (incl. Logs, Metrics) 32.92 kB added added
CDN Bundle (incl. Tracing, Logs, Metrics) 52.73 kB added added
CDN Bundle (incl. Replay, Logs, Metrics) 73.61 kB added added
CDN Bundle (incl. Tracing, Replay) 88.32 kB added added
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 90.29 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback) 94.36 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 96.38 kB added added
CDN Bundle - uncompressed 90.72 kB added added
CDN Bundle (incl. Tracing) - uncompressed 151.68 kB added added
CDN Bundle (incl. Logs, Metrics) - uncompressed 97.3 kB added added
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 157.64 kB added added
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 226.71 kB added added
CDN Bundle (incl. Tracing, Replay) - uncompressed 271.25 kB added added
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 277.2 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 284.95 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 290.89 kB added added
@sentry/nextjs (client) 54.91 kB added added
@sentry/sveltekit (client) 50.69 kB added added
@sentry/core/server 37.1 kB added added
@sentry/core/browser 13.66 kB added added
@sentry/node 128.46 kB added added
@sentry/node/import (ESM hook with diagnostics-channel injection) 81.82 kB added added
@sentry/node - without tracing 89.03 kB added added
@sentry/node - without channel injection 107.54 kB added added
@sentry/aws-serverless 97.43 kB added added
@sentry/cloudflare (withSentry) - minified 203.1 kB added added
@sentry/cloudflare (withSentry) 505.66 kB added added

@s1gr1d
s1gr1d requested a review from chargome September 10, 2026 13:08
@s1gr1d

s1gr1d commented Sep 10, 2026

Copy link
Copy Markdown
Member Author

bugbot run

@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.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 1a9ac26. Configure here.

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