Arc
ComponentsBlocksDocsPricingTry the demo
Get Pro
Introduction
Installation
Theming
Motion
AI and MCP
Changelog
Metrics dashboardPro
KPI drilldownPro
Metric explorerPro
Revenue explorerPro
MRR waterfallPro
Cohort retentionPro
Usage forecastPro
Journey flowPro
Uptime statusPro
Choropleth explorerPro
Connected scatterPro
Horizon chartPro
Account healthNewPro
Market terminalPro
Budget variancePro
Small multiplesPro
Line replayPro
AI chatPro
AI composerPro
AI answerPro
Model pickerPro
Model arenaPro
Prompt studioPro
Document extractionPro
Agent memoryPro
AI side panelPro
Research runPro
AI insight cardNewPro
Catch upNewPro
AI feature launchNewPro
AI search barNewPro
AI setup wizardNewPro
Call insightsNewPro
Lead scoringNewPro
Agent runPro
Agent tasksPro
Agent approvalsPro
Agent routinesPro
Agent orchestratorPro
MCP serversPro
Knowledge basePro
Eval suitePro
Agent builderNewPro
Agent galleryNewPro
SidebarPro4
Page header
Command palette
Notification center
Selection toolbarPro
Empty states
Search resultsPro
Login and sign up5, free and Pro variants
Onboarding illustrationPro
OTP input
Multi-step formPro
Two-factor setupNewPro
Magic linkNewPro
Settings pagePro
Settings commandPro
Security settingsPro
Billing overviewPro
Usage billingPro
Cancel flowPro
Onboarding surveyNewPro
Spend alertNewPro
Team membersPro
Invite peoplePro
Team directoryPro
Roles and permissionsPro
Profile pageNewPro
API keysPro
WebhooksPro
IntegrationsPro
Environment variablesPro
Domain verifyNewPro
Webhook testerNewPro
Plan comparison
Pricing calculatorPro
Usage pricingPro
Cart drawerPro
Checkout summaryPro
Live checkoutPro
Seat managerNewPro
Credit top-upNewPro
Invoice studioPro
Wallet cardPro
Delivery trackerPro
Product listingPro
Product detailPro
Activity feedNewPro
Inbox triagePro
Support conversationPro
Support widgetPro
Help centerPro
Feature votingNewPro
File upload
Media playerPro
Week calendarPro
Availability pickerPro
Project boardPro
Release readinessPro
Kanban boardPro
Feedback boardNewPro
Smart schedulerNewPro
Task breakdownNewPro
Goal trackerNewPro
Hero section
Hero signupPro
Scroll storyPro
Spotlight gridPro
Feature bentoPro
Comparison table
Logo marquee
Studio perspectivesPro
Stats band
Changelog feed
FAQ section
Contact section
Team showcasePro
Blog grid
Site header
Site footer
CTA section
Newsletter signup
Activity terrainPro
Revenue globePro
Customer galaxyPro
Semantic zoomPro
Layout morphPro
Exploded viewPro
What’s new76 new
BlocksFeedback board

Feedback board

Pro

A feature request board with a submit form that finds similar requests, upvotes, top and new sorting, status filters, and comments.

Live block · sample data

When to use

  • A public or in app board where customers suggest and vote on features.
  • Beta programs that need a lightweight place for requests and team replies.

When not to use

  • One to one support conversations; use support-conversation or support-widget.

Installation

Pro source and install commands unlock with a Pro plan.

Usage

Use this to collect and rank feature requests. Save new requests with onSubmit, votes with onVote and comments with onComment, and set each status from your own admin tools.

example.tsx
1import { FeedbackBoard } from "@/components/arc/blocks/feedback-board/feedback-board";2 3export function FeedbackPage({ requests, user }) {4  return (5    <FeedbackBoard6      defaultRequests={requests}7      currentUser={{ name: user.name, avatar: user.avatar }}8      onSubmit={draft => createRequest(draft)}9      onVote={(id, voted) => vote(id, voted)}10      onComment={(id, text) => comment(id, text)}11    />12  );13}
Built fromInputTextareaSegmented controlAvatarAnimated counter

API reference

2 parts. The first is the root.

FeedbackBoard

A feature request board: post an idea, upvote with a rolling count, sort by top or new, filter by status, and expand a request in place to read and add comments. While a title is typed, similar requests appear so people vote instead of posting duplicates.

