Baselime enables observability for the next generation of cloud applications.
This library enables you to monitor real-user behaviour of your React and Next.js applications.
npm i --save @baselime/react-rumAdd the BaselimeRum Component at the root of your React application application.
Get the
publicApiKeyfrom the Baselime console. Make sure to use a public API key.
functionPage({ child }){return(<BaselimeRumapiKey={publicApiKey}>{child}</BaselimeRum>)}The following data is automatically captured for every page view of your application:
timezonelanguageosuserAgenturldevicecountrycity
Additionally, you can enable capturing web vitals from your React applications. Use the enableWebVitals prop.
- Time To First Byte (TTFB)
- Largest Contentful Paint (LCP)
- First Input Delay (FID)
- Cumulative Layout Shift (CLS)
Load this at the top of your application to avoid resending the web vital data.
import{BaselimeRum}from'@baselime/react-rum';functionPage({ child }){return(<BaselimeRumapiKey={publicApiKey}enableWebVitals>{child}</BaselimeRum>)}BaselimeRum automatically captures and sends any Unhandled Errors in your application to Baselime.
import{BaselimeRum}from'@baselime/react-rum';functionPage({ child }){return(<BaselimeRumapiKey={publicApiKey}enableWebVitalsfallback={<div>Something went wrong</div>}>{child}</BaselimeRum>)}To provide a better UX for end users, use React Error Boundaries.
The BaselimeErrorBoundary catches errors in any of its child components, reports the error to Baselime. It works in conjunction with the <BaselimeRum /> Component so that all errors are correlated by Page Load, and User Session.
import{BaselimeErrorBoundary}from'@baselime/react-rum';functionUserProfile({ child }){return(<BaselimeErrorBoundaryfallback={<div>Could not display your user profile</div>}><UserProfileImage/><UserName/><UserBiography/></BaselimeErrorBoundary>)}This is based on the excellent react-error-boundary project.
Error Boundaries do not catch errors inside event handlers. To catch Exceptions
import{useBaselimeRum}from'@baselime/react-rum';functionMyButtonComponent(){const{ captureException }=useBaselimeRum();functionhandleClick(e){try{// Do something that could throw }catch(error){// sends errors to Baselime so they can be fixed captureException(error)}}return<buttononClick={handleClick}>Click Me</button>}Capture custom events for analytics and monitoring. Like logs but with all the power of Baselime.
sendEvent(message: string, payload)
import{useBaselimeRum}from'@baselime/react-rum';functionCheckoutComponent(){const{ sendEvent }=useBaselimeRum();functionhandleClick(){constcheckoutSession=awaitcreateImaginaryCheckoutSession()sendEvent("Checkout Started",{
...checkoutSession})}return<buttononClick={handleClick}>Checkout</button>}To set the User from another component then call
import{useBaselimeRum}from'@baselime/react-rum';functionUserCard({ child }){const{ setUser }=useBaselimeRum();functionlogin(user){setUser(user.id);}return(<ButtononClick={login}>Login</Button>}Once the data is captured, you can query, search and analyse your data in the Baselime console. You can create dashboards and alerts based on the Real User Monitoring metrics.
| Parameter | Description |
|---|---|
apiKey | Your Baselime API key for authentication and authorization. |
enableWebVitals | (Optional) A boolean flag indicating whether to enable tracking of web vitals. |
enableLocal | (Optional) A boolean flag indicating whether to enable local tracking. |
dataset | (Optional) The dataset to store the data to. Defaults to web. |
service | The name of the application being monitored. Defaults to the hostname. |
fallback | A fallback UI component in case the application crashes |
© Baselime Limited, 2023
Distributed under MIT License (The MIT License).
See LICENSE for more information.