React Native
đź“– Full documentation: https://openpanel.dev/docs/sdks/react-native
Looking for a step-by-step tutorial? Check out the React Native analytics guide.
Installation
Install dependencies
We're dependent on expo-application for buildNumber, versionNumber (and referrer on android) and expo-constants to get the user-agent.
npm install @openpanel/react-native
npx expo install expo-application expo-constants
Initialize
On native we use a clientSecret to authenticate the app.
const op = new Openpanel({
clientId: '{YOUR_CLIENT_ID}',
clientSecret: '{YOUR_CLIENT_SECRET}',
});
Options
Common options
apiUrl - The url of the openpanel API or your self-hosted instance
clientId - The client id of your application
clientSecret - The client secret of your application (only required for server-side events)
filter - A function that will be called before sending an event. If it returns false, the event will not be sent
disabled - If true, the library will not send any events
Usage
Track event
op.track('my_event', { foo: 'bar' });
Navigation / Screen views
expo-router
import { usePathname, useSegments } from 'expo-router';
const op = new Openpanel({ })
function RootLayout() {
const pathname = usePathname()
const segments = useSegments()
useEffect(() => {
op.screenView(pathname)
op.screenView(pathname, {
segments: segments.join('/'),
})
}, [pathname,segments])
}
```
#### react-navigation (simple)
```tsx
import { createNavigationContainerRef } from '@react-navigation/native'
import { Openpanel } from '@openpanel/react-native'
const op = new Openpanel({ })
const navigationRef = createNavigationContainerRef()
export function NavigationRoot() {
const handleNavigationStateChange = () => {
const current = navigationRef.getCurrentRoute()
if (current) {
op.screenView(current.name, {
params: current.params,
})
}
}
return (
<NavigationContainer
ref={navigationRef}
onReady={handleNavigationStateChange}
onStateChange={handleNavigationStateChange}
>
<Stack.Navigator />
</NavigationContainer>
)
}
```
For more information on how to use the SDK, check out the [Javascript SDK](https://openpanel.dev/docs/sdks/javascript#usage).