Skip to main content
Use this workflow for iOS or UIKit apps that need native crash and hang evidence. It connects runtime capture to exact debug artifacts and hosted issue readback.
Use LogBrew Swift 0.1.6 or later. Use native LogBrew CLI 0.1.24 or later for debug artifact upload.
Use project-scoped ingest configuration inside the app. Use an account login for artifact uploads and issue reads.

Add the crash product

Add the public SDK through Swift Package Manager.
Add the LogBrew product to send telemetry. Add LogBrewCrash only when the app explicitly enables native crash or hang capture. The capture integration supports iOS 15 or later. Keep one app-owned capture object because native fatal handlers are process-wide.

Configure one exact identity

Use the same project, release, environment, and service in runtime setup and artifact upload. LogBrew does not derive or replace these values.
Install the capture object on the main thread before root UI registration. Create its parent directory first. Keep the storage directory app-owned and private. The raw crash report stays in that directory until replay accepts its exact issue. LogBrew sends bounded frame UUIDs, architectures, and offsets instead of the raw report.

Replay after launch

Create the LogBrew client and transport through your normal SDK setup. Then replay pending reports after capture installation.
Replay uses a stable event ID and processes reports oldest first. It deletes a report only after accepted delivery. Enable durable delivery before replay when a failed request must survive another restart. Do not call purge() during routine network or authentication recovery.

Enable hang capture

Use the same capture owner for UIKit hang detection.
A recovered hang replays with crash.handled set to true. An ongoing hang left by process termination replays with crash.handled set to false. Both forms include numeric durationMs metadata. They keep the same exact artifact identity used by fatal crash frames. The watchdog pauses while the app is inactive or under a debugger. It also suppresses capture during serious thermal pressure.

Upload the matching dSYM

Archive the app with debug information enabled. Keep the dSYM from the exact build that users run. Inspect its image UUIDs.
Validate the artifact locally before upload.
Repeat --expect-image-uuid for each required architecture. The command fails when the discovered UUID set differs from the expected set. Check account access. Then run the same command without --dry-run.
The upload command validates supported Apple objects and verifies every uploaded identity. It does not include local paths or filenames in API metadata.

Verify hosted readback

Filter the issue list with the same runtime scope.
The list response identifies the grouped issue. Read its detail to request hosted symbolication.
A matching artifact adds a symbolication object.
Keep the full project, release, environment, and service scope during every read. Do not broaden a failed lookup across projects.

Recover safely

After accepted replay, the local report count should reach zero. One later clean launch must not increase the issue occurrence count. For the complete SDK surface, see the LogBrew Swift SDK. For general issue investigation, use Investigate an issue with the API.