Conversation
…and the native commit fields New "BugSplat Native (9.0)" group under Integrations: overview, Windows (verified), macOS, Linux, Android, iOS/tvOS (each with a status line), hang detection, structured reports, user feedback, crash data format, migration from bugsplat-windows 8.x / bugsplat-apple 2.x / bugsplat-android 1.x. Pointers from the Welcome page, the integrations indexes, the existing platform guides and Downloads. Crash Post Endpoints documents infoUrl timing and the fields the native SDKs send (environment, crashSignature, crashHash, reportKind annotation); User Feedback points at the SDK APIs; the support-response FAQ no longer says other platforms are coming soon. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HHo6UdKBQXDABUhRgHWdW2
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved documentation inaccuracies affect platform behavior, report types, retry semantics, and setup guidance.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Adds BugSplat Native 9.0 documentation, platform guides, migration guidance, reporting references, and navigation updates.
Changes:
- Adds Windows, macOS, Linux, Android, and iOS/tvOS guides.
- Documents reporting, feedback, hang detection, crash storage, and migration.
- Updates integration links, downloads, endpoint references, and support messaging.
File summaries
| File | Description |
|---|---|
SUMMARY.md |
Adds Native documentation navigation. |
README.md |
Links the Native integration group. |
introduction/getting-started/integrations/README.md |
Highlights Native 9.0. |
introduction/getting-started/integrations/native/windows.md |
Adds the Windows integration guide. |
introduction/getting-started/integrations/native/user-feedback.md |
Documents Native feedback APIs. |
introduction/getting-started/integrations/native/structured-reports.md |
Documents structured reports. |
introduction/getting-started/integrations/native/README.md |
Adds the Native overview and platform table. |
introduction/getting-started/integrations/native/migration.md |
Documents migration from legacy SDKs. |
introduction/getting-started/integrations/native/macos.md |
Adds the macOS guide. |
introduction/getting-started/integrations/native/linux.md |
Adds the Linux guide. |
introduction/getting-started/integrations/native/ios.md |
Adds the iOS/tvOS guide. |
introduction/getting-started/integrations/native/hang-detection.md |
Documents hang detection. |
introduction/getting-started/integrations/native/crash-data-format.md |
Documents local report storage and retries. |
introduction/getting-started/integrations/native/android.md |
Adds the Android guide. |
introduction/getting-started/integrations/mobile/README.md |
Adds Native mobile guidance. |
introduction/getting-started/integrations/mobile/ios.md |
Links the Native iOS guide. |
introduction/getting-started/integrations/mobile/android.md |
Links the Native Android guide. |
introduction/getting-started/integrations/downloads.md |
Adds Native downloads. |
introduction/getting-started/integrations/desktop/README.md |
Adds Native desktop guidance. |
introduction/getting-started/integrations/desktop/macos.md |
Adds a Native macOS pointer. |
introduction/getting-started/integrations/desktop/linux.md |
Adds a Native Linux pointer. |
introduction/getting-started/integrations/desktop/cplusplus/README.md |
Adds migration guidance. |
introduction/development/web-services/user-feedback.md |
Adds SDK feedback guidance. |
introduction/development/web-services/crash.md |
Documents Native crash endpoint fields. |
education/faq/localized-support-responses-for-windows-c++-.net-and-macos.md |
Updates platform support messaging. |
Review details
Suppressed comments (12)
introduction/development/web-services/crash.md:137
- The new row says every Crashpad platform uses
crashTypeId=5, but this documentation also defines structured reports (21), user feedback (36), and platform-specific ANR handling. Qualify this statement to native Crashpad minidumps so callers do not commit the wrong type for those report kinds.
| `environment` | The OS and hardware the app ran on, detected by the SDK and overridable (`Windows 11 10.0.26200 x64`, `Android 14 (API 34) arm64-v8a; Google Pixel 8`). Stored on the crash and shown on the crash page; every Crashpad platform posts with `crashTypeId=5`, so this is how platforms are told apart. Up to 255 characters. |
introduction/getting-started/integrations/desktop/cplusplus/README.md:8
- The 8.x runtime inventory on this page includes
BugSplatRc.dll, while the migration guide says that file is gone in 9.0. Describing the successor as keeping the same runtime file names is therefore inaccurate and can cause an incorrect installer migration.
This is the 8.x SDK. Its successor, [BugSplat Native 9.0](../../native/windows.md), keeps the same concepts and runtime file names on a cross-platform, out-of-process core; see [Migrating to 9.0](../../native/migration.md). 8.x keeps working and receives critical fixes.
introduction/getting-started/integrations/native/README.md:22
BugSplatMonitoris not present on iOS/tvOS, and Android packageslibBugSplatMonitor.sorather than this executable. The table is introduced for desktop helpers, so this trailing claim should be limited to desktop platforms.
| `BugSplatMonitor` | Watches your process from outside. When it crashes, writes the dump (normal, heap or full), computes the crash signature, copies your attachments, and hands the report to the reporter. Same name on every platform. |
introduction/getting-started/integrations/native/android.md:4
- The page description calls Android capture out of process, while the body says the monitor runs from the crashing process. Please keep the description consistent with the actual at-crash model so search results do not promise process isolation that Android cannot provide.
BugSplat Native 9.0 on Android: at-crash out-of-process capture with
libBugSplatMonitor.so, an in-app prompt on next launch, ANR import, Kotlin API.
introduction/getting-started/integrations/native/android.md:40
- This promises a full dump for Android hangs, while the next bullet says heap and full memory dumps are unavailable on Android. Use the supported minidump terminology or explain the distinction so the guide does not promise an unavailable dump type.
* **Hang detection** pings the main `Looper`; a message that is not processed within the timeout is a hang (the ANR the OS would eventually report, caught earlier and with a full dump).
introduction/getting-started/integrations/native/crash-data-format.md:65
- The retry policy classifies every rate-limit response as a permanent 4xx and deletes the report, but the endpoint documentation explicitly exposes HTTP 429 as
Too Many Requests. Treating a transient throttle as terminal can discard crash data; keep rate-limited reports for a later retry instead.
Retry policy: an upload that succeeded, a permanent refusal (size limit, rate limit, 4xx) or three failed attempts delete the folder; a server error (500, 502, 503, 504) keeps it for the next launch.
introduction/getting-started/integrations/native/crash-data-format.md:44
- The new Native store example uses
crashTypeId: "1", but the Native endpoint section below says Crashpad reports usecrashTypeId=5, and the migration guide also describes Native Apple reports as type 5. As written, readers can copy a legacy Windows.Native ID into a 9.0 report; change the example to the Native Crashpad ID or explicitly label it as legacy.
"database": "fred", "appName": "MyApp", "appVersion": "1.0.0", "crashTypeId": "1",
introduction/getting-started/integrations/native/crash-data-format.md:65
- This says a server error keeps the folder for the next launch, but
result.jsonis described above as being written for every upload attempt (includingfailed) and line 63 defines pending as having noresult.json. After a recorded 500/503, the report therefore cannot satisfy the stated pending predicate and will not be retried; clarify whether retryable failures omitresult.jsonor remain pending despite it.
Retry policy: an upload that succeeded, a permanent refusal (size limit, rate limit, 4xx) or three failed attempts delete the folder; a server error (500, 502, 503, 504) keeps it for the next launch.
introduction/getting-started/integrations/native/crash-data-format.md:63
- iOS/tvOS do not ship a monitor, so the universal “monitor and the SDK retry” wording is inaccurate for one of the documented platforms. Refer to the platform SDK, with the monitor/reporter only where applicable.
A report is pending when it has metadata, no `result.json`, and no live process working on it: a crash whose upload was interrupted, a report left by the `MANUAL` policy, a machine that was offline. On the next launch the monitor and the SDK retry; `bugsplat_pending_reports()` lists them for your own UI, `bugsplat_send_report()` uploads one (optionally with a new user, email or description), `bugsplat_discard_report()` deletes one, `bugsplat_post_pending_reports_async()` drains them in the background.
introduction/getting-started/integrations/native/ios.md:43
- This says iOS hang detection produces a full dump, but the immediately following bullet says heap and full dumps are not available on iOS/tvOS. Remove the full-dump promise or document the actual in-process dump format.
* **Hang detection** pings the main dispatch queue; `hangDetection` produces a non-fatal report with a full dump while the app keeps running.
introduction/getting-started/integrations/native/migration.md:26
- The existing 8.x API reference declares
SetHangDetectionTimeout(int ms)and describes the argument as milliseconds (.../desktop/cplusplus/bugsplat-for-windows-api-documentation.md:134-144), so labeling the old method as taking seconds is misleading and can lead to a timeout 1,000 times too short. Use milliseconds in this mapping.
| `SetHangDetectionTimeout(seconds)` | `Options::HangDetection(ms, policy)` | `bugsplat_options_set_hang_detection` |
introduction/getting-started/integrations/native/windows.md:122
- The existing full-memory-dump documentation requires account enablement and a per-version Full Dumps setting before full dumps are produced. This new paragraph presents
BUGSPLAT_DUMP_FULLas immediately usable and only discusses the upload-size limit, so users can end up with a rejected or normal dump without the required server-side setup. Add that prerequisite or link the existing instructions.
The dump is written by DbgHelp while your process is suspended, so Visual Studio, WinDbg and BugSplat's .NET analysis see exactly what they see today. There is no client-side size gate: the server enforces your database's upload limit (100 MB by default; larger limits on Enterprise plans) when the reporter asks for the upload URL, and a refused report is logged as `rejected`. `BugSplatDotNet` defaults to `Heap` on Windows so managed frames resolve.
- Files reviewed: 25/25 changed files
- Comments generated: 11
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| ## From the SDKs | ||
|
|
||
| You do not need to speak this protocol yourself when you use a BugSplat SDK: [BugSplat Native 9.0](../../getting-started/integrations/native/user-feedback.md) (`bugsplat_post_feedback`, C++ `PostFeedback`, .NET `PostFeedback`), [macOS and iOS](../../getting-started/integrations/desktop/macos.md#user-feedback) (`postFeedback`) and [BugSplat for Windows](../../getting-started/integrations/desktop/cplusplus/#user-feedback) (`PostFeedback`) build and upload the report for you and return the crash id and support-response URL. |
| ### Integrations | ||
|
|
||
| {% hint style="success" %} | ||
| **New: BugSplat Native 9.0** is one out-of-process SDK for Windows, macOS, Linux, Android and iOS/tvOS, with the same dialog, upload and support response everywhere. Windows is verified; the other platforms are being brought up. Start at [BugSplat Native](native/). |
| | `BugSplat.dll` / `libbugsplat.dylib` / `libbugsplat.so` | The library your app links: the C API, the report store, the uploader, structured reports, feedback, hang detection. | | ||
| | `BugSplatWer.dll` | Windows only: the Windows Error Reporting helper for fail-fast crashes. | | ||
|
|
||
| Capture, dump writing, the dialog and the upload all happen **out of your process**, so a crash that corrupts the heap, exhausts the stack or takes out the C runtime is still reported. On iOS and tvOS, where the OS forbids a helper process, capture is in process and the report is sent on the next launch. |
|
|
||
| Capture, dump writing, the dialog and the upload all happen **out of your process**, so a crash that corrupts the heap, exhausts the stack or takes out the C runtime is still reported. On iOS and tvOS, where the OS forbids a helper process, capture is in process and the report is sent on the next launch. | ||
|
|
||
| Initialization refuses to run without the monitor and reporter (`BUGSPLAT_ERR_MONITOR_NOT_FOUND`, `BUGSPLAT_ERR_REPORTER_NOT_FOUND`): a packaging mistake shows up on the developer's machine, not as silently missing crashes in the field. |
| | Windows (x64, x86, ARM64) | out of process; WER for fail-fast | `BugSplatReporter.exe`, Win32 | [Windows](windows.md) | | ||
| | macOS 13+ | out of process | `BugSplatReporter.app`, AppKit | [macOS](macos.md) | | ||
| | Linux (glibc 2.31+) | out of process | `BugSplatReporter`, GTK 3 or headless | [Linux](linux.md) | | ||
| | Android | out of process, at crash time | in-app prompt on next launch | [Android](android.md) | |
|
|
||
| # Hang Detection | ||
|
|
||
| A hang is a crash the operating system never reports: the main thread stops making progress and the user eventually force-quits. BugSplat Native detects hangs the same way on every platform and reports them as an out-of-process dump of the whole process, tagged `reportKind=hang`, through the same store, dialog and upload as a crash. |
| ### Requirements 📋 | ||
|
|
||
| * glibc 2.31 or later (Ubuntu 20.04, Debian 11, RHEL 9 and newer), x86-64 and aarch64. | ||
| * Runtime dependencies are loaded with `dlopen` and are optional: `libcurl.so.4` for uploads (present on every desktop distribution) and GTK 3 for the dialog. Without a display or GTK the reporter uploads headlessly, as if the policy were `QUIET`. |
| Some crashes never reach an in-process handler: `__fastfail`, `/GS` stack-buffer overruns, `RaiseFailFastException`, and the .NET runtime's own fail-fast after an unhandled managed exception. Windows Error Reporting handles those, and only calls a helper whose full path is allow-listed under `HKLM`. Your installer (running elevated) adds it once: | ||
|
|
||
| ``` | ||
| reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\RuntimeExceptionHelperModules" /v "C:\Program Files\MyApp\BugSplatWer.dll" /t REG_DWORD /d 0 |
| bugsplat_options_set_dump_type(o, BUGSPLAT_DUMP_HEAP); /* private writable memory: CLR/GC/native heaps */ | ||
| bugsplat_options_set_dump_type(o, BUGSPLAT_DUMP_FULL); /* every readable region */ | ||
| bugsplat_options_set_minidump_flags(o, MiniDumpWithFullMemory | MiniDumpWithHandleData); /* raw MINIDUMP_TYPE */ |
| description: >- | ||
| BugSplat Native 9.0 is one out-of-process crash reporter for Windows, macOS, | ||
| Linux, Android, iOS and tvOS: the same dialog, upload path, support response | ||
| and crash-report format on every platform. |
What
A new 🧬 BugSplat Native (9.0) group under Integrations for the unified SDK (BugSplat-Git/bugsplat-native):
native/README.mdoverview: how the monitor/reporter model works, the ten-line integration, what every platform shares (properties changeable any time,environment, policies, presigned upload, client-side crash signature), platform table, links to the in-repo reference docs..symsymbols everywhere Crashpad runs).BugSplatCrashData.json,result.json, pending/retry), Migrating to 9.0 (8.x method mapping table, apple 2.x, android 1.x, "what you don't have to change").infoUrlis returned before processing; new "Fields sent by BugSplat Native 9.0" table (environment,crashSignature,crashHash) and howreportKindtravels. Written below the response block so it does not overlap docs(web-services): environment field on commitS3CrashUpload #341'senvironmentrow.No Sentry/Firebase mentions; the Xbox page is untouched (still points at the private SDK).
Notes for review
docs/ARCHITECTURE.md; items not yet in a release are marked planned or carry a status hint. Update the hints as each platform is verified.🤖 Generated with Claude Code
https://claude.ai/code/session_01HHo6UdKBQXDABUhRgHWdW2