Widget
Widget surfaces
Releaseo widget behavior for changelog posts, announcements, contact forms, feature requests, roadmap, tabs, and public customer-facing content.
Config-driven tabs
The widget config controls visible customer-facing areas such as changelog,
announcements, contact, feature requests, roadmap, feedback, and the Home Hub.
Labels and icons are resolved from navigationConfig, while feature-specific
settings such as featureRequestsTitle, featureRequestsRequireLogin,
roadmapTitle, and contactConfig control page copy and behavior.
Feature requests
Current public feature request behavior:
- list, search, detail, create request, success state, comments, and voting
- only approved requests are public
- new submissions start as pending and need dashboard review
- create, comment, and vote can require a signed-in viewer
- list payload includes description, score, comment count, category, and vote state
Widget endpoints:
GET /sdk/feature-requests/categories
GET /sdk/feature-requests
POST /sdk/feature-requests
GET /sdk/feature-requests/:id/comments
POST /sdk/feature-requests/:id/comments
POST /sdk/feature-requests/:id/vote
Roadmap
Roadmap visibility is item-based, not column-based. Internal-only items never render publicly, and limited-visibility items use the same visibility runtime as limited-visibility changelog posts.
Preferred widget endpoints:
GET /sdk/roadmap/snapshot
GET /sdk/roadmap/:id
POST /sdk/roadmap/:id/follow
DELETE /sdk/roadmap/:id/follow
The snapshot response groups visible roadmap items by columns and avoids extra round trips for the normal list view.
Home Hub and navigation
homeConfig stores the small widget-scoped Home Hub payload:
- tab label, title, and subtitle
- request feature CTA
- Contact CTA title, description, button label, and visibility
- latest announcements section
- quick links, up to 8
- social links, up to 10
Home actions can open the contact form, open the existing feature-request flow, open a safe external URL, or trigger a host action registered by the customer app. Dashboard config never stores raw JavaScript, and the SDK only runs host actions that were registered through the public runtime API.
navigationConfig controls compact bottom navigation labels and icons. Custom
HTML, custom JavaScript, and custom SVG payloads are not accepted in the backend
validation layer.
Contact form
contactConfig controls the Contact view shown inside the widget. The current
field types are text, email, textarea, select, and checkbox. Fields
stay editable even when the SDK pre-fills identity values such as email or name.
Public submit endpoint:
POST /sdk/contact-submissions
Submissions are stored in Postgres as Contact Inbox records. They can also
trigger integration delivery through the contact_submission_created event.
Theme and tab tokens
Navigation tab style is stored in widget theme JSON. Supported layout modes are
pill and bar. Color mode can be automatic or manual, and automatic mode
derives tab colors from existing widget body tokens.
Preview data
For dashboard previews and local demos, the SDK supports mock data inputs such
as mockFeatureRequests, mockRoadmapColumns, and mockRoadmapItems. Mock
mode should be used for preview fidelity, not for production customer data.
Thanks — your feedback helps us improve the docs.