Feature flags
Every feature is gated by a flag. Flags default on. Override per-flag with an env var, or
per-mount with a flags prop on <MessagingInboxProvider>.
How it works
- Env var name =
NEXT_PUBLIC_FEATURE_ + the flag key in UPPER_SNAKE_CASE.
e.g. scheduledSend → NEXT_PUBLIC_FEATURE_SCHEDULED_SEND.
- Accepted truthy values:
true, 1, on, yes. Falsy: false, 0, off, no.
- Resolution order (last wins): built-in defaults → env → Provider props.
- In components:
const on = useFeature("huddles") or const flags = useFeatureFlags().
The flags
Top-level surfaces
| Flag |
Env |
Effect when off |
messaging |
NEXT_PUBLIC_FEATURE_MESSAGING |
Hides channels/DMs in the sidebar & rail |
inbox |
NEXT_PUBLIC_FEATURE_INBOX |
Removes the Inbox nav + queue |
support |
NEXT_PUBLIC_FEATURE_SUPPORT |
Removes the Support Center surface |
activity |
NEXT_PUBLIC_FEATURE_ACTIVITY |
Reserved activity feed |
Messaging sub-features
| Flag |
Effect when off |
threads |
No "reply in thread", no thread panel/summaries |
reactions |
No emoji reactions or the reaction picker |
mentions |
No @-mention button/highlighting |
pins |
No pin action or pinned bar |
savedItems |
No save/bookmark action or Saved page |
fileUpload |
Hides the attach button |
richComposer |
Composer drops its formatting toolbar |
slashCommands |
Hides the / command affordance |
scheduledSend |
Removes schedule-send menu + Drafts |
drafts |
Hides Drafts & sent |
huddles |
Removes huddle/call buttons + the huddle bar |
presence |
Hides presence dots |
typingIndicator |
No "… is typing" |
readReceipts |
(reserved) |
emojiPicker |
Removes emoji picker buttons |
channelBrowser |
Hides "Add channels" / browse |
directMessages |
Hides the DM section |
groupDms |
(reserved) treats group DMs like channels |
Support sub-features
| Flag |
Effect when off |
supportTickets |
(reserved) core tickets always render in Support |
supportEscalate |
Removes the Escalate action |
supportCallback |
Removes "Request callback" |
supportAvailability |
Removes the online/offline availability pill |
Global
| Flag |
Effect when off |
search |
Removes the header search + palette trigger |
commandPalette |
(reserved) ⌘K behaviour |
notifications |
Removes the bell + panel |
themeToggle |
Removes the light/dark toggle |
themingPanel |
Removes the live Appearance panel |
workspaceSwitcher |
Removes the far-left workspace rail switcher |
aiAssist |
(reserved) AI assist affordances |
Examples
Add a new flag: extend FeatureFlags + defaultFlags in
packages/messaging-inbox-sdk/src/config.ts; the env mapping is automatic.