Stop describing the bug. Point at it.
Drop-in commenting for staging sites. Your client clicks the exact element and types. No account, no extension, no “third section from the top” email.
Live demo: drop a pin anywhere. It stays in your browser, visible only to you.
Two steps, that’s the install
# 1. install
npm install co-mment
# 2. add near your app root, behind a check that keeps it off in production
import { Comment } from "co-mment";
{process.env.NEXT_PUBLIC_VERCEL_ENV !== "production" && (
<Comment projectKey="cmt_pk_..." />
)}How it works
From “this button looks off” to a shipped fix
Feedback starts as a pin on the actual page and ends as a resolved thread, an agent prompt, or a Linear ticket, with the element, the viewport, and the browser carried along the whole way.
What’s in the box
Dense where it counts
Pins attach to the element under the click, capturing a selector chain, offsets, and a text fingerprint. They survive redeploys and honestly flag drift instead of silently lying.
Every comment captures the pinned area automatically. Stored privately, served through short-lived signed URLs to project members only.
Every comment across the project in a single stream. Filter by page, status, commenter, viewport, or browser, with per-editor unread state.
Threads export as structured, agent-ready prompts. Each one has the page, the element, the viewport, and the ask, written for Claude Code, Cursor, or any coding agent.
Connect a team and any thread becomes a Linear issue with the agent-copy description and the screenshot attached.
Commenters just type a name and email. The confirmation email doubles as a claim link that keeps their identity across devices and projects.
Ship the widget before your next review call
Free while in preview. No credit card, no sales call. Just a 6-digit code to your inbox.
Get started