Bugsnag v6.0.0 Release Notes
Release Date: 2020-06-22 // almost 4 years ago-
This version contains many breaking changes. It is part of an effort to unify our notifier
๐ libraries across platforms, making the user interface more consistent, and implementations better
on multi-layered environments where multiple Bugsnag libraries need to work together
(such as React Native).โฌ๏ธ Please see the upgrade guide for details of all the changes and instructions on
โฌ๏ธ how to upgrade.โจ Enhancements
๐ Allow starting Bugsnag from PList
#676The comparison of redacted keys is now case-insensitive
#653Unified the three main XCode projects
#6330๏ธโฃ Alter default session background timeout to 30s
#581๐ Support loading configuration from values in
Info.plist
.
#582โ Add
unhandledRejections
toBugsnagErrorTypes
#567๐ Rename
Bugsnag
start methods
#566๐ Rename
OnSend
toOnSendError
#562โ Add
onCrashHandler
data toBugsnagEvent
metadata
#564๐ Rename
BugsnagUser
properties
#560๐ Make
BugsnagOnErrorBlock
returnBOOL
rather thanvoid
#555๐ Make
BugsnagPlugin
takeBugsnagClient
as param
#558๐ Make user editable on
BugsnagEvent
#557โ Add getter for
Bugsnag.context
#554๐ Make
BugsnagUser
properties readonly
#556โ Add
sendThreads
property toBugsnagConfiguration
#549Hide additional methods from public API
#552๐ง Move
codeBundleId
from configuration to non-public client property
#548โ Add structured app/device fields to
BugsnagSession
#546โ Add
redactedKeys
for removing sensitive values from metadata
#540๐ง Move endpoint configuration to class
#542๐ Make all callbacks return boolean values
#534โ Add
originalError
property toBugsnagEvent
#541โ Remove
attachCustomStacktrace
from public API
#547Create structured
BugsnagError
class
#533Create structured
BugsnagThread
class
#532Convert
event.device
fromNSDictionary
to a structured class
#526Create structured
BugsnagStackframe
class
#528Convert
event.app
fromNSDictionary
to a structured class
#520
#600๐ Make
BugsnagClient
a public interface
#517โ Remove unused APIs from
Bugsnag
interface
#514Enforce that
config.maxBreadcrumbs
must be between 0-100
#511โ Add unhandled property to
BugsnagEvent
#512๐ Rename
notifyReleaseStages
toenabledReleaseStages
#509โ Remove unused APIs from
BugsnagSession
interface
#506๐ Rename setUser/user interface on
Bugsnag
andBugsnagConfiguration
#505๐ Rename
config.notifierType
toconfig.appType
#504โ Remove unused APIs on
BugsnagEvent
interface
#498๐ Allow addition/removal of
OnBreadcrumb
callbacks
#508โ Remove unused APIs from
BugsnagMetadata
interface
#501โ Remove unused APIs from
BugsnagConfiguration
interface
#496โ Remove unused APIs from
BugsnagBreadcrumb
interface
#502โ Remove notify method variants from public api on
Bugsnag
#497โ Remove
leaveBreadcrumbWithBlock
from public api onBugsnag
#491BugsnagNotifier
is nowBugsnagClient
#480โ Remove
setSuspendThreadsForUserReported
,setReportWhenDebuggerIsAttached
,setThreadTracingEnabled
,setWriteBinaryImagesForUserReported
from public API.
#468๐ Fixes typo in
BSG_KSCDeleteOnSuccess
enumeration
#317โ Add a breadcrumb when Bugsnag first starts with the message "Bugsnag loaded"
#445๐
BugsnagMetaData
is nowBugsnagMetadata
, including the configuration and event fields
#450BugsnagCrashReport
is nowBugsnagEvent
#449โ Add a configuration option to filter breadcrumbs by type. Use
config.enabledBreadcrumbTypes
to enable or disable particular types of
breadcrumbs from being captured.
#476โ Added a designated initializer to
BugsnagConfiguration
and removed functionality
0๏ธโฃ from the default convenienceinit()
to ensure thatapiKey
has a value set. TheapiKey
must now be a correctly formatted one to be accepted.- Swift:
BugsnagConfiguration(_ apiKey)
- Objective C:
[[BugsnagConfiguration alloc] initWithApiKey:]
๐ Support editing breadcrumbs within an Event as objects. Breadcrumbs can now be
inspected and modified from callbacks, for example:Bugsnag.notifyError(error) { event in event.breadcrumbs?.forEach({ crumb inif crumb.message == "something specific" { crumb.message = "[redacted]" } }) }
๐
Bugsnag.addAttribute:value:tab:
is nowBugsnag.addMetadataToSection:key:value:
#454๐
[Bugsnag clearTab:]
is now[Bugsnag clearMetadataInSection:]
๐ (Swift:Bugsnag.clearMetadata(section:)
)
#457๐ง Renamed callback functions in the Configuration class:
beforeSendBlocks
is nowonSendBlocks
(add usingconfig.add(onSend: { ... })
)
-
beforeSendSessionBlocks
is nowonSessionBlocks
(add usingconfig.add(onSession: { ... })
)โ Added
[Bugsnag clearMetadataInSection:withKey:]
๐ (Swift:Bugsnag.clearMetadata(section:key:)
)
#462โ Added
Bugsnag.getMetadata(_ section)
. The behaviour is: calling with a valid section
๐ name will return the metadata for that section if it exists, ornil
if it does not exist. Other,
similar functionality (e.g.BugsnagConfiguration.getTab()
has been renamed and
had usage aligned with this change.
#459โ Added
Bugsnag.getMetadata(_ section: key:)
#463โ Add a per-Event
apiKey
property. This defaults to the global
BugsnagConfiguration
value but can be overridden in event passed to the
Bugsnag.notify()
callback.
#458โ Added
Bugsnag.context
, replicating theBugsnagConfiguration
property. This is
mutable and may be changed at any point. Changes are propagated to theBugsnagConfiguration
property.
#466Bugsnag.stopSession()
is nowBugsnag.pauseSession()
. This renaming has
also been applied to theBugsnagNotifier
andBugsnagSessionTracker
classes.
#464โ Add a breadcrumb when network connectivity changes
#448Breadcrumbs now take a
message
parameter that can now be arbitrarily long. This simplifies breadcrumb
creation usingBugsnag.leaveBreadcrumb(string)
so that the value is
prominently displayed and is not truncated.
#433โ Add metadata accessor methods to
BugsnagEvent
#465โ Added a user-configurable
enabledErrorTypes
property toBugsnagConfiguration
.
TheBugsnagErrorTypes
property allows users to choose which types of events are reported. If automatic crash detection
is disabled this value is ignored. User-generatednotify()
events are reported in all cases.
#477
#561๐ฒ Internal logging has been unified. Where before two preprocessor macros were
๐ง required to configure bothBugsnag
andKSCrash
portions, now the Bugsnag
๐ฒBSG_LOG_LEVEL
macro is sufficient to configure both. This should be set on the
๐ Bugsnag framework build target. Further configuration instructions can be found in
theBugsnagLogger.h
header.
#472โ Added a method to allow merging supplied and existing Event metadata.
๐BugsnagMetadata.addMetadataToSection:values:
allows Event
๐ callbacks to modify Event metadata en-mass. Supplied metadata should
๐ be a JSON-serializable dictionary. The resulting Event metadata is the
๐ result of applying the following rules to the existing metadata for each supplied
value:- Non-null values replace any existing key/value pair.
- Null values remove a key/value pair.
- Invalid values are logged and ignored.
#470
โ Remove
Bugsnag.configuration()?
. All access to the configuration object
should be performed prior to callingBugsnag.start()
.0๏ธโฃ User information is now persisted between application runs by default. When set a users'
0๏ธโฃ email, id and name are set onBugsnagConfiguration
they are stored in the User Defaults and
๐ restored if an application is restarted. The values are also copied to the configuration metadata.
#469
#590โ Added callback-free method to leave breadcrumbs:
[Bugsnag leaveBreadcrumbWithMessage:metadata:andType]
๐ (Swift:Bugsnag.leaveBreadcrumb(_, metadata:, type:)
)
#482โ Added
removeOnSessionBlock()
methods to bothBugsnag
andBugsnagConfiguration
to allow removal
of callbacks run when a session starts.
#483โ Added
addOnSendBlock:
,removeOnSendBlock:
toBugsnagConfiguration
.
#485
#485โจ Enhanced device orientation change breadcrumbs. These are now reported with "from" and "to" values
in a form consistent with the Android notifier.
#486๐ The metadata interface is now consistent across the
Bugsnag
,BugsnagMetadata
,BugsnagConfig
,BugsnagClient
andBugsnagEvent
classes.
#513๐ง
BugsnagClient
now takes a shallow copy of the configuration passed in on initialisation.
#5240๏ธโฃ The
bundleVersion
property is available onBugsnagConfiguration
allowing overriding the default plist value.
#550๐ฐ Deliver each event in a separate request to avoid exceeding payload size limit
#424 - Swift: