Laydebug

Consent and snapshots

How Laydebug handles on-device SQLite without leaking it onto GitHub.

Sharing local state is off by default. The reporter must toggle consent and confirm before upload.

The SDK:

  1. Serializes SQLite (serializeSync / your getSnapshot callback).
  2. Rejects non-SQLite headers and payloads over 8 MiB.
  3. Calls reports.prepareStateUpload for a short-lived signed PUT URL.
  4. Uploads bytes directly to private storage.
  5. Posts reports.bug with objectPath, sha256, and byteLength only.

Storage keys look like laydebug-state/{projectId}/{uploadId}/snapshot.db. The GitHub issue includes the path and checksum, never the file and never a signed URL.