- Disable calls to os_proc_available_memory() on Catalyst due to missing API in earlier versions. 1689
-
Removed duplicate BugsnagCorrelation.h header file that was causing warnings when building an app. 1682
-
Mac Catalyst targets now only attempt to call os_proc_available_memory() from version 13.1. 1680
- Allow setting the correlation trace ID and span ID in an event, and harmonize the API with bugsnag-android. Note: This moves BugsnagCorrelation to a private API, which might cause minor breakage. 1671
- Ensure that all Bugsnag.notifyXYZ and BugsnagClient.notifyXYZ calls strip the correct number of stack frames, regardless of compiler optimization level. 1668
- Adds basic support for visionOS with SPM projects 1660
-
Prevent inlining of Bugsnag stack trace entries that are marked to be pruned away (to promote a consistent number of those frames). 1661
-
Fix off-by-1 error when fetching register values on arm64 that could potentially run off the array. 1635
-
Fix race condition crash when calling BugsnagSessionTracker.addRuntimeVersionInfo from another thread. 1632
-
Fixed the issue causing PrivacyInfo collisions when using Cocoapods 1630
-
Free disk space is only sent on macOS, since the APIs to get it are now on the Apple grey list. 1617
-
Remove calls to stat, which is now an API on the Apple grey list. 1614
-
Add Privacy Manifest covering BugSnag data and API usage 1616
-
Remove include directives from inside of extern "C" sections because newer Xcode versions have issues with it 1608
-
Setting user fields to nil will now clear them fully. 1599
-
Crash fix: Detect and handle when WatchOS is running as an app rather than an extension. 1588
-
Removed deprecated NXArchInfo code that was causing build issues. 1584
-
Removed deprecated syscall on macos that was causing build issues. 1577
-
Check app version to avoid detecting an app upgrade as an OOM 1597
-
Device ID is now stored in a file that is shared between Bugsnag Cocoa and Bugsnag Cocoa Performance 1568
-
Addressed new warning types introduced in Xcode 14.3 1561
- Added BSGErrorTypeCSharp enum value to identify C# events passed to the SDK 1556
- Don't generate a new URLSession when copying a configuration. 1554
-
Persist events based on the original unhandled value 1549
-
Fixed a race condition in BSGRunContext 1548
-
Include event API key when serializing/deserializing to/from JSON 1547
-
Disabled breadcrumb disk storage when not required 1534
-
Improved reliability of obtaining memory metadata on iOS 13+ 1537
- Added isStarted to Bugsnag and BugsnagClient 1528
-
Fixed some race conditions that could cause issues in rare cases. 1529
-
onError blocked from running if releaseStage not in enabledReleaseStages. 1518
-
Workaround for thermal state lock re-entry bug on iOS 15.0.2-15.1.1. 1514
-
Clean up compiler warnings about data races and nullability. 1515
-
Fix memory leak in the app hang detection code. #1507
-
Truncate additional data to reduce number of oversized payloads. #1501
- Expand
configuration.attemptDeliveryOnCrash
to send Mach exceptions (e.g. Swift fatal errors and bad memory accesses) at crash time. #1496
- Add
configuration.attemptDeliveryOnCrash
to allow uncaught Objective-C exceptions to be sent at crash time, prior to app termination. Use of this feature may impair user experience and other crash reporters; please read https://docs.bugsnag.com/platforms/ios/configuration-options/#attemptdeliveryoncrash #1488
- Disable OOM detection for Mac Catalyst apps. #1489
-
Fix a crash on Mac Catalyst when user interacts with help menu. #1484 #1485
-
Fix feature flag ordering and insertion performance. #1481
-
Add
leaveNetworkRequestBreadcrumbForTask:metrics:
to simplify leaving network request breadcrumbs without overriding (swizzling)NSURLSession
methods. #1472 -
Use
objc_direct
compiler attribute to reduce binary code size. This prevents calling non-public APIs when linking Bugsnag as a dynamic framework. #1479
-
Fix a crash that could occur when reporting internal errors during
+[Bugsnag start]
. #1474 -
Fix accuracy of
isLR
andisPC
stack frame values. #1470
-
Fix a crash when using
BugsnagNetworkRequestPlugin
withGTMSessionFetcher
. #1465 -
Fix a regression introduced in 6.18.0 that caused incorrect C++ exception stacktraces to be reported when Bugsnag is linked dynamically. #1463
- Fix Swift Package Manager build error due to use of
unsafeFlags
.
-
Increase default and maximum values for
configuration.maxBreadcrumbs
to 100 and 500, respectively. #1452 -
Trim breadcrumb messages & metadata in payloads that exceed the size limit. #1451
-
Truncate breadcrumb and metadata strings that are longer than
configuration.maxStringValueLength
. #1449 -
Add
+[BugsnagStackframe stackframesWithCallStackReturnAddresses:]
to public headers. #1446
-
Fix a potential deadlock when capturing the crashing thread's name. #1453
-
Attempt to send sessions stored on disk when connection regained. #1445
-
Set
user.id
to todevice.id
for all events and sessions ifBugsnagClient.user.id
is set to nil. To prevent collection, set it to an empty string or update it inOnSendError
/OnSession
. #1442
-
Add
configuration.reportBackgroundAppHangs
to allow background app hangs to be reported. #1439 -
Add
freeMemory
,memoryLimit
andmemoryUsage
tometaData.app
. Always report the device (not app) free memory indevice.freeMemory
. #1435
-
Feature flags can now be accessed in the onSend callbacks. #1432
-
Capture
userInfo
from all NSExceptions and include theerror
metadata tab for handled exceptions. #1428 -
Feature flags are now kept in order of insertion or modification rather than in alphabetical order. #1429
-
Send usage telemetry to Bugsnag for product improvement purposes. Can be disabled using
configuration.telemetry
. #1422
-
Prevent reporting of OOMs on simulators. #1421
-
Fix a rare crash in
BugsnagBreadcrumbsWriteCrashReport()
. #1430 -
Fix intermittent empty thread stacktraces. #1425
- Capture the crashing thread's name when possible. #1406
-
Ignore OOMs that occur while the app is inactive, reverting an inadvertent change in v6.16.4. #1416
-
Fix reporting of crashes that occur while device is locked in apps using
NSFileProtectionComplete
. #1415
-
Remove
device.freeMemory
from OOM and Thermal Kill events. This indicated the app's remaining quota rather than the device's free memory, so has been removed to avoid confusion. #1408 -
Fix a crash that could occur in apps that set
com.apple.developer.default-data-protection
toNSFileProtectionComplete
. #1407
-
Add support for watchOS (>= 6.3).
Unhandled Objective-C & C++ exceptions will automatically be reported but OOMs, app hangs, thermal kills, stack overflows, memory access issues and Swift fatal errors cannot be detected due to Mach exception and signal APIs being prohibited on watchOS.
For more information see the documentation.
-
Add
configuration.telemetry
to allow sending of internal errors to be disabled. #1375
-
Fix data races detected by TSan in
BSGRunContextUpdateTimestamp
andUpdateAvailableMemory
. #1384 -
Fix potential deadlocks caused by use of
libc
printf
functions. #1397 -
Fix incorrect
device.time
in 32-bit crash reports. #1399
-
Add
device.freeMemory
to OOM and Thermal Kill events on iOS 13 and later. #1357 -
Add
device.time
to OOM and Thermal Kill events. #1355
- Change minimum supported iOS version to 9.0. #1352
-
Fix underreporting of
device.totalMemory
, which now matchesNSProcessInfo.physicalMemory
. #1335 -
Skip unnecessary file reading at startup when no unexpected app termination is detected. #1334
-
Fix duplication of
app
anddevice
data in session payloads. #1332
- Add Flutter notifier support. #1328
- Fix
-[NSProxy doesNotRecognizeSelector:]
crash when usingBugsnagNetworkRequestPlugin
in projects that use the New Relic SDK. #1324
-
Fix crash in
CPPExceptionTerminate()
ifthrow
was called without an exception. #1312 -
Fix accuracy of
app.inForeground
and prevent reporting of hangs during background launches. #1307
-
Fix incorrect OOM session info after manually pausing or stopping a session. #1301
-
Improve accuracy of
metaData.device.lowMemoryWarning
. #1296 -
Stop reporting
SIGPIPE
errors in apps that setSIG_IGN
. #1295
- Improve reliability of crash reporting when multiple crashes occur concurrently. #1286
-
Fix missing imports when building with
CLANG_ENABLE_MODULES=NO
#1284 -
Improve crash report writing performance with buffered output. #1281
- New APIs to support forthcoming feature flag and experiment functionality. For more information, please see https://docs.bugsnag.com/product/features-experiments #1279
-
Fix missing user.id in OOM events with no active session. #1274
-
Improve crash report writing performance and size on disk. #1273
-
Detect hangs during launch of UIScene based apps. #1263
-
Stop persisting changes made by
OnSendError
callbacks if delivery needs to be retried. #1262 -
Fix incorrect
device.freeDisk
in crash errors. #1256 -
Fix some potential deadlocks that could occur if a crash handler crashes. #1252
-
Fix
UIApplicationState
detection when started from a SwiftUI app'sinit()
function. This fixes false positive OOMs on iOS 15 for apps that have been prewarmed without transitioning to the foreground. #1248 -
Load configuration from the plist instead of using defaults when calling Bugsnag.start(withApiKey:) #1245
-
New APIs to allow
OnBreadcrumb
,OnSendError
andOnSession
Swift closures to be removed. The following APIs are now deprecated and will be removed in the next major release:removeOnBreadcrumb(block:)
removeOnSendError(block:)
removeOnSession(block:)
#1240
-
Include metadata in breadcrumbs for
UIWindow
/NSWindow
notifications. #1238
- Fix a crash in
-[BSGURLSessionTracingDelegate URLSession:task:didFinishCollectingMetrics:]
for tasks with no request. #1230
- Use
LC_FUNCTION_STARTS
to improve symbolication accuracy. #1214
- Fix missing
configuration.user
and manually resumedsession
info in unhandled errors. #1215
-
Disable automatic session tracking in app extensions (it was not working as intended.) #1211
-
Stop logging "[ERROR] Failed to install crash handler..." if a debugger is attached. #1210
-
Include the word "request" in network request breadcrumb messages. #1209
-
Prevent a crash that can occur when
-[BSGURLSessionTracingProxy forwardInvocation:]
calls-[NSInvocation selector]
. #1208 -
Apply
redactedKeys
to breadcrumb metadata. #1204
- Capture and report thread states (running, stopped, waiting, etc.) #1200
- Disable app hang detection for app extensions. #1198
- Bugsnag can now automatically capture breadcrumbs for network requests made via
NSURLSession
. To use this functionality, install theBugsnagNetworkRequestPlugin
plugin and then enable it in yourBugsnagConfiguration
. For more information see the documentation.
-
Stop dropping breadcrumbs when provided invalid metadata (that is not JSON convertible.) #1187
-
Fix Swift fatal error parsing for messages with no filename. #1186
- Fix a regression where the session was not captured at launch if Bugsnag was started before
willFinishLaunchingWithOptions
in iOS apps that do not adopt the UIScene life-cycle. #1180
- Events now include a
thermalState
property in thedevice
tab, and unexpected app terminations that occur when the thermal state is critical will now be reported as a "Thermal Kill" rather than Out Of Memory error. #1171
- Fatal app hangs will no longer be reported if the
willTerminateNotification
is received. #1176
- Add breadcrumbs for
UIScene
notifications. #1165
- Fix ThreadSanitizer data race in
BugsnagBreadcrumbs
. #1160
- Fix another rare crash in
bsg_ksmachgetThreadQueueName
. #1157
-
Fix ThreadSanitizer data race warning in
BSGAppHangDetector
. #1153 -
Remove (duplicated)
user
information frommetaData
. #1151
-
Fix a potential stack overflow in
+[BugsnagThread allThreadsWithCurrentThreadBacktrace:]
. #1148 -
Fix
NSNull
handling in+[BugsnagError errorFromJson:]
and+[BugsnagStackframe frameFromJson:]
. #1143 #1138 -
Fix a rare crash in
bsg_ksmachgetThreadQueueName
. #1147
-
Fix an issue that could cause C++ exceptions with very long descriptions to not be reported. #1137
-
Improve performance of adding metadata by using async file I/O. #1133
-
Improve performance of leaving breadcrumbs by using async file I/O. #1124
- Prevent some potential false positive detection of app hangs. #1122
- Improve accuracy of app hang event information to better reflect state at time of detection. #1118
-
Stop app hangs being reported if app is launched in the background. #1112
-
Stop session being reported if app is launched in the background. #1108
-
Fix KSCrash state storage for apps with no CFBundleName. #1103
-
Fix a crash in
-[BugsnagApp deserializeFromJson:]
if main Mach-O image could not be identified, and improve reliability of identification. #1097 #1101
- Remove need for
-ObjC
linker flag if linking Bugsnag as a static library. #1098
- Add a mechanism for reporting errors that occur within the notifier. #1089
-
Fix a possible deadlock when writing crash reports for uncaught Objective-C exceptions. #1082
-
Fix missing
context
for crash, OOM, and app hang errors. #1079 -
Fix
app
properties in OOMs for apps that overrideappType
,appVersion
,bundleVersion
orreleaseStage
in their config. #1078 -
event.threads
will now be empty, rather than containing a single thread, ifsendThreads
dictates that threads should not be sent. #1077
-
App hangs that occur while the app is in the background will no longer be reported. #1075
-
Add
binaryArch
andrunningOnRosetta
to theapp
metadata tab. #1073 -
Bugsnag can now be used without AppKit, allowing use in daemons and other processes running in non-UI sessions. #1072
macCatalystiOSVersion
is now reported for apps built with Mac Catalyst and iOS app running on Apple silicon. #1066
-
Fix crashes that could occur in
bsg_recordException
in low memory conditions. #1068 -
Fix a crash in
bsg_ksmachgetThreadQueueName
. #1065 -
Improve timestamp accuracy to fix breadcrumbs that are reported to occur after the error. #1062
-
Catch exceptions thrown while preparing JSON for upload rather than crashing. #1063
-
Prevent app hangs being reported if a debugger is attached. #1058
-
Enable
SUPPORTS_MACCATALYST
in main Xcode project. #1056 -
osName
andosVersion
now reflect the Mac's OS when running Mac Catalyst apps or iOS apps running on macOS. Fix reporting ofmodel
for Mac Catalyst apps or iOS apps running on macOS. #1055 -
Uncaught exceptions thrown while handing UI events in iOS apps running on macOS are now detected. #1053
- Fix unreliable ordering of breadcrumbs. #1049
- Bugsnag now detects app hangs (when the main thread is unresponsive for a period of time), alerting you of issues with your app’s responsiveness.
By default, only fatal app hangs (those that end with termination by the system watchdog or being force-quit by the user) will be reported.
This behaviour can be configured using the new
appHangThresholdMillis
configuration option. For more information see the documentation. #1039
-
Fix a heap buffer overflow reported by Address Sanitizer. #1043
-
Fix parsing of
callStackSymbols
where the image name contains spaces. #1036 -
Fix a possible deadlock when writing crash reports for unhandled errors. #1034
-
Fix
os_proc_available_memory
runtime link error on Mac Catalyst. #1025 -
Fix missing
osName
andosVersion
for errors reported from app extensions that do not link against UIKit. #1022 -
Fix incorrect
freeMemory
for errors reported vianotify()
#1021
- Bugsnag will now identify crashes that occur whilst your app is launching, allowing you to prioritize fixing high-impact launch crashes. For more information see the documentation. #1004
-
Fix inaccurate
app.duration
after multiple calls tonotify()
#1014 -
Fix a possible deadlock when writing crash reports for unhandled errors. #1013
Bugsnag.appDidCrashLastLaunch
has been deprecated in favour ofBugsnag.lastRunInfo.crashed
and will be removed in the next major release.
-
Fix possible deadlock when recording thread information for handled errors. #1011
-
Fix Swift 5.4 fatal error message parsing. #1010
-
Improve accuracy of jailbreak detection. #1000
-
Fix hang after receiving signals in some cases. 1002
-
Improve performance of thread recording for handled errors. #992
- Fix a tvOS file permission error that was introduced in 6.5.1 #996
- Fix an analyzer warning. #994
- Stop Bugsnag unregistering other signal handlers when catching a mach exception. #976
- Fix compiler warnings when importing Bugsnag from Objective-C sources that do not use ARC. #985
- Fix a rare crash that could occur in the event of JSON parsing failures. #987
- The NSError's
userInfo
property is now included in reports. #974
-
Fix a regression where OOM events were missing session information. #963
-
Make
maxPersistedEvents
andmaxPersistedSessions
comply with the specification, with defaults of 32 and 128 respectively. #966
-
Errors may now be discarded based on their
errorClass
using the newdiscardClasses
configuration option. #938 -
The maxiumum number of persisted errors / events may now be configured using the new
maxPersistedEvents
configuration option. #936 -
The maxiumum number of persisted sessions may now be configured using the new
maxPersistedSessions
configuration option. #943 -
Bugsnag log messages are now prefixed with
[Bugsnag]
for easier searching & filtering. #955
- Fix reliability of Swift fatal error message reporting. #948
- Place "unhandledOverridden" inside "severityReason" instead of at the top level. 937
- Fix unexpected exception behavior when started without an API key. #931
-
Out Of Memory errors now include more information, including custom metadata and user information. #915 #908
-
Bugsnag can now be used without UIKit, reducing memory usage in app extensions. #919
-
Fixed incorrect app version reported when sending crash reports from older versions of Bugsnag (before 6.2.3) #911
-
Fixed a rare crash in -[BugsnagClient computeDidCrashLastLaunch] #917
-
Error and session deliveries that fail with an HTTP error status code will now be retried if appropriate. #895
-
Fixed a rare crash in BugsnagClient's network connectivity observer block. #904
-
Fixed a rare crash due to a race condition in BugsnagSystemState. #893 #866
-
Out Of Memory errors are no longer reported if a device reboot was detected. #822 #545
- The
onCrashHandler
is no longer called in the event of an OOM. #874
-
Use os_proc_available_memory() to get free memory, if available. #851
-
Reduced the CPU and memory impact of leaving breadcrumbs. #853 #863
-
Fix for incorrect version info during edge case where version info is not manually set, and app version is changed between crashing and reporting the error. #862
-
Catch and report unexpected exceptions when (de)serializing JSON data rather than crashing. #856
-
Support "foreground" duration in MacOS as well. #848
-
Timestamp accuracy in reports has been increased from seconds to milliseconds. #847
-
Calculation of "foreground" duration now also includes time in UIApplicationStateActive and UIApplicationStateInactive states in order to match Apple's definition of "foreground". #839
-
Changed synchronization method when responding to dynamic library image events to a dispatch queue, which is a more bulletproof and battle-hardened approach. #837
-
Fixed a deadlock which can occur when calling
notify
#833
-
An invalid or missing API key now causes an NSException to be thrown upon calling [Bugsnag start]. This check used to occur during configuration, and only for malformed API keys. #828
-
Exception Mach code and subcode are now written to the crash report as stringified hex values instead of integers to avoid potential data loss from JSON readers that lose the lower bits from unsigned 64-bit numbers. #827
-
Improved out-of-memory event detection by disabling reporting when a debugger is attached. OOM reporting is now enabled by default in debug builds. #820
-
Re-enabled the
Require Only App-Extension-Safe API
build setting #823 -
Fix reporting of events with more than one error #821
- Fix crash-on-launch (attempt to insert into immutable dictionary). #819
-
Add
+[Bugsnag breadcrumbs]
to allow apps to fetch the list of breadcrumbs. #813 -
Disable JSON pretty-printing in KSCrash reports to save disk space and bandwidth. #802
-
Fix reporting of Mach exception code and subcode. #806
-
Create date formatters at init time to avoid potential race conditions. #807
-
Refactor OOM handler to be less suceptible to data loss on crash. #804
-
Copy the metadata observer list rather than mutating it directly. #796
-
Reorganized the project file #793
-
Removed some magic values and used the const string references instead. #792
-
Added BSGJSONSerializer, which ensures no exceptions get thrown (NSErrors get returned instead) #791
-
Guard against non-string metadata map keys #790
-
Quiet some Analyzer false positives #789
-
Avoid crash reporting OOMs if nil provided as codeBundleId #784
-
Persist user when set on client #770
-
Avoid sharing global crash context when recording thread information for handled errors #766
-
Respect bundle version set from config #762
-
(React Native) Call react native observer with initial user/context values #768
-
(React Native) Populate app/device metadata fields for RN errors #763
-
Ensure foreground stats are recorded for handled errors #755
-
Synchronize access to sessions being delivered in de-duplication code #756
-
Removed non-thread safe date formatter #758
-
Improve thread-safety of breadcrumb count #743
-
Fix JSON serialisation of strings with control characters #739
-
Disable reporting of notable addresses from registers for handled errors #741
- Add support for Swift Package Manager #729
-
Move binary images store declaration from header file #725
-
Make stacktrace properties for error/thread readwrite #722
-
Fix incorrect string comparison of thread names in Mach exception handling #721
-
Address unterminated string in thread gathering logic #720
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.
-
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 globalBugsnagConfiguration
value but can be overridden in event passed to theBugsnag.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 both
Bugsnag
andKSCrash
portions, now the BugsnagBSG_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 on
BugsnagConfiguration
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
- Fix DYLD lock mechanism preventing compilation on iOS <10. #675
- Fixed an issue where an app could deadlock during a crash if unfavourable timing caused DYLD lock contention. #580
-
Fix possible report corruption when using
notify()
from multiple threads when configured to skip capturing/reporting background thread contents (generally only Unity games). #442 -
Added several additional event fields (
codeBundleId
,osName
,modelNumber
,locale
) that were missing from the OOM reports. #444 -
Bugsnag now correctly records a new session if it is returning to the foreground after more than 60 seconds in the background. #529
-
Increased the detail in handled event breadcrumbs #493
-
NSWorkspaceScreenSleep/Wake notifications now use the correct notification center. #525
-
Device Charging status was being incorrectly reported as a number rather than a boolean. Device charging status is represented as a four-valued enum. If the device is plugged in it reports as charging, even if it is at 100%. Any other values are reported as not charging. #551
This release removes support for reporting 'partial' or 'minimal' crash reports where the crash report could not be entirely written (due to disk space or other issues like the device battery dying). While sometimes the reports could point in the right direction for debugging, they could also be confusing or not enough information to pursue and close the issue successfully.
This release also renames a few configuration properties to align better with the intended use and other Bugsnag libraries, so people who use more than one platform can easily find related functionality in a different library. The old names are deprecated but still supported until the next major release. #435
Bugsnag.setBreadcrumbCapacity()
is nowsetMaxBreadcrumbs()
on theBugsnagConfiguration
class. In addition, the default number of breadcrumbs saved has been raised to 25 and limited to no more than 100.BugsnagConfiguration.autoNotify
is now namedBugsnagConfiguration.autoDetectErrors
BugsnagConfiguration.autoCaptureSessions
is now namedBugsnagConfiguration.autoDetectSessions
- Fix unrecognized selector crash when adding metadata #430
-
Fix a packaging issue when using Carthage, introduced in 5.22.7. Note: There is a remaining known issue when updating/building the bugsnag-cocoa dependency with Carthage, the project will build three times before completing successfully. This issue will be resolved in a subsequent patch release. #423
-
Deprecate
config.reportBackgroundOOMs
property - designating any app termination as a possible error condition can cause a lot of false positives, especially since the app can die for many genuine reasons, especially when running only in the background. #425
- Fix use-after-free in
notify()
logic which could lead to a deadlock #420 - Reduce severity of log message about thread status from 'error' to 'debug' as it does not necessarily indicate a problem and is only used for debugging. #421
- Show correct value for
app.inForeground
when an app launches and crashes in the background without ever coming to the foreground. #415 - Fix improperly retained properties which could result in a crash due to premature deallocation #416
- Support disabling crash reporting after initialization by setting
Bugsnag.configuration.autoNotify
. Previously this value was ignored afterBugsnag.start()
was called, but is now used to update whether crash reports will be detected and sent. This interface can be used for crash reporting opt-out flows. #410
- Ensure UIKit APIs are not called from background threads if
Bugsnag.start()
is called in the background #409 - Fix bug in
notifyReleaseStages
where if the release stage of a build was changed afterstart()
, only the initial value was used to determine whether to send a report #405 #412
- Fix possible crash or deadlock arising from calling Bugsnag.notify() from multiple queues concurrently. #401
- Support adding pre-delivery metadata to out-of-memory reports #393
- Fix erroneously reporting out-of-memory events from iOS app extensions #394
- Fix erroneously reporting out-of-memory events when an iOS app is in the foreground but inactive #394
- Fix erroneously reporting out-of-memory events when the app terminates normally and is issued a "will terminate" notification, but is terminated prior to the out-of-memory watchdog processing the notification #394
- Fix memory leak in notify() Carolina Aguilar #395
This release disables reporting out-of-memory events in debug mode, to reduce false positives.
- Fix incrementing unhandled counts when using internal notify() API. This resolves discrepancies in stability scores for users of bugsnag-react-native after receiving unhandled JavaScript events.
- Fix JSON parsing errors in crash reports for control characters and some other sequences
- Fix trimming the stacktraces of handled error/exceptions using the
depth
property. Paul Zabelin #363 - Fix crash report parsing logic around arrays of numbers. Metadata which included arrays of numbers could previously had missing values. #365
-
Report correct app version in out-of-memory reports. Previously the bundle version was reported as the version number rather than the short version string. #349
-
Fix missing stacktraces in reports generated from
notify()
#348
This release disables background out-of-memory termination reporting by default, as it may be confusing that foreground and background grouped together and are not necessarily at the same level of importance during triage.
- Add configuration option (
reportOOMs
) to disable out-of-memory (OOM) event reporting, defaulting to enabled. #345 - Disable background OOM reporting by default. It can be enabled using
reportBackgroundOOMs
. #345
- Migrate version information to device.runtimeVersions #340
- Add internal api for mutating session payload before sending #341
- Persist breadcrumbs on disk to allow reading upon next boot in the event of an uncatchable app termination.
- Add
+[Bugsnag appDidCrashLastLaunch]
as a helper to determine if the previous launch of the app ended in a crash or otherwise unexpected termination. - Report unexpected app terminations on iOS as likely out of memory events where the operating system killed the app
-
Fix generating an incorrect stacktrace used when logging an exception to Bugsnag from a location other than the original call site (for example, from a logging function or across threads). If an exception was raised/thrown, then the resulting Bugsnag report from
notify()
will now use theNSException
instance's call stack addresses to construct the stacktrace, ignoring depth. This fixes an issue in macOS exception reporting wherereportException
is reporting the handler code stacktrace rather than the reported exception stack. #334 -
Fix network connectivity monitor by connecting to the correct domain Jacky Wijaya #332
Note for Carthage users: this release updates the Xcode configuration to the settings recommended by Xcode 10.
- Update workspace to recommended settings suggested by XCode 10 #324
- Add stopSession() and resumeSession() to Bugsnag #325
- Capture basic report diagnostics in the file path in case of crash report content corruption #327
-
Fix case where notify() causes an unhandled report #322
-
Fix possible crash when fetching system info to append to a crash report #321
- Add Device time of report capture to JSON payload #315
-
Fix stack trace resolution on iPhone XS sometimes reporting incorrect addresses #319
-
Add
fatalError
and other assertion failure messages in reports for Swift 4.2 apps. Note that this only includes messages which are 16 characters or longer. See the linked pull request for more information. #320
- Capture trace of error reporting thread and identify with boolean flag #303
- Prevent potential crash in session delivery during app teardown #308
-
Ensure NSException is captured when handler is overridden #313
-
Fix mach handler declaration and imports. This resolves an issue where signal codes were less specific than is possible. #314
-
Only call previously installed C++ termination handler if non-null. Fixes an unexpected termination if you override the handler with null before initializing Bugsnag and then throw a C++ exception and would like the app to continue after Bugsnag completes exception reporting.
- Deregister notification observers and listeners before application termination #301
-
Fix a regression in session tracking where app version was set to nil #296
-
Fix a regression in session tracking which caused the first session HTTP request to be delivered on the calling thread when automatic session tracking is enabled #295
- Respect appVersion override when serialising KSCrash report #292
This release alters the behaviour of the notifier to track sessions automatically. A session will be automatically captured on each app launch and sent to https://sessions.bugsnag.com.
If you use Bugsnag On-Premise, it is now also recommended that you set your notify and session endpoints via config.setEndpoints(notify:sessions:)
. The previous properties used to configure this, config.notifyURL
and config.sessionURL
, are now readonly
and therefore no longer assignable.
- Enable automatic session tracking by default #286
- Handle potential nil content value in RegisterErrorData class #289
- Ensure device data is attached to minimal reports #279
- Enforce requiring API key to initialise notifier #280
-
Changes report generation so that when a minimal or incomplete crash is recorded, essential app/device information is included in the report on the next application launch. #239 #250
-
Ensure timezone is serialised in report payload. #248 Jamie Lynch
This release adds additional device metadata for filtering by whether an error occurred in a simulator (#242) and by processor word size (#228).
- Ensure error class and message are persisted when thread tracing is disabled #245 Jamie Lynch
- Re-addapp name to the app tab of reports #244 Jamie Lynch
- Add payload version to report body to preserve backwards compatibility with older versions of the error reporting API #241 Jamie Lynch
- Remove chatty logging from session tracking #231 Jamie Lynch
- Re-add API key to payload body to preserve backwards compatibility with older versions of the error reporting API #232 Jamie Lynch
- Fix crash in iPhone X Simulator when reporting user exceptions #234 Paul Zabelin
- Improve capture of Swift assertion error messages on arm64 devices, inserting
the assertion type into the report's
errorClass
#235
- Fix default user/device ID generation on iOS and tvOS devices
- Fix mach exception detection
- Misc Session Tracking fixes and enhancements
-
- Adds support for tracking sessions and overall crash rate by setting
config.shouldAutoCaptureSessions
totrue
. In addition, sessions can be indicated manually using[Bugsnag startSession]
#222
- Adds support for tracking sessions and overall crash rate by setting
- Fix encoding of control characters in crash reports. Ensures crash reports are written correctly and delivered when containing U+0000 - U+001F #214 Jamie Lynch
- Use
BSG_KSCrashReportWriter
header rather thanKSCrashReportWriter
for custom JSON serialization
- Remove misleading information (address, mach, signal) from non-fatal error reports
- Fix buffer overflow for reports with large metadata
- Treat warnings as errors
- Fix build on older versions of XCode
- Fix thread safety issue in breadcrumbs API
- Allow setting device ID in report to null
- When notifying of NSError, use the code and domain as the default context
- Fix for wrong report context in some unhandled errors
- Additional method prefixing
- Prevent possible memory leak in connectivity check
- Update podspec iOS version to 8.0
- Updated example apps to Swift 4
- Report error message for Swift's
fatalError
,preconditionFailure
,assertionFailure
, andassert
.
- Fix duplicate symbols in KSCrash when Sentry library included in project
- Fix fatalError not producing crash report
- Update library's calculation of stack frame depth
- Reduced build warning count
- Track difference between handled and unhandled exceptions #164 Jamie Lynch
- Fixed wrong tag in Cocoapods spec
- Fixed issue with header file visibility
- Update example apps to use Swift 3 syntax
- Discard duplicate automatic breadcrumbs recording orientation changes
- Map NSNotification keys in breadcrumbs into more human-readable strings
- Attempt to send reports stored on disk when connection regained
- Forked KSCrash library
- Improve performance in Bugsnag.notifyError Eric Denman
- Fix warning generated by checking for existence of a property guaranteed when deployment target is iOS 8.0+ Scott Berrevoets #147
- Sanitize attached metadata to remove objects which cannot be serialized as JSON directly, logging during removal
- Make breadcrumb functionality available for background operations
- Lower effective deployment targets from iOS 8 and OS X 10.10 to iOS6 and OS X 10.8
- Adds methods to
BugsnagCrashReport
for appending metadata, simplifying making the most common changes from a callback block #145
- Fix linking failure when using Bugsnag with Carthage on tvOS #139
This release downgrades the dependent KSCrash version to 1.8.13, reverting the
change to the signature of KSCrashReportWriter.addJSONElement()
in 5.7.0. This
change only affects users setting a custom onCrash
handler to be executed at
crash time.
- Increases the number of crash reports stored on disk before cycling
- Make logging configurable by setting
BSG_LOG_LEVEL
. Default isBSG_LOGLEVEL_INFO
, and available values includeWARN
andERR
variants.
- Fixes deadlock which can occur when repeatedly calling
notify
#143 - Fixes periodic issue where no report is captured at all
- Fixes issue where a report written at crash time cannot be deserialized from disk at send time.
This release updates the dependent KSCrash version to 1.11.2, which changes the
signature of KSCrashReportWriter.addJSONElement()
to include whether to close
the JSON container.
- Add support for customizing the
NSURLSession
used when sending error reports to Bugsnag #127
- Fix assignment of
beforeSendBlocks
to incorrect property name Spike Brehm #125
- Expose
app
,appState
,device
,deviceState
, anderror
to crash report callback blocks
- Fix
autoNotify
: Disabling unhandled exception capturing only sends user-reported exceptions viaBugsnag.notify()
- Update imports to be compatible with KSCrash 1.8.8+
- Lock KSCrash dependency to 1.8.13 to reduce instability
- Include thread type in payload to match new payload specification
- Add support for attaching a custom stacktrace to an error report
- Upgrade required version of KSCrash
- Add "Require Only App-Extension-Safe API" flag for iOS App Extension support
- Send requests via NSURLSession by default
- Fix a condition where bug reports would be sent multiple times
- Fix breadcrumb type for table events
- Add error message and severity to error breadcrumbs
- Make breadcrumbs accessible from background queues
-
Add support for automated breadcrumb collection for common events and the new breadcrumbs API #112
-
Add support for Apple TV #113
-
Add ability to customize error reports via
notify:block
#110 -
Add support for sending reports for
NSError
instances vianotifyError:
andnotifyError:block:
#110 -
Add crash time to the "Device" tab of error reports #110
- Fix intermittent crashes via NSZombie detection being enabled by default #111 KSCrash#160
Add Carthage support
- Catch JSON (de)serialization exceptions thrown from
NSJSONSerialization
- Add nullability annotations
- Remove logging when no reports were sent
- Fix build failure when building with frameworks #101
- Add support for iOS Application Extensions #100
- Fix typo in updated payload date format. Should instead use RFC 3339 format
- Fix header issue when linking to Bugsnag via CocoaPods from within another pod
#98
#99
- Related to: CocoaPods#4420
This release includes an upgrade to KSCrash 1.0.0, as well support for running alongside other KSCrash-dependent libraries. Crash handling for heap corruption and link register overwriting has also been improved.
NOTE: The minimum supported iOS and OS X versions have been updated to 6.0 and 10.8 respectively.
-
Fix for occasional crash when logging from a failed network request #67
-
Fix conflict when used alongside other KSCrash-dependent libraries #41 #52 #72 #91 #94
-
Fix for failed crash reports being deleted instead of resent #76
-
Bitcode support #78
-
Include severity in uncaught exception reports #86
-
Add pre- and post-crash hooks, for modifying or rejecting crash reports #17 #47 #34 #88
- Breadcrumbs support.
- Send notifications with current configuration rather than that in the report.
- Protect against nil named exceptions
- Reduce deployment target to 4.3
- Catch less crashes on OSX
- Fix compilation on arm64 under Unity
- Uncaught exceptions in OSX are now marked as warnings
- Fix buffer over-read in JSON parser
- Build OSX framework as part of release
- In dealloc remove notifier from notifications
- Make metaData access thread-safe
- Fix warning while compiling KSCrash on OS X
- Rewrite to use KSCrash as a solid foundation
- Add [Bugsnag notify:withMetaData:atSeverity:] to public API
- Prepare 'severity' feature for release
- Package BugsnagReachability in package for reliability
- Disable dsym uploading on iphonesimulator builds
- Send better diagnostics with a better format
- Remove Pods from repo.
- Fix XCode5 Warnings.
- Publicise the notifier method.
- Complete rewrite to support symbolication.
- Support iOS and OSX.