PropTypeDefaultDescription
requestsFeedbackRequest[]–Controlled requests. Pair with onRequestsChange.
defaultRequestsFeedbackRequest[]sample requestsInitial requests when uncontrolled.
onRequestsChange(requests: FeedbackRequest[]) => void–Called with the full list after a vote, a new request, or a comment.
onVote(id: string, voted: boolean) => void–Called after a vote is added or removed.
onSubmit(draft: { title, details, category }) => void–Called with a new request once the title passes validation. The author's vote is added automatically.
onComment(id: string, text: string) => void–Called when a comment is posted.
statuses{ id: FeedbackStatus; name: string }[]Under review, Planned, In progress, CompleteStatus names for filters and tags.
categoriesstring[]["Feature", "Integration", "Improvement"]Category choices in the form.
currentUser{ name: string; avatar?: string }{ name: "You" }Author of new requests and comments.
defaultSort"top" | "new""top"Initial sort.
titlestring"Feedback"Page heading.
classNamestring–Extra class on the root.

FeedbackRequest

PropTypeDefaultDescription
id, title, details, categoryRequiredstring–Request content.
statusRequired"review" | "planned" | "progress" | "done"–Shown as a dot and label; filterable.
votesRequirednumber–Vote count.
votedboolean–Whether the current visitor voted.
authorRequired{ name, avatar? }–Who posted it.
at, createdRequiredstring, number–Display time and a sort key for New (higher is newer).
commentsRequired{ id, author, text, at, team? }[]–Comments. team marks replies from your team with a Team tag.

Keyboard interactions

Tab
Move through New request, status filters, sort, and each request's vote and title.
EnterorSpace
Toggle a vote, expand a request, or pick a filter.
Arrow leftorArrow right
Switch between Top and New.
Escape
Close the new request form.

Accessibility

  • The form validates on submit with an inline error tied to the title through aria-describedby and aria-invalid.
  • Votes are toggle buttons with aria-pressed and a label that names the request and count; changes and posts are announced.
  • Request titles are buttons with aria-expanded that reveal details and comments in place.
  • Status always pairs a dot with its name; filters and sort are radiogroups.

Motion

  • Voting hops the arrow and rolls the count. Rows keep their place while you vote and only re-rank when you change sort or filter, so nothing moves under the pointer.
  • Sort and filter changes glide rows to their new order. A posted request lands at the top with a brief tint.
  • The form, similar requests, errors, and expanded details open on a critically damped height spring.
  • Reduced motion removes travel and height springs and keeps short fades.

Responsive behavior

  • Content sits in a centered 820px column under a frosted sticky header.
  • Below 640px the toolbar stacks: status filters scroll sideways above the sort switch, and the form's category chips sit above a full width Post button.
  • Vote boxes shrink slightly and the relative time hides on phones.

Performance

  • Sorting and filtering are memoized per change; only rows that move animate.
  • The header blur is one backdrop filter; it falls back to a solid surface when transparency is reduced.

Notes for AI

Give your coding assistant the Markdown reference instead of screenshots.

  • Use to collect and rank feature requests from customers. Keep the admin side (status changes, merging) in your own tools and pass the result in.
  • The similar requests check is a simple word match on the client. Swap it for server search when the board grows.
  • Record votes per signed in user; the board tracks only the current visitor's vote.
/components/blocks/feedback-board/markdown

The full library index for assistants is at /llms.txt.

Related

Changelog feedBlockRelease notes you can filter, open in place, and scroll through month by month.Support widgetProBlockAn in-app help launcher that grows into live article search, reading, and a chat with your team.Activity feedProBlockA team activity feed grouped by day on a quiet avatar timeline, with a type filter, a live new updates button, expandable details, and a mark all read sweep.
PreviousProduct detailNextProfile page
Arc · 130 block pagesllms.txt

On this page

  • Preview
  • When to use
  • When not to use
  • Installation
  • Usage
  • API reference
  • Keyboard
  • Accessibility
  • Motion
  • Responsive behavior
  • Performance
  • Notes for AI
  • Related
View as Markdown

Feedback

  • Follow the system setting on iOS and Android.

    PlannedFeature01234567892Chloe Nguyen6w ago
  • We rebuild the weekly report by hand every Monday. A scheduled export to a sheet would save our ops team an hour a week.

    PlannedIntegration01234567892Marcus Johnson3w ago
  • Cmd plus a number to jump between workspaces, like browser tabs.

    In progressImprovement01234567891Mateo Alvarez1mo ago
  • Let us use passkeys as a second factor instead of codes from an app.

    Under reviewFeature01234567891Ava Mitchell5d ago
  • A trigger that fires when someone comments, so we can route it to Slack channels by project.

    CompleteIntegration01234567891Jordan Reyes2mo ago
  • Select several rows and add or remove a tag in one go.

    Under reviewImprovement01234567890Emma Collins2d ago
  • Add a dropdown or number field to each request, such as plan or seat count.

    Under reviewFeature01234567890Mateo Alvarez1d ago