- This slot is waiting for you
- [browser] feat: Use framesToPop for InvaliantViolations in React errors (#2204)
- [browser] fix: Apply crossorigin attribute with setAttribute tag for userReport dialog (#2196)
- [browser] fix: Make sure that falsy values are captured in unhandledrejections (#2207)
- [loader] fix: Loader should also retrigger falsy values as errors (#2207)
- [core] fix: Correctly detect when client is enabled before installing integrations (#2193)
- [browser] ref: Loosen typings in
wrap
method
- [core] fix: When using enabled:false integrations shouldnt be installed (#2181)
- [browser] feat: Add support for custom schemes to Tracekit
- [browser] ref: Return function call result from
wrap
method - [browser] ref: Better UnhandledRejection messages (#2185)
- [browser] test: Complete rewrite of Browser Integration Tests (#2176)
- [node] feat: Add cookies as an optional property in the request handler (#2167)
- [node] ref: Unify method name casing in breadcrumbs (#2183)
- [integrations] feat: Add logErrors option to Vue integration (#2182)
- [core] fix: Store processing state for each
flush
call separately (#2143) - [scope] feat: Generate hint if not provided in the Hub calls (#2142)
- [browser] feat: Read
window.SENTRY_RELEASE
to set release by default (#2132) - [browser] fix: Don't call
fn.handleEvent.bind
iffn.handleEvent
does not exist (#2138) - [browser] fix: Correctly handle events that utilize
handleEvent
object (#2149) - [node] feat: Provide optional
shouldHandleError
option for nodeerrorHandler
(#2146) - [node] fix: Remove unsafe
any
fromNodeOptions
type (#2111) - [node] fix: Merge
transportOptions
correctly (#2151) - [utils] fix: Add polyfill for
Object.setPrototypeOf
(#2127) - [integrations] feat:
SessionDuration
integration (#2150)
- [core] feat: Expose
Span
class - [node] fix: Don't overwrite transaction on event in express handler
- [core] fix: Allow Integration constructor to have arguments
- [browser] fix: Vue breadcrumb recording missing in payload
- [node] fix: Force agent-base to be at version 4.3.0 to fix various issues. Fix #1762, fix #2085
- [integrations] fix: Tracing integration fetch headers bug where trace header is not attached if there are no options.
- [utils] fix: Better native
fetch
detection via iframes. Fix #1601
- [integrations] fix: Tracing integration fetch headers bug.
- [global] feat: Exposed new simplified scope API.
Sentry.setTag
,Sentry.setTags
,Sentry.setExtra
,Sentry.setExtras
,Sentry.setUser
,Sentry.setContext
- [integrations] fix: Tracing integration CDN build.
- [browser] fix: Remove
use_strict
from@sentry/browser
- [utils] fix: Guard string check in
truncate
- [browser] fix: TraceKit fix for eval frames
- [browser] feat: Expose
wrap
function in@sentry/browser
- [browser] feat: Added
onLoad
callback toshowReportDialog
- [browser] fix: Use 'native code' as a filename for some frames
- [opentracing] ref: Removed opentracing package
- [integrations] feat: Add tracing integration
- [hub] feat: Add tracing related function to scope and hub (
Scope.startSpan
,Scope.setSpan
,Hub.traceHeaders
) - [hub] feat: Add new function to Scope
setContext
- [hub] feat: Add new function to Scope
setTransaction
- [integrations] fix: Update ember integration to include original error in
hint
inbeforeSend
- [integrations] fix: Ember/Vue fix integration
- [browser] fix: GlobalHandler integration sometimes receives Event objects as message: Fix #1949
- [browser] fix: Fixed a bug if Sentry was initialized multiple times: Fix #2043
- [browser] ref: Mangle more stuff, reduce bundle size
- [browser] fix: Support for ram bundle frames
- [node] fix: Expose lastEventId method
- [browser] fix: Breadcrumb Integration: Fix #2034
- [hub] feat: Add
setContext
on the scope - [browser] fix: Breacrumb integration ui clicks
- [node] feat: Add
flushTimeout
torequestHandler
to auto flush requests
- [core] fix: Don't disable client before flushing
- [utils] fix: Remove node types
- [hub] fix: Make sure all breadcrumbs have a timestamp
- [hub] fix: Merge event with scope breadcrumbs instead of only using event breadcrumbs
- [utils] ref: Move
htmlTreeAsString
to@sentry/browser
- [utils] ref: Remove
Window
typehintgetGlobalObject
- [core] fix: Make sure that flush/close works as advertised
- [integrations] feat: Added
CaptureConsole
integration
- [utils]: Change how we use
utils
and exposeesm
build - [utils]: Remove
store
andfs
classes -> moved to @sentry/electron where this is used - [hub]: Allow to pass
null
tosetUser
to reset it
- [esm]:
module
inpackage.json
now provides aes5
build instead ofes2015
- [integrations] fix: Not requiring angular types
- [hub] fix: Don't reset registry when there is no hub on the carrier #1969
- [integrations] fix: Export dedupe integration
- [browser] fix: Remove
browser
field frompackage.json
- [browser] fix: Add missing types
This major bump brings a lot of internal improvements. Also, we extracted some integrations out of the SDKs and put them
in their own package called @sentry/integrations
. For a detailed guide how to upgrade from 4.x
to 5.x
refer to our
migration guide.
Migration from v4
If you were using the SDKs high level API, the way we describe it in the docs, you should be fine without any code changes. This is a breaking release since we removed some methods from the public API and removed some classes from the default export.
- breaking [node] fix: Events created from exception shouldn't have top-level message attribute
- [utils] ref: Update wrap method to hide internal sentry flags
- [utils] fix: Make internal Sentry flags non-enumerable in fill utils
- [utils] ref: Move
SentryError
+PromiseBuffer
to utils - breaking [core] ref: Use
SyncPromise
internally, this reduces memory pressure by a lot. - ref: Move internal
ExtendedError
to a types package - breaking [browser] ref: Removed
BrowserBackend
from default export. - breaking [node] ref: Removed
BrowserBackend
from default export. - breaking [core] feat: Disable client once flushed using
close
method - breaking [core] ref: Pass
Event
tosendEvent
instead of already stringified data - [utils] feat: Introduce
isSyntheticEvent
util - breaking [utils] ref: remove
isArray
util in favor ofArray.isArray
- breaking [utils] ref: Remove
isNaN
util in favor ofNumber.isNaN
- breaking [utils] ref: Remove
isFunction
util in favor oftypeof === 'function'
- breaking [utils] ref: Remove
isUndefined
util in favor of=== void 0
- breaking [utils] ref: Remove
assign
util in favor ofObject.assign
- breaking [utils] ref: Remove
includes
util in favor of nativeincludes
- breaking [utils] ref: Rename
serializeKeysToEventMessage
tokeysToEventMessage
- breaking [utils] ref: Rename
limitObjectDepthToSize
tonormalizeToSize
and rewrite its internals - breaking [utils] ref: Rename
safeNormalize
tonormalize
and rewrite its internals - breaking [utils] ref: Remove
serialize
,deserialize
,clone
andserializeObject
functions - breaking [utils] ref: Rewrite normalization functions by removing most of them and leaving just
normalize
andnormalizeToSize
- breaking [core] ref: Extract all pluggable integrations into a separate
@sentry/integrations
package - breaking [core] ref: Move
extraErrorData
integration to@sentry/integrations
package - [core] feat: Add
maxValueLength
option to adjust max string length for values, default is 250. - [hub] feat: Introduce
setExtras
,setTags
,clearBreadcrumbs
. - breaking [all] feat: Move
Mechanism
toException
- [browser/node] feat: Add
synthetic
toMechanism
in exception. - [browser/node] fix: Use
addExceptionTypeValue
in helpers - [browser] ref: Remove unused TraceKit code
- breaking [all] build: Expose
module
inpackage.json
as entry point for esm builds. - breaking [all] build: Use
es6
target instead of esnext for ESM builds - [all] feat: Prefix all private methods with
_
- [all] build: Use terser instead of uglify
- [opentracing] feat: Introduce
@sentry/opentracing
providing functions to attach opentracing data to Sentry Events - breaking [core] ref:
Dedupe
Integration is now optional, it is no longer enabled by default. - breaking [core] ref: Removed default client fingerprinting for messages
- [node] ref: Remove stack-trace dependencies
- breaking [core] ref: Transport function
captureEvent
was renamed tosendEvent
- [node] fix: Check if buffer isReady before sending/creating Promise for request.
- [browser] fix: Remove beacon transport.
- [browser] fix: Don't mangle names starting with two
__
- [utils] fix: Ensure only one logger instance
- [node] feat: Add esm build
- [integrations] feat: Fix build and prepare upload to cdn
- [integrations] fix: Bug in vue integration with
attachProps
- breaking [core] ref: Remove SDK information integration
- breaking [core] ref: Remove
install
function on integration interface - [node] feat: Add esm build
- [integrations] feat: Fix build and prepare upload to cdn
- [integrations] fix: Bug in vue integration with
attachProps
- [browser] fix: Don't mangle names starting with two
__
- [utils] fix: Ensure only one logger instance
- [browser] fix: Remove beacon transport.
- [node] fix: Check if buffer isReady before sending/creating Promise for request.
- Fix: Tag npm release with
next
to not make it latest
- Fix: NPM release
Migration from v4
This major bump brings a lot of internal improvements. This is a breaking release since we removed some methods from the public API and removed some classes from the default export.
- breaking [node] fix: Events created from exception shouldn't have top-level message attribute
- [utils] ref: Update wrap method to hide internal sentry flags
- [utils] fix: Make internal Sentry flags non-enumerable in fill utils
- [utils] ref: Move
SentryError
+PromiseBuffer
to utils - breaking [core] ref: Use
SyncPromise
internally, this reduces memory pressure by a lot. - breaking [browser] ref: Removed
BrowserBackend
from default export. - breaking [node] ref: Removed
BrowserBackend
from default export. - breaking [core] feat: Disable client once flushed using
close
method - ref: Move internal
ExtendedError
to a types package - breaking [core] ref: Pass
Event
tosendEvent
instead of already stringified data - [utils] feat: Introduce
isSyntheticEvent
util - breaking [utils] ref: remove
isArray
util in favor ofArray.isArray
- breaking [utils] ref: Remove
isNaN
util in favor ofNumber.isNaN
- breaking [utils] ref: Remove
isFunction
util in favor oftypeof === 'function'
- breaking [utils] ref: Remove
isUndefined
util in favor of=== void 0
- breaking [utils] ref: Remove
assign
util in favor ofObject.assign
- breaking [utils] ref: Remove
includes
util in favor of nativeincludes
- breaking [utils] ref: Rename
serializeKeysToEventMessage
tokeysToEventMessage
- breaking [utils] ref: Rename
limitObjectDepthToSize
tonormalizeToSize
and rewrite its internals - breaking [utils] ref: Rename
safeNormalize
tonormalize
and rewrite its internals - breaking [utils] ref: Remove
serialize
,deserialize
,clone
andserializeObject
functions - breaking [utils] ref: Rewrite normalization functions by removing most of them and leaving just
normalize
andnormalizeToSize
- breaking [core] ref: Extract all pluggable integrations into a separate
@sentry/integrations
package - breaking [core] ref: Move
extraErrorData
integration to@sentry/integrations
package - [core] feat: Add
maxValueLength
option to adjust max string length for values, default is 250. - [hub] feat: Introduce
setExtras
,setTags
,clearBreadcrumbs
. - breaking [all] feat: Move
Mechanism
toException
- [browser/node] feat: Add
synthetic
toMechanism
in exception. - [browser/node] fix: Use
addExceptionTypeValue
in helpers - [browser] ref: Remove unused TraceKit code
- breaking [all] build: Expose
module
inpackage.json
as entry point for esm builds. - breaking [all] build: Use
es6
target instead of esnext for ESM builds - [all] feat: Prefix all private methods with
_
- [all] build: Use terser instead of uglify
- [opentracing] feat: Introduce
@sentry/opentracing
providing functions to attach opentracing data to Sentry Events - breaking [core] ref:
Dedupe
Integration is now optional, it is no longer enabled by default. - breaking [core] ref: Removed default client fingerprinting for messages
- [node] ref: Remove stack-trace dependencies
- breaking [core] ref: Transport function
captureEvent
was renamed tosendEvent
- [utils] fix: Prevent decycling from referencing original objects
- [utils] fix: Preserve correct name when wrapping
- [raven-node] test: Update raven-node tests for new node version
- [utils] fix: Normalize value before recursively walking down the tree
- [browser] ref: Check whether client is enabled for reportDialog and log instead of throw
- [utils] fix: Preserve function prototype when filling
- [utils] fix: use a static object as fallback of the global object
- [node] feat: Read from
SENTRY_RELEASE
andSENTRY_ENVIRONMENT
if present
- [utils] fix: Patch
tslib_1__default
regression and add additional tests around it
- [loader] fix: Detect if
init
has been called in an onload callback - [core] fix: Use correct frame for
inboundFilter
methods - [core] ref: Multiple
init
calls have been changed to "latest wins" instead of "ignore all after first" - [core] feat: Introduce
flush
method which currently is an alias forclose
- [node] feat: If
options.dsn
is undefined when callinginit
we try to load it fromprocess.env.SENTRY_DSN
- [node] feat: Expose
flush
andclose
onSentry.*
- [node] feat: Add
sentry
to express error handler response which contains theevent_id
of the error
- [browser] fix:
DOMError
andDOMException
should be error level events - [browser] ref: Log error if Ember/Vue instances are not provided
- [utils] fix: Dont mutate original input in
decycle
util function - [utils] fix: Skip non-enumerable properties in
decycle
util function - [utils] ref: Update
wrap
method to hide internal Sentry flags - [utils] fix: Make internal Sentry flags non-enumerable in
fill
util
- [browser]: fix: Fix UnhandledPromise: [object Object]
- [core]: fix: Error in extraErrorData integration where event would not be send in case of non assignable object property.
- [hub]: feat: Support non async event processors
- [utils] fix: Decycling for objects to no produce an endless loop
- [browser] fix: event for unhandledRejection
- [loader] fix: Handle unhandledRejection the same way as it would be thrown
- [utils] fix: Don't npm ignore esm for utils
- [core] feat: Deprecate
captureEvent
, prefersendEvent
for transports.sendEvent
now takes a string (body) instead ofEvent
object. - [core] feat: Use correct buffer for requests in transports
- [core] feat: (beta) provide esm build
- [core] ref: Change way how transports are initialized
- [core] ref: Rename
RequestBuffer
toPromiseBuffer
, also introduce limit - [core] ref: Make sure that captureMessage input is a primitive
- [core] fix: Check if value is error object in extraErrorData integration
- [browser] fix: Prevent empty exception values
- [browser] fix: Permission denied to access property name
- [node] feat: Add file cache for providing pre/post context in frames
- [node] feat: New option
frameContextLines
, if set to0
we do not provide source code pre/post context, default is7
lines pre/post - [utils] fix: Use custom serializer inside
serialize
method to prevent circular references
- [node] Port memory-leak tests from raven-node
- [core] feat: ExtraErrorData integration
- [hub] ref: use safeNormalize on any data we store on Scope
- [utils] feat: Introduce safeNormalize util method to unify stored data
- [loader] Support multiple onLoad callbacks
- [core] Bump dependencies to remove flatmap-stream
- [node] HTTP(S) Proxy support
- [node] Expose lastEventId method
- [browser] Correctly detect and remove wrapped function frames
- [utils] fix: Broken tslib import - Fixes #1757
- [build] ref: Dont emit TypeScript helpers in every file separately
- [node] fix: Move stacktrace types from devDeps to deps as its exposed
- [browser] misc: Added browser examples page
- [browser] fix: Typings for npm package
- [browser] ref: Breadcrumbs will now be logged only to a max object depth of 2
- [core] feat: Filter internal Sentry errors from transports/sdk
- [core] ref: Better fingerprint handling
- [node] ref: Expose Parsers functions
- [browser]: Move
ReportingObserver
integration to "pluggable" making it an opt-in integration - [utils]: Use node internal
path
/fs
forstore.ts
- [browser]: Use
withScope
inEmber
integration instead of manualpushPop/popScope
calls - [browser] fix: rethrow errors in testing mode with
Ember
integration (#1696) - [browser/node]: Fix
LinkedErrors
integration to send exceptions in correct order and take main exception into thelimit
count - [browser/node] ref: Re-export
addGlobalEventProcessor
- [core]: Fix
InboundFilters
integration so that it reads and merge configuration from theinit
call as well
- [utils]:
bundlerSafeRequire
renamed todynamicRequire
now takes two arguments, first is should bemodule
, secondrequest
/moduleName
.
- [core]: Several internal fixes regarding integration, exports and domain.
- [core]: "De-deprecate" name of
Integration
interface. - [node]: Export
parseRequest
onHandlers
.
- [core] Invert logger logic the explicitly enable it.
- [hub] Require
domain
ingetCurrentHub
in try/catch - Fixed #1670 - [hub] Removed exposed getter on the Scope.
- [browser] fix: Make
addBreadcrumb
sync internally,beforeBreadcrumb
is now only sync - [browser] fix: Remove internal
console
guard inbeforeBreadcrumb
- [core] feat: Integrations now live on the
Client
. This means that when binding a new Client to theHub
the client itself can decide which integration should run. - [node] ref: Simplify Node global handlers code
- [browser] fix: Use our own path utils instead of node built-ins
- [node] fix: Add colon to node base protocol to follow http module
- [utils] feat: Create internal path module
- [browser] feat: Better mechanism detection in TraceKit
- [browser] fix: Change loader to use getAttribute instead of dataset
- [browser] fix: Remove trailing commas from loader for IE10/11
- [browser] ref: Include md5 lib and transcript it to TypeScript
- [browser] ref: Remove all trailing commas from integration tests cuz IE10/11
- [browser] ref: Remove default transaction from browser
- [browser] ref: Remove redundant debug.ts file from browser integrations
- [browser] test: Fix all integration tests in IE10/11 and Android browsers
- [browser] test: Run integration tests on SauceLabs
- [browser] test: Stop running raven-js saucelabs tests in favour of @sentry/browser
- [browser] test: Store breadcrumbs in the global variable in integration tests
- [browser] test: Update polyfills for integration tests
- [build] ref: Use Mocha v4 instead of v5, as it's not supporting IE10
- [core] feat: Introduce stringify and debugger options in Debug integration
- [core] feat: RewriteFrames pluggable integration
- [core] feat: getRequestheaders should handle legacy DSNs
- [core] fix: correct sampleRate behaviour
- [core] misc: Warn user when beforeSend doesnt return an event or null
- [core] ref: Check for node-env first and return more accurate global object
- [core] ref: Remove Repo interface and repos attribute from Event
- [core] ref: Rewrite RequestBuffer using Array instead of Set for IE10/11
- [hub] fix: Scope level overwrites level on the event
- [hub] fix: Correctly store and retrieve Hub from domain when one is active
- [hub] fix: Copy over user data when cloning scope
- [node] feat: Allow requestHandler to be configured
- [node] feat: Allow pick any user attributes from requestHandler
- [node] feat: Make node transactions a pluggable integration with tests
- [node] feat: Transactions handling for RequestHandler in Express/Hapi
- [node] fix: Dont wrap native modules more than once to prevent leaks
- [node] fix: Add the same protocol as dsn to base transport option
- [node] fix: Use getCurrentHub to retrieve correct hub in requestHandler
- [utils] ref: implemented includes, assign and isNaN polyfills
- [browser] fix: Fallback to Error object when rejection
reason
is not available - [browser] feat: Support Bluebird's
detail.reason
for promise rejections - [types] fix: Use correct type for event's repos attribute
- [browser] ref: Expose
ReportDialogOptions
- [browser] ref: Use better default message for ReportingObserver
- [browser] feat: Capture wrapped function arguments as extra
- [browser] ref: Unify integrations options and set proper defaults
- [browser] fix: Array.from is not available in old mobile browsers
- [browser] fix: Check for anonymous function before getting its name for mechanism
- [browser] test: Add loader + integration tests
- [core] ref: Move SDKInformation integration into core prepareEvent method
- [core] ref: Move debug initialization as the first step
- [node] fix: Make handlers types compatibile with Express
- [utils] fix: Dont break when non-string is passed to truncate
- [hub] feat: Add
run
function that makesthis
hub the current global one
- [browser] feat: Add
forceLoad
andonLoad
function to be compatible with loader API
- [browser] feat: Better dedupe integration event description
- [core] ref: Move Dedupe, FunctionString, InboundFilters and SdkInformation integrations to the core package
- [core] feat: Provide correct platform and make a place to override event internals
- [browser] feat: UserAgent integration
- [browser] fix: Dont filter captured messages when they have no stacktraces
- [browser] feat: Show dropped event url in
blacklistUrl
/whitelistUrl
debug mode - [browser] feat: Use better event description instead of
event_id
for user-facing logs - [core] ref: Create common integrations that are exposed on
@sentry/core
and reexposed throughbrowser
/node
- [core] feat: Debug integration
- [browser] ref: Port TraceKit to TypeScript and disable TraceKit's remote fetching for now
This is the release of our new SDKs, @sentry/browser
, @sentry/node
. While there are too many changes to list for
this release, we will keep a consistent changelog for upcoming new releases. raven-js
(our legacy JavaScript/Browser
SDK) and raven
(our legacy Node.js SDK) will still reside in this repo, but they will receive their own changelog.
We generally guide people to use our new SDKs from this point onward. The migration should be straightforward if you were only using the basic features of our previous SDKs.
raven-js
and raven
will both still receive bugfixes but all the new features implemented will only work in the new
SDKs. The new SDKs are completely written in TypeScript, which means all functions, classes and properties are typed.
Here are some examples of how the new SDKs work. Please note that the API for all JavaScript SDKs is the same.
Old:
Raven.config('___PUBLIC_DSN___', {
release: '1.3.0',
}).install();
New:
Sentry.init({
dsn: '___PUBLIC_DSN___',
release: '1.3.0',
});
Old:
Raven.setTagsContext({ key: 'value' });
New:
Sentry.configureScope(scope => {
scope.setTag('key', 'value');
});
Old:
try {
throwingFunction();
} catch (e) {
Raven.captureException(e, { extra: { debug: false } });
}
New:
try {
throwingFunction();
} catch (e) {
Sentry.withScope(scope => {
scope.setExtra('debug', false);
Sentry.captureException(e);
});
}
Old:
Raven.captureMessage('test', 'info', { extra: { debug: false } });
New:
Sentry.withScope(scope => {
scope.setExtra('debug', false);
Sentry.captureMessage('test', 'info');
});
Old:
Raven.captureBreadcrumb({
message: 'Item added to shopping cart',
category: 'action',
data: {
isbn: '978-1617290541',
cartSize: '3',
},
});
New:
Sentry.addBreadcrumb({
message: 'Item added to shopping cart',
category: 'action',
data: {
isbn: '978-1617290541',
cartSize: '3',
},
});