About five minutes

Your first successful claim.

Create a Developer account and Project

Add the exact HTTPS Allowed Origin and copy the one-time-displayed publishable key.

Install

npm install @dermoptera/handoff

Validate your state

Define a narrow JSON type and a strict runtime validator that rejects unknown fields.

Create and display

import { createTransfer, HandoffClient, FetchTransport } from "@dermoptera/handoff";

const config = {
  endpoint: "https://api.dermoptera.work",
  publishableKey: "pk_live_your_project_key",
  appId: "quote-wizard",
  schemaVersion: "v1",
};

const transfer = await createTransfer({
  ...config,
  state: { step: 2, answers: { size: "medium" } },
  ttl: 600,
  continueUrl: "https://app.example/continue",
});

Render transfer.url as a QR or continuation link.

Claim and resume

Use HandoffClient.claimAndResume() with an Application Adapter so existing-state confirmation happens before claim.

Never log the continuation URL. It contains the claim token and AES key in its fragment.

Full copy-paste examples are in the package README and repository docs/QUICKSTART.md.