React SDK

Overview

The official NPM module for embedding the Userback Widget into your React application.

Official NPM Package

https://www.npmjs.com/package/@userback/react

Official Github Repository

https://github.com/userback/widget-js/tree/develop/widget-react

Installation

📘

Userback Widget Token

You will need your Userback Widget Token, you can get your project-specific Userback Widget Token from Widget Customiser.

We've got 2 options, utilizing NPM or Yarn in the code example below.

npm i @userback/react
yarn add @userback/react

Quickstart

The easiest way to get started with Userback is to simply use the Provider near the top of your React Tree like so:

import { UserbackProvider } from '@userback/react'

ReactDOM.createRoot(document.getElementById('root')).render(
  return (
    <React.StrictMode>
      <UserbackProvider token={USERBACK_TOKEN}>
        <App />
      </UserbackProvider>
    </React.StrictMode>)
)

Options

Along with token, you can also provide an options prop:

const {email, name} = getUserDetails()
return (
  <UserbackProvider token={USERBACK_TOKEN} options={{ email, name, priority: 'high' }} >
    ...
  </UserbackProvider>)

Hooks

You can access Userback hooks in child components of the <UserbackProvider> with useUserback():

import { useUserback } from '@userback/react'

function App() {
  const { open, hide } = useUserback()
  return (
    <div id="app">
      <button type="button" onClick={() => open('general', 'screenshot')}>Take a screenshot</button>
      <button type="button" onClick={() => hide()}>Hide me :(</button>
    </div>
  )
}

export default App

Class based components

If you are using class based components and need an alternative to hooks, you can use the withUserback Higher Order Component:

import { withUserback } from '@userback/react'

class App extends React.Component {
  render() {
    return (
      <div id="app">
        <button type="button" onClick={() => this.props.userback.open('general', 'screenshot')}>Take a screenshot</button>
        <button type="button" onClick={() => this.props.userback.hide()}>Hide me :(</button>
      </div>
    )
  }
}

export default withUserback(App)

For more information about available configuration settings and and functions available, see our JavaScript API