@jokkoo/sdk-react-native
v1.0.3
Published
Jokkoo client embed SDK for React Native (iOS and Android)
Readme
@jokkoo/sdk-react-native
Official Jokkoo client embed SDK for React Native (iOS and Android). Works in bare React Native and Expo apps (React Native >= 0.72).
Install
npm install @jokkoo/sdk-react-nativeQuick start
Wrap your app in JokkooProvider with your config and add a support button. The SDK initializes internally — no useEffect or lifecycle boilerplate required. The SDK never holds your signing secret — only your backend does.
import { JokkooButton, JokkooProvider } from "@jokkoo/sdk-react-native/ui"
export default function App() {
return (
<JokkooProvider
clientToken="your_sandbox_client_token"
baseUrl="https://api.sandbox.jokkoo.ai"
locale="fr"
debug={__DEV__}
userTokenProvider={async () => {
const response = await fetch("https://your-api.example.com/jokkoo/token", {
headers: { Authorization: `Bearer ${yourSessionToken}` },
})
const { userToken } = await response.json()
return userToken
}}
>
<YourApp />
<JokkooButton position="bottom-right" />
</JokkooProvider>
)
}userTokenProvider is called lazily when the user opens support or the SDK needs a fresh token — not at mount time. Mount JokkooProvider only after the user is authenticated, or use a closure that reads your current session when invoked.
The chat UI is a visual scaffold today. Real messaging (WebSocket, history, typing indicators) will replace the placeholders in a future release.
Advanced: imperative init
For non-React usage or manual lifecycle control, you can still call Jokkoo.init() directly:
import { Jokkoo } from "@jokkoo/sdk-react-native"
Jokkoo.init({
clientToken: "your_sandbox_client_token",
userTokenProvider: async () => fetchUserToken(),
baseUrl: "https://api.sandbox.jokkoo.ai",
debug: __DEV__,
})
// Remember to call Jokkoo.destroy() when tearing downFor React apps, prefer JokkooProvider — it handles init and cleanup automatically.
API
Core (@jokkoo/sdk-react-native)
| Method | Description |
| ------ | ----------- |
| Jokkoo.init(config) | Initialize the SDK (advanced / non-React use) |
| Jokkoo.destroy() | Tear down SDK state |
| Jokkoo.isInitialized() | Returns whether the SDK is initialized |
| Jokkoo.getState() | Returns current SDK state |
UI (@jokkoo/sdk-react-native/ui)
| Export | Description |
| ------ | ----------- |
| JokkooProvider | React context wrapper; accepts clientToken, userTokenProvider, baseUrl, locale, debug, theme |
| JokkooButton | Floating action button to open support |
| JokkooModal | Support Center modal with request list and conversation (included in JokkooButton) |
| RequestListScreen | Support Center request list screen |
| ConversationScreen | Conversation detail screen |
| useJokkooContext() | Access theme, navigation, and chat open/close state |
Compatibility
- React Native >= 0.72
- React >= 18
- Expo and bare workflow
- No native modules in the core SDK
- UI uses only React Native built-in components
Development
cd typescript
pnpm install
pnpm --filter @jokkoo/sdk-react-native build
pnpm --filter @jokkoo/sdk-react-native testLicense
Apache-2.0
