Skip to main content

@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. 1

    Install

    One package, zero config.

    terminal
    pnpm add @tour-kit/surveys
  2. 2

    Compose

    Declarative config, headless or pre-styled — the survey renders with your design system.

    nps-survey.tsx
    import {
      SurveysProvider,
      SurveyPopover,
    } from '@tour-kit/surveys'
    
    <SurveysProvider surveys={[npsSurvey]}>
      <SurveyPopover id="nps-q2" />
    </SurveysProvider>
  3. 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/media

Anchor popover surveys to elements, gate by audience, and embed video or images in questions.

Pro package

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

userTourKitSaaS platformsOSS libraries
Cost$99 once$200–900/moDIY time
Fatigue prevention~
Response data ownershipYour stackTheir 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.

Ask better questions. Own the answers.

Install now, run it free in dev, license it when it ships.

$pnpm add @tour-kit/surveys