Install
Install @deck-io/feedback in a React or Node application.
Install
Package
pnpm add @deck-io/feedback
# or
npm install @deck-io/feedback
# or
yarn add @deck-io/feedback
# or
bun add @deck-io/feedbackPublished package: npmjs.com/package/@deck-io/feedback (current: 0.2.0+)
Peer dependencies (React entry only)
The default entry does not bundle React. Install peers if your app does not already have them:
pnpm add react react-dom| Peer | Supported versions | Required for |
|---|---|---|
react | ≥ 18 | @deck-io/feedback (UI / provider) |
react-dom | ≥ 18 | @deck-io/feedback (UI / provider) |
The server entry (@deck-io/feedback/server) does not need React.
Module format and exports
- ESM-only package (
"type": "module") - Node ≥ 20 (package
engines) - Works with Next.js App Router, Vite, and other modern bundlers
| Subpath | Entry | Contents |
|---|---|---|
@deck-io/feedback | dist/index.js + types | React provider, components, hooks, client submitFeedback |
@deck-io/feedback/server | dist/server/index.js + types | createDeckFeedbackClient, server submitFeedback (no React) |
// Browser / React
import { DeckProvider, FeedbackDialog } from "@deck-io/feedback";
// Node / Route Handlers / Server Actions
import { createDeckFeedbackClient } from "@deck-io/feedback/server";Environment variables (recommended)
Browser (React)
# Next.js (client-visible)
NEXT_PUBLIC_DECK_PUBLISHABLE_KEY=pk_...
# Vite
VITE_DECK_PUBLISHABLE_KEY=pk_...Server (Node / Route Handlers)
# Server-only — do not use NEXT_PUBLIC_* for server submissions
DECK_PUBLISHABLE_KEY=pk_...Create the key in Deck under Settings → Feedback Widget SDK (see Setup in Deck).
Verify the install
import {
DeckProvider,
FeedbackDialog,
SDK_VERSION,
DEFAULT_WIDGET_API_URL,
} from "@deck-io/feedback";
console.log(SDK_VERSION); // e.g. "0.2.0"
console.log(DEFAULT_WIDGET_API_URL);Server entry:
import {
createDeckFeedbackClient,
SDK_VERSION,
DEFAULT_WIDGET_API_URL,
} from "@deck-io/feedback/server";
console.log(SDK_VERSION, DEFAULT_WIDGET_API_URL);Next step
Setup in Deck — create a widget and publishable key.