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
#676 -
The comparison of redacted keys is now case-insensitive
#653 -
Unified the three main XCode projects
#633 -
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
#549 -
Hide 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
#547 -
Create structured
BugsnagError
class
#533 -
Create structured
BugsnagThread
class
#532 -
Convert
event.device
fromNSDictionary
to a structured class
#526 -
Create structured
BugsnagStackframe
class
#528 -
Convert
event.app
fromNSDictionary
to a structured class
#520
#600 -
Make
BugsnagClient
a public interface
#517 -
Remove unused APIs from
Bugsnag
interface
#514 -
Enforce 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
#491 -
BugsnagNotifier
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
#450 -
BugsnagCrashReport
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
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:]
- Swift:
-
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 in if 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.
#466 -
Bugsnag.stopSession()
is nowBugsnag.pauseSession()
. This renaming has
also been applied to theBugsnagNotifier
andBugsnagSessionTracker
classes.
#464 -
Add a breadcrumb when network connectivity changes
#448 -
Breadcrumbs 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()
. -
User information is now persisted between application runs by default. When set a users'
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.
#524 -
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