Install on Next.js
- 1
Copy your snippet from the Cayda dashboard
One script tag with your site’s token.
- 2
Add it to your root layout with next/script
App Router: app/layout.js. Pages Router: pages/_app.js. Plain React: index.html or your top-level component.
- 3
Deploy
The feedback layer is live for your team on every route.
// app/layout.js (App Router) — or pages/_app.js for the Pages Router
import Script from 'next/script';
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
<Script
src="https://api.cayda.io/widget.js"
data-token="YOUR_SITE_TOKEN"
data-api="https://api.cayda.io"
data-dashboard="https://www.cayda.io"
strategy="afterInteractive"
/>
</body>
</html>
);
}Reviewing preview deployments too? Add each hostname as its own site in Cayda so notes from preview and production stay separate.
Built for how Next.js apps navigate
Next.js routes on the client through the History API. Cayda intercepts those navigation calls directly, so when a user moves from /pricing to /docs without a page load, it cleans up the previous route’s notes and loads the right ones for the new one. Hash routing and anything unusual is caught by a lightweight fallback that checks the URL every 800 milliseconds.
The script is a plain client-side tag, so it is indifferent to server components, streaming, or how you render. It pins notes to DOM elements, not coordinates, so they survive re-renders and responsive layouts.
Where your team leaves notes
Marketing pages, the logged-in dashboard, onboarding flows, settings screens, a table that misaligns at 1280px, a modal that traps focus, a copy change product wants before launch. Because the review happens in the real app under the reviewer’s own account, pages behind authentication are just pages. Every note carries a screenshot, the URL, browser, OS and viewport.
Notes have a type, status, priority and assignee, thread replies in place, and land in a Kanban or list dashboard. On Pro they notify Slack; on Team a click turns one into a Jira, Asana or Linear issue with the context attached.
Invisible to your users
The script activates only for authenticated Cayda team members and invited guests. For every other user it renders nothing, sets no cookies and adds no meaningful weight, so it can ship in production rather than a separate staging build.
What your team gets
Pin notes to any element
Click on headers, images, buttons, forms — any visible element on any page. Notes stay anchored when the layout shifts.
Context captured automatically
Every note records a screenshot, the page URL, browser, OS and viewport size. Screen recording on the Team plan.
Triage in a dashboard
Kanban and list views, filters by status, priority, assignee and type, bulk actions, CSV export.
Thread replies in place
Discuss an issue right on the page where it lives. No more asking which page someone meant.
Push to Slack, Jira, Asana, Linear
New notes notify Slack on Pro. One click turns a note into a ticket on Team.
Invisible to visitors
The layer renders only for authenticated team members and invited guests. Your audience sees your site, nothing else.
Pricing
Free for 2 websites, 50 notes per site and 3 team members, no credit card. Pro is $9 a month base plus $5 per member (billed annually) for unlimited sites, notes, file attachments, status, priority and assignment, an activity feed, CSV export and Slack. Team is $14 a month base plus $6 per member (billed annually) and adds screen recording, guest access for clients at no member fee, and Jira, Asana and Linear.
- Owner covered by the base fee
- Members bill only once they accept
- No page view caps or site limits on paid plans
Keep reading
Add feedback to your Next.js app.
One script tag in your layout, and your team is leaving notes on the running app in minutes.
Get started free →