React component reference

Package: @bootstrapware/feedback
Styles: @bootstrapware/feedback/styles.css

Import styles once near the feature. Use a Client Component in Next.js App Router. Bootstrapware does not authenticate board end users, pass user from your session.

Props

PropTypeRequiredNotes
userFeedbackAuthor | nullrecommendedOpaque stable id. Optional name, email, avatarUrl for display.
adapterFeedbackAdapterBYO / localIf set, wins over Hosted. Use createLocalAdapter or your own API.
boardIdstringHosted / BYO configWith publishableKey for Hosted. Defaults to brd_local for local adapter.
publishableKeystringHostedBrowser-safe. Never put secret keys in the client.
apiBaseUrlstringnoDefaults to https://feedback.bootstrapware.co
postsFeedbackPost[]noSeed posts for createLocalAdapter / demos.
configPartial<FeedbackBoardConfig>noOverrides toggles / empty state until Hosted config loads.
authorTokenstringnoShort-lived host-signed assertion from POST /api/v1/author-tokens (secret key). Required when the board sets requireAuthorToken.
classNamestringnoWrapper class for layout.

Resolve order

  1. If adapter is passed, use it (BYO or createLocalAdapter).
  2. Else if both boardId and publishableKey are set, use Hosted (createHostedAdapter internally).
  3. Else fall back to createLocalAdapter (demo / free).

Local / demo

import { Feedback, createLocalAdapter } from "@bootstrapware/feedback";
import "@bootstrapware/feedback/styles.css";

<Feedback
  user={{ id: "user_1", name: "Ada" }}
  adapter={createLocalAdapter({ storageKey: "demo-feedback" })}
/>

Hosted

<Feedback
  boardId="brd_..."
  publishableKey="bsw_live_pub_..."
  user={currentUser}
/>

Live config fetch needs BYO ($9.99) or Hosted ($19.99). Live Hosted writes need Hosted ($19.99). Test publishable keys work unpaid.

Limits in the UI

Title max 200 characters. Body max 5000. Statuses: open | planned | in_progress | shipped | declined. See limits.

Similar requests

When the compose title is at least 4 characters, the widget looks for similar posts. Hosted and BYO debounce listPosts({ q }) so matches are not limited to the currently loaded page. Local mode uses in-memory substring/token overlap (no network search). Up to 3 clickable results jump to the existing post and focus Vote. Not embeddings or fuzzy NLP.

Related: Modes · Adapter · Identity · Quickstart · Limits