Expo SDK API reference

Complete API reference for the Knock Expo SDK.

In this section, you'll find the complete documentation for the components exposed in @knocklabs/expo, including the props available.

Note: You can see a reference for the methods available for the Knock class, as well as a Feed instance under the client JS docs.

Components

KnockProvider

The top-level provider that connects to Knock with the given API key and authenticates a user.

Props

Accepts KnockProviderProps

apiKey*stringThe public API key for the environment
userId*stringThe ID of the user for which to retrieve a feed
userTokenstringA JWT that identifies the authenticated user, signed with the private key provided in the Knock dashboard. Required to secure your production environment. Learn more.
hoststringA custom API host for Knock
i18nI18nContentAn optional set of translations to override the default `en` translations used in the feed components

KnockFeedProvider

The feed-specific provider that connects to a feed for that user. Must be a child of the KnockProvider.

Props

Accepts KnockFeedProviderProps:

feedId*stringThe channel ID of the in-app feed to be displayed
defaultFeedOptionsFeedClientOptionsSet defaults for `tenant`, `has_tenant`, `source`, `archived` to scope all subsequent feed queries
colorModeColorModeSets the theme as either light or dark mode (defaults to light)

KnockExpoPushNotificationProvider

A context provider designed to streamline the integration of Expo push notifications within your React Native application. It facilitates the registration of device push tokens with the Knock backend, enabling the delivery of notifications. Moreover, this provider empowers developers to define custom behavior for handling notifications when they are received or interacted with, either by tapping or performing another action. By default, it provides a basic notification handling strategy, but it also allows for custom logic to be easily implemented according to specific application needs.

Note: Must be a child of the KnockProvider.

Props

Accepts KnockExpoPushNotificationProviderProps:

knockExpoChannelId*stringThe channel ID of your Expo channel from Knock.
customNotificationHandlerPromise<Notifications.NotificationBehavior>Allows developers to define custom behavior for handling notifications, including whether to show alerts, play sounds, or set badge counts

Hooks

useKnock

The KnockProvider exposes a useKnock hook for all child components.

Returns: Knock, an instance of the Knock JS client.

Example:

useKnockFeed

The KnockFeedProvider exposes a useKnockFeed hook for all child components.

Returns: KnockFeedProviderState

knockKnockThe instance of the Knock client
feedClientFeedThe instance of the authenticated Feed
useFeedStoreUseStore<FeedStoreState>A zustand store containing the FeedStoreState
statusFilterStatusCurrent value of the filter status for the Feed
setStatusfunctionA function to set the current FilterStatus
colorModeColorModeThe current theme color

Example:

useAuthenticatedKnockClient

Creates an authenticated Knock client.

Returns: Knock instance, authenticated against the user

Example:

useNotifications

Creates a Feed instance for the provided Knock client which creates a stateful, real-time connection to Knock to build in-app experiences.

Returns: Feed instance

Example:

useTranslations

Exposed under KnockI18nProvider child components.

Returns:

localestringThe current locale code (defaults to `en`)
t(key: string) => stringA helper function to get the value of a translation from the current `Translations`.

useExpoPushNotifications

The KnockExpoPushNotificationProvider exposes a useExpoPushNotifications hook for all child components, enabling them to interact with push notification functionalities and state.

Returns: KnockExpoPushNotificationContextType

expoPushTokenstring | nullThe Expo push token for the current device.
registerForPushNotifications() => Promise<void>A function to initiate the push notification registration process.
registerPushTokenToChannel(token: string, channelId: string) => Promise<void>Registers the device's push token with a specific channel in the Knock backend.
unregisterPushTokenFromChannel(token: string, channelId: string) => Promise<void>Removes the device's push token from a specific channel in the Knock backend.
onNotificationReceived(handler: (notification: Notifications.Notification) => void) => voidSets a custom handler for notifications received while the app is in the foreground.
onNotificationTapped(handler: (response: Notifications.NotificationResponse) => void) => voidSets a custom handler for user interactions with notifications.

Example:

Types

I18nContent

Used to set translations available in the child components exposed under KnockFeedProvider and KnockSlackProvider. Used in the useTranslations hook.

Note: locale must be a valid locale code.