Adding the Inbox Component
<CourierInbox />

Default CourierInbox component
If you’re using tenants, you can scope requests to a particular
tenant by passing its ID to the For the full reference of sign in parameters, see the Courier JS docs.
signIn request.<CourierInboxPopupMenu />

Default CourierInboxPopupMenu component
Looking for toast notifications? See the Toast Component section below.
Tabs and Feeds
Tabs and feeds allow you to organize and filter messages in your inbox. A feed is a container that groups related tabs together. Each tab represents a filtered view of messages.Understanding Tabs and feeds
- Feed: A top-level category that appears in the inbox header. Each feed can contain multiple tabs. For example, a social media app might have feeds like “All”, “Jobs”, “My Posts”, and “Mentions”.
- Tab: A filtered view within a feed that applies specific filters to show relevant messages. For example, a “Notifications” feed might have tabs like “All”, “Unread”, and “Important”.
If there is only one feed, the feed selection dropdown is hidden. If a feed has only one tab, the tab bar is hidden and the unread count appears next to the feed.
Tabs
You can define multiple tabs inside of a feed. Each tab appears in the list and will apply it’s filters to the messages.
CourierInbox with many tabs
Filter Options
Each tab uses afilter object to determine which messages to display. Filters are combined with AND logic, meaning all specified conditions must be met.
| Filter Property | Type | Description |
|---|---|---|
tags | string[] | Messages that have any of the specified tags |
archived | boolean | Whether to include archived messages (defaults to false if unset) |
status | 'read' | 'unread' | Filter by read/unread status |
Feeds
You can define multiple feeds to organize messages into different categories. Each feed appears as a selectable option in the inbox header.
CourierInbox with many feeds
Handle Clicks and Presses
Pass callback functions to theonMessageClick, onMessageActionClick, and onMessageLongPress
props to handle clicks and presses in the inbox.
| Callback Prop | Type Signature |
|---|---|
onMessageClick | (props: CourierInboxListItemFactoryProps) => void |
onMessageActionClick | (props: CourierInboxListItemActionFactoryProps) => void |
onMessageLongPress | (props: CourierInboxListItemFactoryProps) => void |
Styles and Theming
The fastest way to style the Courier Inbox to match your app is with a custom theme.Light and Dark Themes
Customize both the light and dark themes. The example below shows unread indicator styling applied in both cases.
Courier React Inbox with a custom unread indicator style
Theme Utilities
Courier provides utility functions to help you work with themes: Default Themes:defaultLightTheme- Default light theme for inboxdefaultDarkTheme- Default dark theme for inboxdefaultToastLightTheme- Default light theme for toastdefaultToastDarkTheme- Default dark theme for toast
mergeTheme(baseTheme, overrideTheme)- Merge two inbox themes, withoverrideThemetaking precedencemergeToastTheme(baseTheme, overrideTheme)- Merge two toast themes, withoverrideThemetaking precedence
Popup Alignment, Position, and Dimensions

Customizing the popup menu's alignment, position, and dimensions
CourierInboxPopupAlignment are:
| Vertical Alignment | Options |
|---|---|
| Top | "top-right", "top-center", "top-left" |
| Center | "center-right", "center-center", "center-left" |
| Bottom | "bottom-right", "bottom-center", "bottom-left" |
Height
<CourierInbox /> has a default height of auto, meaning it will set its height based on its children.
Give the inbox a fixed height by setting the height prop.
Custom Elements
Element Refs
You can use React refs to get programmatic access to component instances. This allows you to call methods on the components, such asremoveHeader() on the inbox component.
The following element types are available for refs:
CourierInboxElement- Ref type for<CourierInbox />CourierInboxPopupMenuElement- Ref type for<CourierInboxPopupMenu />CourierToastElement- Ref type for<CourierToast />
removeHeader()- Removes the header from the<CourierInbox />component
Ref methods are component-specific. Check the component’s type definition for all available methods.
List Items
| Render Prop | Type Signature |
|---|---|
renderListItem | (props: CourierInboxListItemFactoryProps) => ReactNode |
renderListItem prop.

Custom inbox message list item displaying the message object
Custom Header
| Render Prop | Type Signature |
|---|---|
renderHeader | (props: CourierInboxHeaderFactoryProps) => ReactNode |
renderHeader prop.

Custom inbox header
Popup Menu Button
| Render Prop | Type Signature |
|---|---|
renderMenuButton | (props: CourierInboxMenuButtonFactoryProps) => ReactNode |
renderMenuButton prop.

Custom inbox popup menu button
Loading, Empty, Error States and Custom Pagination
| Render Prop | Type Signature |
|---|---|
renderLoadingState | (props: CourierInboxStateLoadingFactoryProps) => ReactNode |
renderEmptyState | (props: CourierInboxStateEmptyFactoryProps) => ReactNode |
renderErrorState | (props: CourierInboxStateErrorFactoryProps) => ReactNode |
renderPaginationItem | (props: CourierInboxPaginationItemFactoryProps) => ReactNode |
renderLoadingState, renderEmptyState, renderErrorState, and renderPaginationItem props.

Custom pagination state