Sentry SDK v4 is no longer supported. We recommend migrating to the latest version of the SDK. You can start by
migrating from v4
of the SDK to v5
by following the migration guide.
- [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:
<unlabeled>
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',
},
});