Docs · Get started

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.

01

Install the SDK

One line in the document head:

index.html
html
<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:

terminal
bash
npm install https://optics-qa.com/sdk/v1/optic-browser-0.9.1.tgz
02

Initialise

Module-style init, call once on app boot:

app.ts
ts
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.

03

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.

request
http
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.

terminal
bash
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.tgz

On Supabase and Deno, copy the reporter into the function bundle. Dashboard copy-paste will not follow a relative import.

supabase/functions/my-fn/index.ts
ts
import { reportToOptic } from "../_shared/optic.ts";
04

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.

05

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.
06

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.

Ready

Create a project. Paste the snippet

Your first 3 days are on us. No credit card. Cancel by removing the script tag.