@tour-kit/surveys · Pro
Ask in context.
Hear the truth.
In-app microsurveys for React — NPS, CSAT, CES, and custom flows with skip logic and fatigue prevention, rendered in your own design system.
Runs free in dev — pay once ($99) when you ship.
5 display modes · skip logic · NPS/CSAT/CES scoring · your repo, your code
Live demo
Two questions. Real component.
Answer the NPS survey below — it is the live @tour-kit/surveys component, scored on the spot by calculateNPS(). No video, no signup wall.
Email surveys arrive too late
Feedback is most honest seconds after the experience. Catch it in the product — without burning user goodwill.
Surveys land in inboxes, not moments
Email NPS three weeks after onboarding measures memory, not experience. Response rates show it.
Ask at the moment of truth
Trigger in-product, right after the action — completion of onboarding, first export, a support interaction.
Survey fatigue burns trust
Hand-rolled triggers fire on every visit until users learn to dismiss everything you show them.
Fatigue prevention in the engine
Global cooldowns, frequency rules, sampling, snooze, and session caps — enforced by the package, not a TODO.
Another tool, another data silo
Survey SaaS keeps your responses on their servers, behind their export limits and their invoice.
Responses stay in your stack
Scoring runs locally; events stream into your PostHog, Mixpanel, Amplitude, or GA4 via @tour-kit/analytics.
Three steps to production
No iframe embeds, no script tags, no vendor dashboard. The code lands in your repo.
- 1
Install
One package, zero config.
terminalpnpm add @tour-kit/surveys - 2
Compose
Declarative config, headless or pre-styled — the survey renders with your design system.
nps-survey.tsximport { SurveysProvider, SurveyPopover, } from '@tour-kit/surveys' <SurveysProvider surveys={[npsSurvey]}> <SurveyPopover id="nps-q2" /> </SurveysProvider> - 3
Ship it
The survey lives in your bundle and your version control — no embed script, no vendor dashboard.
Read the docs
A research tool, not a popup generator
Three pillars every userTourKit package shares, plus the survey machinery that separates signal from annoyance.
Headless or pre-styled
shadcn-style question components out of the box, or raw state via hooks to render any UI you want.
WCAG 2.1 AA accessible
Keyboard operable rating scales, focus management, screen-reader announcements — surveys everyone can answer.
The code lands in your repo
No embed script, no vendor dashboard. Surveys are TypeScript in your bundle, versioned with your app.
Skip logic
Branch on previous answers with declarative rules or function predicates — cycle detection included.
NPS, CSAT & CES scoring
Built-in scoring with promoter/passive/detractor classification — calculated locally, reported to your analytics.
In-context targeting & media
@tour-kit/mediaAnchor popover surveys to elements, gate by audience, and embed video or images in questions.
Try it free in dev — watermark until you license.
Full functionality in development and on localhost, no key required. One $99 license unlocks production for all Pro packages.
No signup, no credit card — install and go.
Microsurveys without the platform tax
| userTourKit | SaaS platforms | OSS libraries | |
|---|---|---|---|
| Cost | $99 once | $200–900/mo | DIY time |
| Fatigue prevention | ✓ | ~ | — |
| Response data ownership | Your stack | Their servers | ✓ |
The honest pitch
Why pick a fresh library?
Tour Kit is new — no legacy API debt, no corporate-UX baggage, no AGPL contamination. Built headless-first so you bring your own components and styles. Every chip below is a measured technical fact, not a marketing claim.
- < 8KB core gzipped
- WCAG 2.1 AA
- Lighthouse a11y 100
- TypeScript strict
- >80% test coverage
- MIT core
- React 19 ready
- shadcn-native
See the documentation or source on GitHub.
Survey questions, answered straight
What developers ask before replacing email blasts with in-product research.
Skip logic is built in — route to different questions based on previous answers, including arbitrary function predicates. The flow engine tracks visited steps so conditional chains can never loop forever.
Fatigue prevention is layered: a global cooldown between any two surveys, per-survey frequency rules (once / session / every N days), sampling rates, user-initiated snooze, and a hard cap per session. Survey fatigue is the product killer, so it is handled in the engine, not left to you.
NPS (0–10 with promoter/passive/detractor scoring), CSAT, CES, and fully custom flows — rating, text, single/multi-select, and boolean questions. Render any of them as a modal, slideout, banner, popover anchored to an element, or inline in the page.
Responses stay in your app. Completion handlers hand you the response map; scoring helpers (calculateNPS, calculateCSAT, calculateCES) run locally; @tour-kit/analytics streams events to your own PostHog, Mixpanel, Amplitude, or GA4. Nothing touches userTourKit servers.
Everything works. @tour-kit/surveys runs unlicensed in development and on localhost with full functionality; production shows a small watermark until you activate a $99 lifetime license that covers every Pro package.
Ask better questions. Own the answers.
Install now, run it free in dev, license it when it ships.



