Update dependency @sentry/node --> v7.116.0 - autoclosed
This MR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
@sentry/node (source) | 7.64.0 -> 7.116.0 |
Release Notes
getsentry/sentry-javascript (@sentry/node)
v7.116.0
This release publishes a new AWS Lambda layer under the name SentryNodeServerlessSDKv7
that users still running v7 can
use instead of pinning themselves to SentryNodeServerlessSDK:235
.
📦
Bundle size Path | Size |
---|---|
@sentry/browser (incl. Tracing, Replay, Feedback) - Webpack (gzipped) | 80.83 KB |
@sentry/browser (incl. Tracing, Replay) - Webpack (gzipped) | 71.77 KB |
@sentry/browser (incl. Tracing, Replay with Canvas) - Webpack (gzipped) | 76.02 KB |
@sentry/browser (incl. Tracing, Replay) - Webpack with treeshaking flags (gzipped) | 65.38 KB |
@sentry/browser (incl. Tracing) - Webpack (gzipped) | 35.64 KB |
@sentry/browser (incl. browserTracingIntegration) - Webpack (gzipped) | 35.53 KB |
@sentry/browser (incl. Feedback) - Webpack (gzipped) | 31.6 KB |
@sentry/browser (incl. sendFeedback) - Webpack (gzipped) | 31.61 KB |
@sentry/browser - Webpack (gzipped) | 22.78 KB |
@sentry/browser (incl. Tracing, Replay, Feedback) - ES6 CDN Bundle (gzipped) | 79.04 KB |
@sentry/browser (incl. Tracing, Replay) - ES6 CDN Bundle (gzipped) | 70.37 KB |
@sentry/browser (incl. Tracing) - ES6 CDN Bundle (gzipped) | 36.05 KB |
@sentry/browser - ES6 CDN Bundle (gzipped) | 25.28 KB |
@sentry/browser (incl. Tracing, Replay) - ES6 CDN Bundle (minified & uncompressed) | 221.49 KB |
@sentry/browser (incl. Tracing) - ES6 CDN Bundle (minified & uncompressed) | 109.08 KB |
@sentry/browser - ES6 CDN Bundle (minified & uncompressed) | 75.81 KB |
@sentry/browser (incl. Tracing) - ES5 CDN Bundle (gzipped) | 39.33 KB |
@sentry/react (incl. Tracing, Replay) - Webpack (gzipped) | 72.27 KB |
@sentry/react - Webpack (gzipped) | 22.81 KB |
@sentry/nextjs Client (incl. Tracing, Replay) - Webpack (gzipped) | 90.03 KB |
@sentry/nextjs Client - Webpack (gzipped) | 54.15 KB |
@sentry-internal/feedback - Webpack (gzipped) | 17.34 KB |
v7.115.0
- feat(v7): Add support for global onUnhandled Error/Promise for Bun (#11959)
- fix(replay/v7): Fix user activity not being updated in
start()
(#12003) - ref(api): Remove
lastEventId
deprecation warnings (#12042)
📦
Bundle size Path | Size |
---|---|
@sentry/browser (incl. Tracing, Replay, Feedback) - Webpack (gzipped) | 80.83 KB |
@sentry/browser (incl. Tracing, Replay) - Webpack (gzipped) | 71.77 KB |
@sentry/browser (incl. Tracing, Replay with Canvas) - Webpack (gzipped) | 76.02 KB |
@sentry/browser (incl. Tracing, Replay) - Webpack with treeshaking flags (gzipped) | 65.38 KB |
@sentry/browser (incl. Tracing) - Webpack (gzipped) | 35.64 KB |
@sentry/browser (incl. browserTracingIntegration) - Webpack (gzipped) | 35.53 KB |
@sentry/browser (incl. Feedback) - Webpack (gzipped) | 31.6 KB |
@sentry/browser (incl. sendFeedback) - Webpack (gzipped) | 31.61 KB |
@sentry/browser - Webpack (gzipped) | 22.78 KB |
@sentry/browser (incl. Tracing, Replay, Feedback) - ES6 CDN Bundle (gzipped) | 79.04 KB |
@sentry/browser (incl. Tracing, Replay) - ES6 CDN Bundle (gzipped) | 70.37 KB |
@sentry/browser (incl. Tracing) - ES6 CDN Bundle (gzipped) | 36.05 KB |
@sentry/browser - ES6 CDN Bundle (gzipped) | 25.28 KB |
@sentry/browser (incl. Tracing, Replay) - ES6 CDN Bundle (minified & uncompressed) | 221.49 KB |
@sentry/browser (incl. Tracing) - ES6 CDN Bundle (minified & uncompressed) | 109.08 KB |
@sentry/browser - ES6 CDN Bundle (minified & uncompressed) | 75.81 KB |
@sentry/browser (incl. Tracing) - ES5 CDN Bundle (gzipped) | 39.33 KB |
@sentry/react (incl. Tracing, Replay) - Webpack (gzipped) | 72.27 KB |
@sentry/react - Webpack (gzipped) | 22.81 KB |
@sentry/nextjs Client (incl. Tracing, Replay) - Webpack (gzipped) | 90.03 KB |
@sentry/nextjs Client - Webpack (gzipped) | 54.15 KB |
@sentry-internal/feedback - Webpack (gzipped) | 17.34 KB |
v7.114.0
Important Changes
- fix(browser/v7): Continuously record CLS (#11935)
This release fixes a bug that caused the cumulative layout shift (CLS) web vital not to be reported in a majority of the cases where it should have been reported. With this change, the CLS web vital should now always be reported for pageloads with layout shift. If a pageload did not have layout shift, no CLS web vital should be reported.
Please note that upgrading the SDK to this version may cause data in your dashboards to drastically change.
Other Changes
- build(aws-lambda/v7): Turn off lambda layer publishing (#11875)
- feat(v7): Add
tunnel
support to multiplexed transport (#11851) - fix(opentelemetry-node): support
HTTP_REQUEST_METHOD
attribute (#11929) - fix(react/v7): Fix react router v4/v5 span names (#11940)
v7.113.0
Important Changes
- feat(node): Support Node 22 (#11754)
This release adds support for Node 22!
It also adds prebuilt-binaries for Node 22 to @sentry/profiling-node
.
Other Changes
- feat(feedback): [v7] New feedback button design (#11841)
- feat(replay/v7): Upgrade rrweb packages to 2.15.0 (#11752)
- fix(ember/v7): Ensure unnecessary spans are avoided (#11848)
v7.112.2
- fix(nextjs|sveltekit): Ensure we can pass
browserTracingIntegration
(#11765)
v7.112.1
- fix(ember/v7): Do not create rendering spans without transaction (#11750)
v7.112.0
Important Changes
- feat: Export pluggable integrations from SDK packages (#11723)
Instead of installing @sentry/integrations
, you can now import the pluggable integrations directly from your SDK
package:
// Before
import * as Sentry fromv '@​sentry/browser';
import { dedupeIntegration } from '@​sentry/integrations';
Sentry.init({
integrations: [dedupeIntegration()],
});
// After
import * as Sentry from '@​sentry/browser';
Sentry.init({
integrations: [Sentry.dedupeIntegration()],
});
Note that only the functional integrations (e.g. xxxIntegration()
) are re-exported.
Other Changes
- feat(replay): Add "maxCanvasSize" option for replay canvases (#11732)
- fix(serverless): [v7] Check if cloud event callback is a function (#11734)
v7.111.0
- feat(core): Add
server.address
to browserhttp.client
spans (#11663) - fix: Ensure next & sveltekit correctly handle
browserTracingIntegration
(#11647) - fix(browser): Don't assume window.document is available (#11598)
v7.110.1
- fix(nextjs): Fix
tunnelRoute
matching logic for hybrid cloud (#11577)
v7.110.0
Important Changes
- feat(tracing): Add interactions sample rate to browser tracing integrations (#11382)
You can now use a interactionsSampleRate
to control the sample rate of INP spans. interactionsSampleRate
is applied
on top of the global tracesSampleRate
. Therefore if interactionsSampleRate
is 0.5
and tracesSampleRate
is 0.1
,
then the actual sample rate for interactions is 0.05
.
Sentry.init({
tracesSampleRate: 0.1,
integrations: [
Sentry.browserTracingIntegration({
interactionsSampleRate: 0.5,
}),
],
});
- Deprecations
This release deprecates the Hub
class, as well as the addRequestDataToTransaction
method. The trpcMiddleware
method is no longer on the Handlers
export, but instead is a standalone export.
Please see the detailed Migration docs on how to migrate to the new APIs.
- feat: Deprecate and relocate
trpcMiddleware
(#11389) - feat(core): Deprecate
Hub
class (#11528) - feat(types): Deprecate
Hub
interface (#11530) - ref: Deprecate
addRequestDataToTransaction
(#11368)
Other Changes
- feat(core): Update metric normalization (#11519)
- feat(feedback): Customize feedback placeholder text color (#11521)
- feat(remix): Skip span creation for
OPTIONS
andHEAD
request. (#11485) - feat(utils): Add metric buckets rate limit (#11506)
- fix(core): unref timer to not block node exit (#11483)
- fix(metrics): Map
statsd
tometric_bucket
(#11505) - fix(spans): Allow zero exclusive time for INP spans (#11408)
- ref(feedback): Configure feedback fonts (#11520)
v7.109.0
This release deprecates some exports from the @sentry/replay
package. These exports have been moved to the browser SDK
(or related framework SDKs like @sentry/react
).
- feat(feedback): Make "required" text for input elements configurable (#11287)
- feat(node): Add scope to ANR events (#11267)
- feat(replay): Bump
rrweb
to 2.12.0 (#11317) - fix(node): Local variables skipped after Promise (#11248)
- fix(node): Skip capturing Hapi Boom error responses (#11324)
- fix(web-vitals): Check for undefined navigation entry (#11312)
- ref(replay): Deprecate
@sentry/replay
exports (#11242)
Work in this release contributed by @soerface. Thank you for your contribution!
v7.108.0
This release fixes issues with Time to First Byte (TTFB) calculation in the SDK that was introduced with 7.95.0
. It
also fixes some bugs with Interaction to First Paint (INP) instrumentation. This may impact your Sentry Performance
Score calculation.
- feat(serverless): Add Node.js 20 to compatible runtimes (#11104)
- feat(core): Backport
ResizeObserver
andgoogletag
default filters (#11210) - feat(webvitals): Adds event entry names for INP handler. Also guard against empty metric value
- fix(metrics): use correct statsd data category (#11187)
- fix(node): Record local variables with falsy values (v7) (#11190)
- fix(node): Use unique variable for ANR context transfer (v7) (#11162)
- fix(node): Time zone handling for
cron
(#11225) - fix(tracing): use web-vitals ttfb calculation (#11231)
- fix(types): Fix incorrect
sampled
type onTransaction
(#11146) - fix(webvitals): Fix mapping not being maintained properly and sometimes not sending INP spans (#11183)
Work in this release contributed by @quisido and @joshkel. Thank you for your contributions!
v7.107.0
This release fixes issues with INP instrumentation with the Next.js SDK and adds support for the enableInp
option in
the deprecated BrowserTracing
integration for backwards compatibility.
- feat(performance): Port INP span instrumentation to old browser tracing (#11085)
- fix(ember): Ensure browser tracing is correctly lazy loaded (#11027)
- fix(node): Do not assert in vendored proxy code (v7 backport) (#11009)
- fix(react): Set
handled
value in ErrorBoundary depending on fallback [v7] (#11037)
v7.106.1
- fix(nextjs/v7): Use passthrough
createReduxEnhancer
on server (#11010)
v7.106.0
- feat(nextjs): Support Hybrid Cloud DSNs with
tunnelRoute
option (#10958) - feat(remix): Add Vite dev-mode support to Express instrumentation (#10811)
- fix(core): Undeprecate
setTransactionName
- fix(browser): Don't use chrome variable name (#10874)
- fix(nextjs): Client code should not use Node
global
(#10925) - fix(node): support undici headers as strings or arrays (#10938)
- fix(types): Add
AttachmentType
and use for envelopeattachment_type
property (#10946) - ref(ember): Avoid namespace import to hopefully resolve minification issue (#10885)
- chore(sveltekit): Fix punctuation in a console.log (#10895)
Work in this release contributed by @jessezhang91 and @bfontaine. Thank you for your contributions!
v7.105.0
Important Changes
- feat: Ensure
withActiveSpan
is exported everywhere (#10877)
You can use the withActiveSpan
method to ensure a certain span is the active span in a given callback. This can be
used to create a span as a child of a specific span with the startSpan
API methods:
const parentSpan = Sentry.startInactiveSpan({ name: 'parent' });
if (parentSpan) {
withActiveSpan(parentSpan, () => {
// This will be a direct child of parentSpan
const childSpan = Sentry.startInactiveSpan({ name: 'child' });
});
}
v7.104.0
Important Changes
- feat(performance): create Interaction standalone spans on inp events (#10709)
This release adds support for the INP web vital. This is currently only supported for Saas Sentry, and product support
is released with the upcoming 24.3.0
release of self-hosted.
To opt-in to this feature, you can use the enableInp
option in the browserTracingIntegration
:
Sentry.init({
integrations: [
Sentry.browserTracingIntegration({
enableInp: true,
});
]
})
Other Changes
- feat(feedback): Flush replays when feedback form opens (#10567)
- feat(profiling-node): Expose
nodeProfilingIntegration
(#10864) - fix(profiling-node): Fix dependencies to point to current versions (#10861)
- fix(replay): Add
errorHandler
for replayCanvas integration (#10796)
v7.103.0
Important Changes
- feat(core): Allow to pass
forceTransaction
tostartSpan()
APIs (#10819)
You can now pass forceTransaction: true
to startSpan()
, startSpanManual()
and startInactiveSpan()
. This allows
you to start a span that you want to be a transaction, if possible. Under the hood, the SDK will connect this span to
the running active span (if there is one), but still send the new span as a transaction to the Sentry backend, if
possible, ensuring it shows up as a transaction throughout the system.
Please note that setting this to true
does not guarantee that this will be sent as a transaction, but that the SDK
will try to do so. You can enable this flag if this span is important to you and you want to ensure that you can see it
in the Sentry UI.
Other Changes
- fix: Make breadcrumbs option optional in WinterCGFetch integration (#10792)
v7.102.1
- fix(performance): Fixes latest route name and source for interactions not updating properly on navigation (#10702)
- fix(tracing): Guard against missing
window.location
(#10659) - ref: Make span types more robust (#10660)
- ref(remix): Make
@remix-run/router
a dependency (v7) (#10779)
v7.102.0
- fix: Export session API (#10712)
- fix(core): Fix scope capturing via
captureContext
function (#10737)
v7.101.1
In version 7.101.0 the @sentry/hub
package was missing due to a publishing issue. This release contains the package
again.
- fix(nextjs): Remove
webpack://
prefix more broadly from source mapsources
field (#10641)
v7.101.0
- feat: Export semantic attribute keys from SDK packages (#10637)
- feat(core): Add metric summaries to spans (#10554)
- feat(core): Deprecate the
Hub
constructor (#10584) - feat(core): Make custom tracing methods return spans & set default op (#10633)
- feat(replay): Add
getReplay
utility function (#10510) - fix(angular-ivy): Add
exports
field topackage.json
(#10569) - fix(sveltekit): Avoid capturing Http 4xx errors on the client (#10571)
- fix(sveltekit): Properly await sourcemaps flattening (#10602)
v7.100.1
This release contains build fixes for profiling-node.
- build(profiling-node): make sure debug build plugin is used #10534
- build: Only run profiling e2e test if bindings have changed #10542
- fix(feedback): Replay breadcrumb for feedback events was incorrect #10536
v7.100.0
Important Changes
Deprecations
This release includes some deprecations. For more details please look at our migration guide.
The deprecation most likely to affect you is the one of BrowserTracing
. Instead of new BrowserTracing()
, you should
now use browserTracingIntegration()
, which will also handle framework-specific instrumentation out of the box for
you - no need to pass a custom routingInstrumentation
anymore. For @sentry/react
, we expose dedicated integrations
for the different react-router versions:
reactRouterV6BrowserTracingIntegration()
reactRouterV5BrowserTracingIntegration()
reactRouterV4BrowserTracingIntegration()
reactRouterV3BrowserTracingIntegration()
See the migration guide for details.
- feat(angular): Export custom
browserTracingIntegration()
(#10353) - feat(browser): Deprecate
BrowserTracing
integration (#10493) - feat(browser): Export
browserProfilingIntegration
(#10438) - feat(bun): Export
bunServerIntegration()
(#10439) - feat(nextjs): Add
browserTracingIntegration
(#10397) - feat(react): Add
reactRouterV3BrowserTracingIntegration
for react router v3 (#10489) - feat(react): Add
reactRouterV4/V5BrowserTracingIntegration
for react router v4 & v5 (#10488) - feat(react): Add
reactRouterV6BrowserTracingIntegration
for react router v6 & v6.4 (#10491) - feat(remix): Add custom
browserTracingIntegration
(#10442) - feat(node): Expose functional integrations to replace classes (#10356)
- feat(vercel-edge): Replace
WinterCGFetch
withwinterCGFetchIntegration
(#10436) - feat: Deprecate non-callback based
continueTrace
(#10301) - feat(vue): Deprecate
new VueIntegration()
(#10440) - feat(vue): Implement vue
browserTracingIntegration()
(#10477) - feat(sveltekit): Add custom
browserTracingIntegration()
(#10450)
Profiling Node
@sentry/profiling-node
has been ported into the monorepo. Future development for it will happen here!
- pkg(profiling-node): port profiling-node repo to monorepo (#10151)
Other Changes
- feat: Export
setHttpStatus
from all packages (#10475) - feat(bundles): Add pluggable integrations on CDN to
Sentry
namespace (#10452) - feat(core): Pass
name
&attributes
totracesSampler
(#10426) - feat(feedback): Add
system-ui
to start of font family (#10464) - feat(node-experimental): Add koa integration (#10451)
- feat(node-experimental): Update opentelemetry packages (#10456)
- feat(node-experimental): Update tracing integrations to functional style (#10443)
- feat(replay): Bump
rrweb
to 2.10.0 (#10445) - feat(replay): Enforce masking of credit card fields (#10472)
- feat(utils): Add
propagationContextFromHeaders
(#10313) - fix: Make
startSpan
,startSpanManual
andstartInactiveSpan
pick up the scopes at time of creation instead of termination (#10492) - fix(feedback): Fix logo color when colorScheme is "system" (#10465)
- fix(nextjs): Do not report redirects and notFound calls as errors in server actions (#10474)
- fix(nextjs): Fix navigation tracing on app router (#10502)
- fix(nextjs): Apply server action data to correct isolation scope (#10514)
- fix(node): Use normal
require
call to import Undici (#10388) - ref(nextjs): Remove internally used deprecated APIs (#10453)
- ref(vue): use startInactiveSpan in tracing mixin (#10406)
v7.99.0
Important Changes
Deprecations
This release includes some deprecations for span related methods and integrations in our Deno SDK, @sentry/deno
. For
more details please look at our
migration guide.
- feat(core): Deprecate
Span.setHttpStatus
in favor ofsetHttpStatus
(#10268) - feat(core): Deprecate
spanStatusfromHttpCode
in favour ofgetSpanStatusFromHttpCode
(#10361) - feat(core): Deprecate
StartSpanOptions.origin
in favour of passing attribute (#10274) - feat(deno): Expose functional integrations to replace classes (#10355)
Other Changes
- feat(bun): Add missing
@sentry/node
re-exports (#10396) - feat(core): Add
afterAllSetup
hook for integrations (#10345) - feat(core): Ensure
startSpan()
can handle spans that require parent (#10386) - feat(core): Read propagation context off scopes in
startSpan
APIs (#10300) - feat(remix): Export missing
@sentry/node
functions (#10385, #10391) - feat(serverless): Add missing
@sentry/node
re-exports (#10390) - feat(sveltekit): Add more missing
@sentry/node
re-exports (#10392) - feat(tracing): Export proper type for browser tracing (#10411)
- feat(tracing): Expose new
browserTracingIntegration
(#10351) - fix: Ensure
afterAllSetup
is called when usingaddIntegration()
(#10372) - fix(core): Export
spanToTraceContext
function from span utils (#10364) - fix(core): Make
FunctionToString
integration use SETUP_CLIENTS weakmap (#10358) - fix(deno): Call function if client is not setup (#10354)
- fix(react): Fix attachReduxState option (#10381)
- fix(spotlight): Use unpatched http.request (#10369)
- fix(tracing): Only create request span if there is active span (#10375)
- ref: Read propagation context off of scope and isolation scope when propagating and applying trace context (#10297)
Work in this release contributed by @AleshaOleg. Thank you for your contribution!
v7.98.0
This release primarily fixes some type declaration errors:
- feat(core): Export
IntegrationIndex
type (#10337) - fix(nextjs): Fix Http integration type declaration (#10338)
- fix(node): Fix type definitions (#10339)
v7.97.0
Note: The 7.96.0 release was incomplete. This release is partially encompassing changes from 7.96.0
.
- feat(react): Add
stripBasename
option for React Router 6 (#10314)
v7.96.0
Note: This release was incomplete. Not all Sentry SDK packages were released for this version. Please upgrade to 7.98.0 directly.
Important Changes
Deprecations
This release includes some deprecations for integrations in @sentry/browser
and frontend framework SDKs
(@sentry/react
, @sentry/vue
, etc.). Please take a look at our
migration guide for more details.
- feat(browser): Export functional integrations & deprecate classes (#10267)
Web Vitals Fix for LCP and CLS
This release fixes an issue with the Web Vitals integration where LCP and CLS were not being captured correctly,
increasing capture rate by 10-30% for some apps. LCP and CLS capturing issues were introduced with version 7.75.0
.
- fix(tracing): Ensure web vitals are correctly stopped/captured (#10323)
Other Changes
- fix(node): Fix
node-cron
types and add test (#10315) - fix(node): Fix downleveled types entry point (#10321)
- fix(node): LocalVariables integration should use setupOnce (#10307)
- fix(replay): Fix type for options of replayIntegration (#10325)
Work in this release contributed by @Shubhdeep12. Thank you for your contribution!
v7.95.0
Important Changes
Deprecations
This release includes some deprecations in preparation for v8.
Most notably, it deprecates the Replay
& Feedback
classes in favor of a functional replacement:
import * as Sentry from '@​sentry/browser';
Sentry.init({
integrations: [
// Instead of
new Sentry.Replay(),
new Sentry.Feedback(),
// Use the functional replacement:
Sentry.replayIntegration(),
Sentry.feedbackIntegration(),
],
});
- feat(core): Deprecate
Span.origin
in favor ofsentry.origin
attribute (#10260) - feat(core): Deprecate
Span.parentSpanId
(#10244) - feat(core): Expose
isInitialized()
to replace checking viagetClient
(#10296) - feat(replay): Deprecate
Replay
,ReplayCanvas
,Feedback
classes (#10270) - feat(wasm): Deprecate
Wasm
integration class (#10230)
Other Changes
- feat: Make
parameterize
function available through browser and node API (#10085) - feat(feedback): Configure feedback border radius (#10289)
- feat(sveltekit): Update default integration handling & deprecate
addOrUpdateIntegration
(#10263) - fix(replay-canvas): Add missing dependency on @sentry/utils (#10279)
- fix(tracing): Don't send negative ttfb (#10286)
Work in this release contributed by @AleshaOleg. Thank you for your contribution!
v7.94.1
This release fixes a publishing issue.
v7.93.0
Important Changes
Deprecations
As we're moving closer to the next major version of the SDK, more public APIs were deprecated.
To get a head start on migrating to the replacement APIs, please take a look at our migration guide.
- feat(core): Deprecate
getActiveTransaction()
&scope.getTransaction()
(#10098) - feat(core): Deprecate
Hub.shouldSendDefaultPii
(#10062) - feat(core): Deprecate
new Transaction()
(#10125) - feat(core): Deprecate
scope.getSpan()
&scope.setSpan()
(#10114) - feat(core): Deprecate
scope.setTransactionName()
(#10113) - feat(core): Deprecate
span.startChild()
(#10091) - feat(core): Deprecate
startTransaction()
(#10073) - feat(core): Deprecate
Transaction.getDynamicSamplingContext
in favor ofgetDynamicSamplingContextFromSpan
(#10094) - feat(core): Deprecate arguments for
startSpan()
(#10101) - feat(core): Deprecate hub capture APIs and add them to
Scope
(#10039) - feat(core): Deprecate session APIs on hub and add global replacements (#10054)
- feat(core): Deprecate span
name
anddescription
(#10056) - feat(core): Deprecate span
tags
,data
,context
& setters (#10053) - feat(core): Deprecate transaction metadata in favor of attributes (#10097)
- feat(core): Deprecate
span.sampled
in favor ofspan.isRecording()
(#10034) - ref(node-experimental): Deprecate
lastEventId
on scope (#10093)
node-schedule
library
Cron Monitoring Support for This release adds auto instrumented check-ins for the node-schedule
library.
import * as Sentry from '@​sentry/node';
import * as schedule from 'node-schedule';
const scheduleWithCheckIn = Sentry.cron.instrumentNodeSchedule(schedule);
const job = scheduleWithCheckIn.scheduleJob('my-cron-job', '* * * * *', () => {
console.log('You will see this message every minute');
});
- feat(node): Instrumentation for
node-schedule
library (#10086)
Other Changes
- feat(core): Add
span.spanContext()
(#10037) - feat(core): Add
spanToJSON()
method to get span properties (#10074) - feat(core): Allow to pass
scope
tostartSpan
APIs (#10076) - feat(core): Allow to pass start/end timestamp for spans flexibly (#10060)
- feat(node): Make
getModuleFromFilename
compatible with ESM (#10061) - feat(replay): Update rrweb to 2.7.3 (#10072)
- feat(utils): Add
parameterize
function (#9145) - fix(astro): Use correct package name for CF (#10099)
- fix(core): Do not run
setup
for integration on client multiple times (#10116) - fix(core): Ensure we copy passed in span data/tags/attributes (#10105)
- fix(cron): Make name required for instrumentNodeCron option (#10070)
- fix(nextjs): Don't capture not-found and redirect errors in generation functions (#10057)
- fix(node):
LocalVariables
integration should have correct name (#10084) - fix(node): Anr events should have an
event_id
(#10068) - fix(node): Revert to only use sync debugger for
LocalVariables
(#10077) - fix(node): Update ANR min node version to v16.17.0 (#10107)
v7.92.0
Important Changes
Deprecations
- feat(core): Add
span.updateName()
and deprecatespan.setName()
(#10018) - feat(core): Deprecate
span.getTraceContext()
(#10032) - feat(core): Deprecate
span.toTraceparent()
in favor ofspanToTraceHeader()
util (#10031) - feat(core): Deprecate
trace
in favor ofstartSpan
(#10012) - feat(core): Deprecate span
toContext()
andupdateWithContext()
(#10030) - ref: Deprecate
deepReadDirSync
(#10016) - ref: Deprecate
lastEventId()
(#10043)
Please take a look at the Migration docs for more details. These methods will be removed in the upcoming v8 major release.
cron
and node-cron
libraries
Cron Monitoring Support for - feat(node): Instrumentation for
cron
library (#9999) - feat(node): Instrumentation for
node-cron
library (#9904)
This release adds instrumentation for the cron
and node-cron
libraries. This allows you to monitor your cron jobs
with Sentry cron monitors.
For cron
:
import * as Sentry from '@​sentry/node';
import { CronJob } from 'cron';
const CronJobWithCheckIn = Sentry.cron.instrumentCron(CronJob, 'my-cron-job');
// use the constructor
const job = new CronJobWithCheckIn('* * * * *', () => {
console.log('You will see this message every minute');
});
// or from
const job = CronJobWithCheckIn.from({
cronTime: '* * * * *',
onTick: () => {
console.log('You will see this message every minute');
},
});
For node-cron
:
import * as Sentry from '@​sentry/node';
import cron from 'node-cron';
const cronWithCheckIn = Sentry.cron.instrumentNodeCron(cron);
cronWithCheckIn.schedule(
'* * * * *',
() => {
console.log('running a task every minute');
},
{ name: 'my-cron-job' },
);
Other Changes
- feat(astro): Add
enabled
option to Astro integration options (#10007) - feat(core): Add
attributes
toSpan
(#10008) - feat(core): Add
setClient()
andgetClient()
toScope
(#10055) - feat(integrations): Capture error cause with
captureErrorCause
inExtraErrorData
integration (#9914) - feat(node-experimental): Allow to pass base span options to trace methods (#10006)
- feat(node): Local variables via async inspector in node 19+ (#9962)
- fix(astro): handle commonjs related issues (#10042)
- fix(astro): Handle non-utf8 encoded streams in middleware (#9989)
- fix(astro): prevent sentry from externalized (#9994)
- fix(core): Ensure
withScope
sets current scope correctly with async callbacks (#9974) - fix(node): ANR fixes and additions (#9998)
- fix(node): Anr should not block exit (#10035)
- fix(node): Correctly resolve module name (#10001)
- fix(node): Handle inspector already open (#10025)
- fix(node): Make
NODE_VERSION
properties required (#9964) - fix(node): Anr doesn't block exit (#10064)
- fix(utils): use correct typeof URL validation (#10028)
- perf(astro): reduce unnecessary path resolutions (#10021)
- ref(astro): Use astro logger instead of console (#9995)
- ref(remix): Isolate Express instrumentation from server auto-instrumentation. (#9966)
Work in this release contributed by @joshkel. Thank you for your contribution!
v7.91.0
Important Changes
- feat: Add server runtime metrics aggregator (#9894)
The release adds alpha support for Sentry developer metrics in
the server runtime SDKs (@sentry/node
, @sentry/deno
, @sentry/nextjs
server-side, etc.). Via the newly introduced
APIs, you can now flush metrics directly to Sentry.
To enable capturing metrics, you first need to add the metricsAggregator
experiment to your Sentry.init
call.
Sentry.init({
dsn: '__DSN__',
_experiments: {
metricsAggregator: true,
},
});
Then you'll be able to add counters
, sets
, distributions
, and gauges
under the Sentry.metrics
namespace.
// Add 4 to a counter named `hits`
Sentry.metrics.increment('hits', 4);
// Add 2 to gauge named `parallel_requests`, tagged with `type: "a"`
Sentry.metrics.gauge('parallel_requests', 2, { tags: { type: 'a' } });
// Add 4.6 to a distribution named `response_time` with unit seconds
Sentry.metrics.distribution('response_time', 4.6, { unit: 'seconds' });
// Add 2 to a set named `valuable.ids`
Sentry.metrics.set('valuable.ids', 2);
- feat(node): Rework ANR to use worker script via an integration (#9945)
The ANR tracking integration for Node
has been reworked to use an integration. ANR tracking now requires a minimum Node version of 16 or higher. Previously
you had to call Sentry.enableANRDetection
before running your application, now you can simply add the Anr
integration to your Sentry.init
call.
import * as Sentry from '@​sentry/node';
Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
integrations: [new Sentry.Integrations.Anr({ captureStackTrace: true, anrThreshold: 200 })],
});
Other Changes
- feat(breadcrumbs): Send component names on UI breadcrumbs (#9946)
- feat(core): Add
getGlobalScope()
method (#9920) - feat(core): Add
getIsolationScope()
method (#9957) - feat(core): Add
span.end()
to replacespan.finish()
(#9954) - feat(core): Ensure
startSpan
&startSpanManual
fork scope (#9955) - feat(react): Send component name on spans (#9949)
- feat(replay): Send component names in replay breadcrumbs (#9947)
- feat(sveltekit): Add options to configure fetch instrumentation script for CSP (#9969)
- feat(tracing): Send component name on interaction spans (#9948)
- feat(utils): Add function to extract relevant component name (#9921)
- fix(core): Rethrow caught promise rejections in
startSpan
,startSpanManual
,trace
(#9958)
v7.90.0
- feat(replay): Change to use preset quality values (#9903)
- fix(replay): Adjust development hydration error messages (#9922)
- fix(sveltekit): Add
types
field to package.jsonexports
(#9926)
v7.89.0
Important Changes
Deprecations
This release deprecates configureScope
, pushScope
, and popScope
, which will be removed in the upcoming v8 major
release.
Hapi Integration
- feat(node): Add Hapi Integration (#9539)
This release adds an integration for Hapi. It can be used as follows:
const Sentry = require('@​sentry/node');
const Hapi = require('@​hapi/hapi');
const init = async () => {
const server = Hapi.server({
// your server configuration ...
});
Sentry.init({
dsn: '__DSN__',
tracesSampleRate: 1.0,
integrations: [new Sentry.Integrations.Hapi({ server })],
});
server.route({
// your route configuration ...
});
await server.start();
};
SvelteKit 2.0
- chore(sveltekit): Add SvelteKit 2.0 to peer dependencies (#9861)
This release adds support for SvelteKit 2.0 in the @sentry/sveltekit
package. If you're upgrading from SvelteKit 1.x
to 2.x and already use the Sentry SvelteKit SDK, no changes apart from upgrading to this (or a newer) version are
necessary.
Other Changes
- feat(core): Add type & utility for function-based integrations (#9818)
- feat(core): Update
withScope
to return callback return value (#9866) - feat(deno): Support
Deno.CronSchedule
for cron jobs (#9880) - feat(nextjs): Auto instrument generation functions (#9781)
- feat(nextjs): Connect server component transactions if there is no incoming trace (#9845)
- feat(node-experimental): Update to new Scope APIs (#9799)
- feat(replay): Add
canvas.type
setting (#9877) - fix(nextjs): Export
createReduxEnhancer
(#9854) - fix(remix): Do not capture thrown redirect responses. (#9909)
- fix(sveltekit): Add conditional exports (#9872)
- fix(sveltekit): Avoid capturing 404 errors on client side (#9902)
- fix(utils): Do not use
Event
type in worldwide (#9864) - fix(utils): Support crypto.getRandomValues in old Chromium versions (#9251)
- fix(utils): Update
eventFromUnknownInput
to avoid scope pollution &getCurrentHub
(#9868) - ref: Use
addBreadcrumb
directly & allow to pass hint (#9867)
Work in this release contributed by @adam187, and @jghinestrosa. Thank you for your contributions!
v7.88.0
Important Changes
- feat(browser): Add browser metrics sdk (#9794)
The release adds alpha support for Sentry developer metrics in
the Browser SDKs (@sentry/browser
and related framework SDKs). Via the newly introduced APIs, you can now flush
metrics directly to Sentry.
To enable capturing metrics, you first need to add the MetricsAggregator
integration.
Sentry.init({
dsn: '__DSN__',
integrations: [new Sentry.metrics.MetricsAggregator()],
});
Then you'll be able to add counters
, sets
, distributions
, and gauges
under the Sentry.metrics
namespace.
// Add 4 to a counter named `hits`
Sentry.metrics.increment('hits', 4);
// Add 2 to gauge named `parallel_requests`, tagged with `happy: "no"`
Sentry.metrics.gauge('parallel_requests', 2, { tags: { happy: 'no' } });
// Add 4.6 to a distribution named `response_time` with unit seconds
Sentry.metrics.distribution('response_time', 4.6, { unit: 'seconds' });
// Add 2 to a set named `valuable.ids`
Sentry.metrics.set('valuable.ids', 2);
In a future release we'll add support for server runtimes (Node, Deno, Bun, Vercel Edge, etc.)
- feat(deno): Optionally instrument
Deno.cron
(#9808)
This releases add support for instrumenting Deno cron's with
Sentry cron monitors. This requires v1.38 of Deno run with the --unstable
flag and the usage of the DenoCron
Sentry integration.
// Import from the Deno registry
import * as Sentry from 'https://deno.land/x/sentry/index.mjs';
Sentry.init({
dsn: '__DSN__',
integrations: [new Sentry.DenoCron()],
});
Other Changes
- feat(replay): Bump
rrweb
to 2.6.0 (#9847) - fix(nextjs): Guard against injecting multiple times (#9807)
- ref(remix): Bump Sentry CLI to ^2.23.0 (#9773)
v7.87.0
- feat: Add top level
getCurrentScope()
method (#9800) - feat(replay): Bump
rrweb
to 2.5.0 (#9803) - feat(replay): Capture hydration error breadcrumb (#9759)
- feat(types): Add profile envelope types (#9798)
- fix(astro): Avoid RegExp creation during route interpolation (#9815)
- fix(browser): Avoid importing from
./exports
(#9775) - fix(nextjs): Catch rejecting flushes (#9811)
- fix(nextjs): Fix devserver CORS blockage when
assetPrefix
is defined (#9766) - fix(node): Capture errors in tRPC middleware (#9782)
v7.86.0
- feat(core): Use SDK_VERSION for hub API version (#9732)
- feat(nextjs): Emit warning if your app directory doesn't have a global-error.js file (#9753)
- feat(node): Add cloudflare pages commit sha (#9751)
- feat(remix): Bump @sentry/cli to 2.22.3 (#9741)
- fix(nextjs): Don't accidentally trigger static generation bailout (#9749)
- fix(node): Guard
process.env.NODE_ENV
access in Spotlight integration (#9748) - fix(utils): Fix XHR instrumentation early return (#9770)
- ref(remix): Rework Error Handling (#9725)
v7.85.0
- feat(core): Add
addEventProcessor
method (#9554) - feat(crons): Add interface for heartbeat checkin (#9706)
- feat(feedback): Include Feedback package in browser SDK (#9586)
- fix(astro): Isolate request instrumentation in middleware (#9709)
- fix(replay): Capture JSON XHR response bodies (#9623)
- ref(feedback): Change form
box-shadow
to use CSS var (#9630)
v7.84.0
Important Changes
- ref(nextjs): Set
automaticVercelMonitors
to befalse
by default (#9697)
From this version onwards the default for the automaticVercelMonitors
option in the Next.js SDK is set to false.
Previously, if you made use of Vercel Crons the SDK automatically instrumented the relevant routes to create Sentry
monitors. Because this feature will soon be generally available, we are now flipping the default to avoid situations
where quota is used unexpectedly.
If you want to continue using this feature, make sure to set the automaticVercelMonitors
flag to true
in your
next.config.js
Sentry settings.
Other Changes
- chore(astro): Add 4.0.0 preview versions to
astro
peer dependency range (#9696) - feat(metrics): Add interfaces for metrics (#9698)
- feat(web-vitals): Vendor in INP from web-vitals library (#9690)
- fix(astro): Avoid adding the Sentry Vite plugin in dev mode (#9688)
- fix(nextjs): Don't match files called
middleware
in node_modules (#9686) - fix(remix): Don't capture error responses that are not 5xx on Remix v2. (#9655)
- fix(tracing): Don't attach resource size if null (#9669)
- fix(utils): Regex match port to stop accidental replace (#9676)
- fix(utils): Try catch new URL when extracting query params (#9675)
v7.83.0
- chore(astro): Allow Astro 4.0 in peer dependencies (#9683)
- feat(astro): Add
assets
option to source maps upload options (#9668) - feat(react): Support
exactOptionalPropertyTypes
onErrorBoundary
(#9098) - fix: Don't depend on browser types in
types
(#9682) - fix(astro): Configure sourcemap assets directory for Vercel adapter (#9665)
- fix(remix): Check the error data before spreading. (#9664)
v7.82.0
- feat(astro): Automatically add Sentry middleware in Astro integration (#9532)
- feat(core): Add optional
setup
hook to integrations (#9556) - feat(core): Add top level
getClient()
method (#9638) - feat(core): Allow to pass
mechanism
as event hint (#9590) - feat(core): Allow to use
continueTrace
without callback (#9615) - feat(feedback): Add onClose callback to showReportDialog (#9433) (#9550)
- feat(nextjs): Add request data to all edge-capable functionalities (#9636)
- feat(node): Add Spotlight option to Node SDK (#9629)
- feat(utils): Refactor
addInstrumentationHandler
to dedicated methods (#9542) - fix: Make full url customizable for Spotlight (#9652)
- fix(astro): Remove Auth Token existence check (#9651)
- fix(nextjs): Fix middleware detection logic (#9637)
- fix(remix): Skip capturing aborted requests (#9659)
- fix(replay): Add
BODY_PARSE_ERROR
warning & time out fetch response load (#9622) - fix(tracing): Filter out invalid resource sizes (#9641)
- ref: Hoist
RequestData
integration to@sentry/core
(#9597) - ref(feedback): Rename onDialog* to onForm*, remove onActorClick (#9625)
Work in this release contributed by @arya-s. Thank you for your contribution!
v7.81.1
- fix(astro): Remove method from span op (#9603)
- fix(deno): Make sure files get published (#9611)
- fix(nextjs): Use
globalThis
instead ofglobal
in edge runtime (#9612) - fix(node): Improve error handling and shutdown handling for ANR (#9548)
- fix(tracing-internal): Fix case when originalURL contain query params (#9531)
Work in this release contributed by @powerfulyang, @LubomirIgonda1, @joshkel, and @alexgleason. Thank you for your contributions!
v7.81.0
Important Changes
- feat(nextjs): Add instrumentation utility for server actions (#9553)
This release adds a utility function withServerActionInstrumentation
to the @sentry/nextjs
SDK for instrumenting
your Next.js server actions with error and performance monitoring.
You can optionally pass form data and headers to record them, and configure the wrapper to record the Server Action responses:
import * as Sentry from '@​sentry/nextjs';
import { headers } from 'next/headers';
export default function ServerComponent() {
async function myServerAction(formData: FormData) {
'use server';
return await Sentry.withServerActionInstrumentation(
'myServerAction', // The name you want to associate this Server Action with in Sentry
{
formData, // Optionally pass in the form data
headers: headers(), // Optionally pass in headers
recordResponse: true, // Optionally record the server action response
},
async () => {
// ... Your Server Action code
return { name: 'John Doe' };
},
);
}
return (
<form action={myServerAction}>
<input type="text" name="some-input-value" />
<button type="submit">Run Action</button>
</form>
);
}
Other Changes
- docs(feedback): Example docs on
sendFeedback
(#9560) - feat(feedback): Add
level
and remove breadcrumbs from feedback event (#9533) - feat(vercel-edge): Add fetch instrumentation (#9504)
- feat(vue): Support Vue 3 lifecycle hooks in mixin options (#9578)
- fix(nextjs): Download CLI binary if it can't be found (#9584)
- ref: Deprecate
extractTraceParentData
from@sentry/core
& downstream packages (#9158) - ref(replay): Add further logging to network body parsing (#9566)
Work in this release contributed by @snoozbuster. Thank you for your contribution!
v7.80.1
- fix(astro): Adjust Vite plugin config to upload server source maps (#9541)
- fix(nextjs): Add tracing extensions in all serverside wrappers (#9537)
- fix(nextjs): Fix serverside transaction names on Windows (#9526)
- fix(node): Fix tRPC middleware typing (#9540)
- fix(replay): Add additional safeguards for capturing network bodies (#9506)
- fix(tracing): Update prisma span to be
db.prisma
(#9512)
v7.80.0
- feat(astro): Add distributed tracing via
<meta>
tags (#9483) - feat(node): Capture internal server errors in trpc middleware (#9482)
- feat(remix): Export a type to use for
MetaFunction
parameters (#9493) - fix(astro): Mark SDK package as Astro-external (#9509)
- ref(nextjs): Don't initialize Server SDK during build (#9503)
v7.79.0
- feat(tracing): Add span
origin
to trace context (#9472) - fix(deno): Emit .mjs files (#9485)
- fix(nextjs): Flush servercomponent events for edge (#9487)
v7.78.0
Important Changes
- Replay Bundle Size improvements
We've dramatically decreased the bundle size of our Replay package, reducing the minified & gzipped bundle size by ~20 KB! This was possible by extensive use of tree shaking and a host of small changes to reduce our footprint:
- feat(replay): Update rrweb to 2.2.0 (#9414)
- ref(replay): Use fflate instead of pako for compression (#9436)
By using tree shaking it is possible to shave up to 10 additional KB off the bundle.
Other Changes
- feat(astro): Add Sentry middleware (#9445)
- feat(feedback): Add "outline focus" and "foreground hover" vars (#9462)
- feat(feedback): Add
openDialog
andcloseDialog
onto integration interface (#9464) - feat(feedback): Implement new user feedback embeddable widget (#9217)
- feat(nextjs): Add automatic sourcemapping for edge part of the SDK (#9454)
- feat(nextjs): Add client routing instrumentation for app router (#9446)
- feat(node-experimental): Add hapi tracing support (#9449)
- feat(replay): Allow to configure
beforeErrorSampling
(#9470) - feat(replay): Stop fixing truncated JSONs in SDK (#9437)
- fix(nextjs): Fix sourcemaps resolving for local dev when basePath is set (#9457)
- fix(nextjs): Only inject basepath in dev mode (#9465)
- fix(replay): Ensure we stop for rate limit headers (#9420)
- ref(feedback): Add treeshaking for logger statements (#9475)
- ref(replay): Use rrweb for slow click detection (#9408)
- build(polyfills): Remove output format specific logic (#9467)
v7.77.0
Security Fixes
- fix(nextjs): Match only numbers as orgid in tunnelRoute (#9416) (CVE-2023-46729)
- fix(nextjs): Strictly validate tunnel target parameters (#9415) (CVE-2023-46729)
Other Changes
- feat: Move LinkedErrors integration to @sentry/core (#9404)
- feat(remix): Update sentry-cli version to ^2.21.2 (#9401)
- feat(replay): Allow to treeshake & configure compression worker URL (#9409)
- fix(angular-ivy): Adjust package entry points to support Angular 17 with SSR config (#9412)
- fix(feedback): Fixing feedback import (#9403)
- fix(utils): Avoid keeping a reference of last used event (#9387)
v7.76.0
Important Changes
- feat(core): Add cron monitor wrapper helper (#9395)
This release adds Sentry.withMonitor()
, a wrapping function that wraps a callback with a cron monitor that will
automatically report completions and failures:
import * as Sentry from '@​sentry/node';
// withMonitor() will send checkin when callback is started/finished
// works with async and sync callbacks.
const result = Sentry.withMonitor(
'dailyEmail',
() => {
// withCheckIn return value is same return value here
return sendEmail();
},
// Optional upsert options
{
schedule: {
type: 'crontab',
value: '0 * * * *',
},
// 🇨🇦🫡
timezone: 'Canada/Eastern',
},
);
Other Changes
- chore(angular-ivy): Allow Angular 17 in peer dependencies (#9386)
- feat(nextjs): Instrument SSR page components (#9346)
- feat(nextjs): Trace errors in page component SSR (#9388)
- fix(nextjs): Instrument route handlers with
jsx
andtsx
file extensions (#9362) - fix(nextjs): Trace with performance disabled (#9389)
- fix(replay): Ensure
replay_id
is not added to DSC if session expired (#9359) - fix(replay): Remove unused parts of pako from build (#9369)
- fix(serverless): Don't mark all errors as unhandled (#9368)
- fix(tracing-internal): Fix case when middleware contain array of routes with special chars as @ (#9375)
- meta(nextjs): Bump peer deps for Next.js 14 (#9390)
Work in this release contributed by @LubomirIgonda1. Thank you for your contribution!
v7.75.1
- feat(browser): Allow collecting of pageload profiles (#9317)
- fix(browser): Correct timestamp on pageload profiles (#9350)
- fix(nextjs): Use webpack plugin release value to inject release (#9348)
v7.75.0
Important Changes
- feat(opentelemetry): Add new
@sentry/opentelemetry
package (#9238)
This release publishes a new package, @sentry/opentelemetry
. This is a runtime agnostic replacement for
@sentry/opentelemetry-node
and exports a couple of useful utilities which can be used to use Sentry together with
OpenTelemetry.
You can read more about @sentry/opentelemetry in the Readme.
- feat(replay): Allow to treeshake rrweb features (#9274)
Starting with this release, you can configure the following build-time flags in order to reduce the SDK bundle size:
__RRWEB_EXCLUDE_CANVAS__
__RRWEB_EXCLUDE_IFRAME__
__RRWEB_EXCLUDE_SHADOW_DOM__
You can read more about tree shaking in our docs.
Other Changes
- build(deno): Prepare Deno SDK for release on npm (#9281)
- feat: Remove tslib (#9299)
- feat(node): Add abnormal session support for ANR (#9268)
- feat(node): Remove
lru_map
dependency (#9300) - feat(node): Vendor
cookie
module (#9308) - feat(replay): Share performance instrumentation with tracing (#9296)
- feat(types): Add missing Profiling types (macho debug image, profile measurements, stack frame properties) (#9277)
- feat(types): Add statsd envelope types (#9304)
- fix(astro): Add integration default export to types entry point (#9337)
- fix(astro): Convert SDK init file import paths to POSIX paths (#9336)
- fix(astro): Make
Replay
andBrowserTracing
integrations tree-shakeable (#9287) - fix(integrations): Fix transaction integration (#9334)
- fix(nextjs): Restore
autoInstrumentMiddleware
functionality (#9323) - fix(nextjs): Guard for case where
getInitialProps
may return undefined (#9342) - fix(node-experimental): Make node-fetch support optional (#9321)
- fix(node): Check buffer length when attempting to parse ANR frame (#9314)
- fix(replay): Fix xhr start timestamps (#9341)
- fix(tracing-internal): Remove query params from urls with a trailing slash (#9328)
- fix(types): Remove typo with CheckInEnvelope (#9303)
v7.74.1
- chore(astro): Add
astro-integration
keyword (#9265) - fix(core): Narrow filters for health check transactions (#9257)
- fix(nextjs): Fix HMR by inserting new entrypoints at the end (#9267)
- fix(nextjs): Fix resolution of request async storage module (#9259)
- fix(node-experimental): Guard against missing
fetch
(#9275) - fix(remix): Update
defer
injection logic. (#9242) - fix(tracing-internal): Parameterize express middleware parameters (#8668)
- fix(utils): Move Node specific ANR impl. out of utils (#9258)
Work in this release contributed by @LubomirIgonda1. Thank you for your contribution!
v7.74.0
Important Changes
- feat(astro): Add
sentryAstro
integration (#9218)
This Release introduces the first alpha version of our new SDK for Astro. At this time, the SDK is considered experimental and things might break and change in future versions.
The core of the SDK is an Astro integration which you easily add to your Astro config:
// astro.config.js
import { defineConfig } from 'astro/config';
import sentry from '@​sentry/astro';
export default defineConfig({
integrations: [
sentry({
dsn: '__DSN__',
sourceMapsUploadOptions: {
project: 'astro',
authToken: process.env.SENTRY_AUTH_TOKEN,
},
}),
],
});
Check out the README for usage instructions and what to expect from this alpha release.
Other Changes
- feat(core): Add
addIntegration
utility (#9186) - feat(core): Add
continueTrace
method (#9164) - feat(node-experimental): Add NodeFetch integration (#9226)
- feat(node-experimental): Use native OTEL Spans (#9161, #9214)
- feat(node-experimental): Sample in OTEL Sampler (#9203)
- feat(serverlesss): Allow disabling transaction traces (#9154)
- feat(tracing): Allow direct pg module to enable esbuild support (#9227)
- feat(utils): Move common node ANR code to utils (#9191)
- feat(vue): Expose
VueIntegration
to initialize vue app later (#9180) - fix: Don't set
referrerPolicy
on serverside fetch transports (#9200) - fix: Ensure we never mutate options passed to
init
(#9162) - fix(ember): Avoid pulling in utils at build time (#9221)
- fix(ember): Drop undefined config values (#9175)
- fix(node): Ensure mysql integration works without callback (#9222)
- fix(node): Only require
inspector
when needed (#9149) - fix(node): Remove ANR
debug
option and instead add logger.isEnabled() (#9230) - fix(node): Strip
.mjs
and.cjs
extensions from module name (#9231) - fix(replay): bump rrweb to 2.0.1 (#9240)
- fix(replay): Fix potential broken CSS in styled-components (#9234)
- fix(sveltekit): Flush in server wrappers before exiting (#9153)
- fix(types): Update signature of
processEvent
integration hook (#9151) - fix(utils): Dereference DOM events after they have servered their purpose (#9224)
- ref(integrations): Refactor pluggable integrations to use
processEvent
(#9021) - ref(serverless): Properly deprecate
rethrowAfterCapture
option (#9159) - ref(utils): Deprecate
walk
method (#9157)
Work in this release contributed by @aldenquimby. Thank you for your contributions!
v7.73.0
Important Changes
- feat(replay): Upgrade to rrweb2
This is fully backwards compatible with prior versions of the Replay SDK. The only breaking change that we will making
is to not be masking aria-label
by default. The reason for this change is to align with our core SDK which also does
not mask aria-label
. This change also enables better support of searching by clicks.
Another change that needs to be highlighted is the 13% bundle size increase. This bundle size increase is necessary to bring improved recording performance and improved replay fidelity, especially in regards to web components and iframes. We will be investigating the reduction of the bundle size in this MR.
Here are benchmarks comparing the version 1 of rrweb to version 2
metric | v1 | v2 |
---|---|---|
lcp | 1486.06 ms | 1529.11 ms |
cls | 0.40 ms | 0.40 ms |
fid | 1.53 ms | 1.50 ms |
tbt | 3207.22 ms | 3036.80 ms |
memoryAvg | 131.83 MB | 124.84 MB |
memoryMax | 324.8 MB | 339.03 MB |
netTx | 282.67 KB | 272.51 KB |
netRx | 8.02 MB | 8.07 MB |
Other Changes
- feat: Always assemble Envelopes (#9101)
- feat(node): Rate limit local variables for caught exceptions and enable
captureAllExceptions
by default (#9102) - fix(core): Ensure
tunnel
is considered forisSentryUrl
checks (#9130) - fix(nextjs): Fix
RequestAsyncStorage
fallback path (#9126) - fix(node-otel): Suppress tracing for generated sentry spans (#9142)
- fix(node): fill in span data from http request options object (#9112)
- fix(node): Fixes and improvements to ANR detection (#9128)
- fix(sveltekit): Avoid data invalidation in wrapped client-side
load
functions (#9071) - ref(core): Refactor
InboundFilters
integration to useprocessEvent
(#9020) - ref(wasm): Refactor Wasm integration to use
processEvent
(#9019)
Work in this release contributed by @vlad-zhukov. Thank you for your contribution!
v7.72.0
Important Changes
- feat(node): App Not Responding with stack traces (#9079)
This release introduces support for Application Not Responding (ANR) errors for Node.js applications. These errors are triggered when the Node.js main thread event loop of an application is blocked for more than five seconds. The Node SDK reports ANR errors as Sentry events and can optionally attach a stacktrace of the blocking code to the ANR event.
To enable ANR detection, import and use the enableANRDetection
function from the @sentry/node
package before you run
the rest of your application code. Any event loop blocking before calling enableANRDetection
will not be detected by
the SDK.
Example (ESM):
import * as Sentry from '@​sentry/node';
Sentry.init({
dsn: '___PUBLIC_DSN___',
tracesSampleRate: 1.0,
});
await Sentry.enableANRDetection({ captureStackTrace: true });
// Function that runs your app
runApp();
Example (CJS):
const Sentry = require('@​sentry/node');
Sentry.init({
dsn: '___PUBLIC_DSN___',
tracesSampleRate: 1.0,
});
Sentry.enableANRDetection({ captureStackTrace: true }).then(() => {
// Function that runs your app
runApp();
});
Other Changes
- fix(nextjs): Filter
RequestAsyncStorage
locations by locations that webpack will resolve (#9114) - fix(replay): Ensure
replay_id
is not captured when session is expired (#9109)
v7.71.0
- feat(bun): Instrument Bun.serve (#9080)
- fix(core): Ensure global event processors are always applied to event (#9064)
- fix(core): Run client eventProcessors before global ones (#9032)
- fix(nextjs): Use webpack module paths to attempt to resolve internal request async storage module (#9100)
- fix(react): Add actual error name to boundary error name (#9065)
- fix(react): Compare location against
basename
-prefixed route. (#9076) - ref(browser): Refactor browser integrations to use
processEvent
(#9022)
Work in this release contributed by @jorrit. Thank you for your contribution!
v7.70.0
Important Changes
- feat: Add Bun SDK (#9029)
This release contains the beta version of @sentry/bun
, our SDK for the Bun JavaScript runtime! For
details on how to use it, please see the README. Any feedback/bug reports are greatly
appreciated, please reach out on GitHub.
Note that as of now the Bun runtime does not support global error handlers. This is being actively worked on, see the tracking issue in Bun's GitHub repo.
- feat(remix): Add Remix 2.x release support. (#8940)
The Sentry Remix SDK now officially supports Remix v2! See our Remix docs for more details.
Other Changes
- chore(node): Upgrade cookie to ^0.5.0 (#9013)
- feat(core): Introduce
processEvent
hook onIntegration
(#9017) - feat(node): Improve non-error messages (#9026)
- feat(vercel-edge): Add Vercel Edge Runtime package (#9041)
- fix(remix): Use
React.ComponentType
instead ofReact.FC
aswithSentry
's generic type. (#9043) - fix(replay): Ensure replay events go through
preprocessEvent
hook (#9034) - fix(replay): Fix typo in Replay types (#9028)
- fix(sveltekit): Adjust
handleErrorWithSentry
type (#9054) - fix(utils): Try-catch monkeypatching to handle frozen objects/functions (#9031)
Work in this release contributed by @Dima-Dim, @krist7599555 and @lifeiscontent. Thank you for your contributions!
Special thanks for @isaacharrisholt for helping us implement a Vercel Edge Runtime SDK which we use under the hood for our Next.js SDK.
v7.69.0
Important Changes
- New Performance APIs
This release introduces a new set of top level APIs for the Performance Monitoring SDKs. These aim to simplify creating
spans and reduce the boilerplate needed for performance instrumentation. The three new methods introduced are
Sentry.startSpan
, Sentry.startInactiveSpan
, and Sentry.startSpanManual
. These methods are available in the browser
and node SDKs.
Sentry.startSpan
wraps a callback in a span. The span is automatically finished when the callback returns. This is the
recommended way to create spans.
// Start a span that tracks the duration of expensiveFunction
const result = Sentry.startSpan({ name: 'important function' }, () => {
return expensiveFunction();
});
// You can also mutate the span wrapping the callback to set data or status
Sentry.startSpan({ name: 'important function' }, span => {
// span is undefined if performance monitoring is turned off or if
// the span was not sampled. This is done to reduce overhead.
span?.setData('version', '1.0.0');
return expensiveFunction();
});
If you don't want the span to finish when the callback returns, use Sentry.startSpanManual
to control when the span is
finished. This is useful for event emitters or similar.
// Start a span that tracks the duration of middleware
function middleware(_req, res, next) {
return Sentry.startSpanManual({ name: 'middleware' }, (span, finish) => {
res.once('finish', () => {
setHttpStatus(span, res.status);
finish();
});
return next();
});
}
Sentry.startSpan
and Sentry.startSpanManual
create a span and make it active for the duration of the callback. Any
spans created while this active span is running will be added as a child span to it. If you want to create a span
without making it active, use Sentry.startInactiveSpan
. This is useful for creating parallel spans that are not
related to each other.
const span1 = Sentry.startInactiveSpan({ name: 'span1' });
someWork();
const span2 = Sentry.startInactiveSpan({ name: 'span2' });
moreWork();
const span3 = Sentry.startInactiveSpan({ name: 'span3' });
evenMoreWork();
span1?.finish();
span2?.finish();
span3?.finish();
Other Changes
- feat(core): Export
BeforeFinishCallback
type (#8999) - build(eslint): Enforce that ts-expect-error is used (#8987)
- feat(integration): Ensure
LinkedErrors
integration runs before all event processors (#8956) - feat(node-experimental): Keep breadcrumbs on transaction (#8967)
- feat(redux): Add 'attachReduxState' option (#8953)
- feat(remix): Accept
org
,project
andurl
as args to upload script (#8985) - fix(utils): Prevent iterating over VueViewModel (#8981)
- fix(utils): uuidv4 fix for cloudflare (#8968)
- fix(core): Always use event message and exception values for
ignoreErrors
(#8986) - fix(nextjs): Add new potential location for Next.js request AsyncLocalStorage (#9006)
- fix(node-experimental): Ensure we only create HTTP spans when outgoing (#8966)
- fix(node-experimental): Ignore OPTIONS & HEAD requests (#9001)
- fix(node-experimental): Ignore outgoing Sentry requests (#8994)
- fix(node-experimental): Require parent span for
pg
spans (#8993) - fix(node-experimental): Use Sentry logger as Otel logger (#8960)
- fix(node-otel): Refactor OTEL span reference cleanup (#9000)
- fix(react): Switch to props in
useRoutes
(#8998) - fix(remix): Add
glob
to Remix SDK dependencies. (#8963) - fix(replay): Ensure
handleRecordingEmit
aborts when event is not added (#8938) - fix(replay): Fully stop & restart session when it expires (#8834)
Work in this release contributed by @Duncanxyz and @malay44. Thank you for your contributions!
v7.68.0
- feat(browser): Add
BroadcastChannel
andSharedWorker
to TryCatch EventTargets (#8943) - feat(core): Add
name
toSpan
(#8949) - feat(core): Add
ServerRuntimeClient
(#8930) - fix(node-experimental): Ensure
span.finish()
works as expected (#8947) - fix(remix): Add new sourcemap-upload script files to prepack assets. (#8948)
- fix(publish): Publish downleveled TS3.8 types and fix types path (#8954)
v7.67.0
Important Changes
-
feat: Mark errors caught by the SDK as unhandled
- feat(browser): Mark errors caught from
TryCatch
integration as unhandled (#8890) - feat(integrations): Mark errors caught from
HttpClient
andCaptureConsole
integrations as unhandled (#8891) - feat(nextjs): Mark errors caught from NextJS wrappers as unhandled (#8893)
- feat(react): Mark errors captured from ErrorBoundary as unhandled (#8914)
- feat(remix): Add debugid injection and map deletion to sourcemaps script (#8814)
- feat(remix): Mark errors caught from Remix instrumentation as unhandled (#8894)
- feat(serverless): Mark errors caught in Serverless handlers as unhandled (#8907)
- feat(vue): Mark errors caught by Vue wrappers as unhandled (#8905)
- feat(browser): Mark errors caught from
This release fixes inconsistent behaviour of when our SDKs classify captured errors as unhandled. Previously, some of
our instrumentations correctly set unhandled, while others set handled. Going forward, all errors caught automatically
from our SDKs will be marked as unhandled. If you manually capture errors (e.g. by calling Sentry.captureException
),
your errors will continue to be reported as handled.
This change might lead to a decrease in reported crash-free sessions and consequently in your release health score. If you have concerns about this, feel free to open an issue.
Other Changes
- feat(node-experimental): Implement new performance APIs (#8911)
- feat(node-experimental): Sync OTEL context with Sentry AsyncContext (#8797)
- feat(replay): Allow to configure
maxReplayDuration
(#8769) - fix(browser): Add replay and profiling options to
BrowserClientOptions
(#8921) - fix(browser): Check for existence of instrumentation targets (#8939)
- fix(nextjs): Don't re-export default in route handlers (#8924)
- fix(node): Improve mysql integration (#8923)
- fix(remix): Guard against missing default export for server instrument (#8909)
- ref(browser): Deprecate top-level
wrap
function (#8927) - ref(node-otel): Avoid exporting internals & refactor attribute adding (#8920)
Work in this release contributed by @SorsOps. Thank you for your contribution!
v7.66.0
- fix: Defer tracing decision to downstream SDKs when using SDK without performance (#8839)
- fix(nextjs): Fix
package.json
exports (#8895) - fix(sveltekit): Ensure target file exists before applying auto instrumentation (#8881)
- ref: Use consistent console instrumentation (#8879)
- ref(browser): Refactor sentry breadcrumb to use hook (#8892)
- ref(tracing): Add
origin
to spans (#8765)
v7.65.0
- build: Remove build-specific polyfills (#8809)
- build(deps): bump protobufjs from 6.11.3 to 6.11.4 (#8822)
- deps(sveltekit): Bump
@sentry/vite-plugin
(#8877) - feat(core): Introduce
Sentry.startActiveSpan
andSentry.startSpan
(#8803) - fix: Memoize
AsyncLocalStorage
instance (#8831) - fix(nextjs): Check for validity of API route handler signature (#8811)
- fix(nextjs): Fix
requestAsyncStorageShim
path resolution on windows (#8875) - fix(node): Log entire error object in
OnUncaughtException
(#8876) - fix(node): More relevant warning message when tracing extensions are missing (#8820)
- fix(replay): Streamline session creation/refresh (#8813)
- fix(sveltekit): Avoid invalidating data on route changes in
wrapServerLoadWithSentry
(#8801) - fix(tracing): Better guarding for performance observer (#8872)
- ref(sveltekit): Remove custom client fetch instrumentation and use default instrumentation (#8802)
- ref(tracing-internal): Deprecate
tracePropagationTargets
inBrowserTracing
(#8874)
Configuration
-
If you want to rebase/retry this MR, check this box