Three steps.
No setup wizard
Drop the SDK into your <head>, or install the browser extension. Each captured failure becomes a ticket on the board, no configuration files, no build step.
Install the SDK
One line in the document head:
<script
src="https://optics-qa.com/sdk/v1/optic.js"
integrity="sha384-UIh7yARBAKL2wKNK5itfyoSTkW+Vx6AnR8WmUOBB5EAmxb6QuOpjssroU1ZETmyx"
crossorigin="anonymous"
data-key="YOUR_PROJECT_KEY"
async
></script>Or via npm if you prefer a build-step install. The package is a tarball on this host, not the public npm registry:
npm install https://optics-qa.com/sdk/v1/optic-browser-0.9.1.tgzInitialise
Module-style init, call once on app boot:
import { Optic } from "@optic/browser";
Optic.init({
projectKey: "YOUR_PROJECT_KEY",
sessionRecording: { enabled: false, recordOnError: false },
});That is it. Errors and page loads start flowing. Session replay stays off until you turn it on. The in-app help bubble is on by default; set helpBubble.enabled to false if you do not want screenshots and voice notes sent to Optic. Call Optic.init only after you have a lawful basis to store on the device.
HTTP ingest (Node, Deno, Edge)
Browser, Node, and Edge all POST the same contract. There is no Node-SDK-only path. Deno and Supabase Edge Functions cannot import @optic/node. They POST, or they use @optic/edge.
POST https://optics-qa.com/api/ingest
Content-Type: application/json
X-Optic-Key: sk_live_...Browser uses a pk_live_ key. Servers and Edge use sk_live_ with write scope. Body is an events array. Each event needs type, timestamp, and data. Success is 202. Missing key is 401. More than 100 events in one POST is 400. Over the plan events-per-second cap is 429 with Retry-After of 1 second (trial 50, Pro 500, Team 1,000, Enterprise 5,000).
A backend batch should start with sdk_init (runtime: "edge" or "node") so the service registers, then error events. Without sdk_init, errors never show as a service.
curl -o supabase/functions/_shared/optic.ts https://optics-qa.com/sdk/v1/optic-edge-0.1.1.ts
# or: npm install https://optics-qa.com/sdk/v1/optic-edge-0.1.1.tgzOn Supabase and Deno, copy the reporter into the function bundle. Dashboard copy-paste will not follow a relative import.
import { reportToOptic } from "../_shared/optic.ts";Or install the extension
Prefer a zero-code path for QA? Install the Optic browser extension. While anyone on your team browses, the extension records what’s happening, runs end-to-end tests around any failure it catches, and logs the bug before the tab closes, same data, no SDK required.
What you get out of the box
- Full-fidelity DOM session replay around each failure.
- Errors, slow requests, and broken flows, auto-captured.
- Smart triage: severity inferred, owner assigned from the failing module.
- PR-ready tickets with replay link, stack trace, and starter branch name.
- Privacy-first: PII masked at the SDK before anything leaves the browser.
Where to next
Sign in to create a project key, then come back and paste it into the snippet above. Need a hand? support@optics-qa.com replies the same day.
Create a project. Paste the snippet
Your first 3 days are on us. No credit card. Cancel by removing the script tag.
