Files
message-inbox-web-frontend-sdk/docs/FEATURE_FLAGS.md
T
2026-07-17 21:48:37 +05:30

3.1 KiB

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. scheduledSendNEXT_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

# A lean messaging-only build
NEXT_PUBLIC_FEATURE_SUPPORT=false
NEXT_PUBLIC_FEATURE_INBOX=false
NEXT_PUBLIC_FEATURE_HUDDLES=false
NEXT_PUBLIC_FEATURE_SCHEDULED_SEND=false
// Per-mount override (e.g. embed a read-only chat)
<MessagingInboxProvider flags={{ richComposer: false, huddles: false, support: false }}>
  
</MessagingInboxProvider>

Add a new flag: extend FeatureFlags + defaultFlags in packages/messaging-inbox-sdk/src/config.ts; the env mapping is automatic.