0.7.32 • Published 1 year ago

use-clarity v0.7.32

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Features

  • Hooks
  • Written in TypeScript
  • Documented, self explaining methods

Installation

# npm
npm install use-clarity

# yarn
yarn add use-clarity

Quickstart

import * as React from 'react';

import { ClarityProvider, useClarity } from 'use-clarity';

const CLARITY_PROJECT_ID = 'your-clarity-project-id';

const App = () => (
  <ClarityProvider clarityId={CLARITY_PROJECT_ID}>
    <HomePage />
  </ClarityProvider>
);

const HomePage = () => {
  const { userId } = useUserContext();
  const { identify } = useClarity();

  React.useEffect(() => {
    identify(userId);
  }, [userId]);

  return <div>Hi I'm a homepage</div>;
};

Context

This library is a React abstraction of Clarity. use-clarity tries to keep as close as a one-on-one abstraction of the "vanilla" Clarity functionality.

Links

API

ClarityProvider

ClarityProvider is used to initialize the window.clarity instance.

Place the ClarityProvider as high as possible in your application. This will make sure you can call useClarity anywhere.

Props

nametypedescriptionrequireddefault
clarityIdstringclarity project idtrue

Example

const App = () => {
  return (
    <ClarityProvider clarityId={CLARITY_PROJECT_ID}>
      <p>Hi there, I am a child of the ClarityProvider</p>
    </ClarityProvider>
  );
};

useClarity

Used to retrieve all methods bundled with Clarity. These are based on the official Clarity API docs and Clarity Identify API docs. We provide full access to the internals, with additional helper methods.

Make sure ClarityProvider is wrapped around your component when calling useClarity().

Remark - You can't use useClarity() in the same component where ClarityProvider is initialized.

API

nametypedescription
currentSessionUrlstring?the url for the current session
clarityUserIdstring?the current clarity id of the user
currentSessionIdstring?the current session id
upgrade(key: string) => voidprioritize specific types of sessions for recording
consent() => voidset consent
event(name: string, value: string) => voidsend custom events
set(variable: string, value: string| string[]) => void;add custom tags
identify(userId: string, sessionId?: string, pageId?: string, userHint?: string) => voidcustomise the ids
metadata(callback: Data.MetadataCallback, wait?: boolean) => voidinternal
signal(callback: Data.SignalCallback) => voidinternal
start(config?: Core.Config) => voidinternal
stop() => voidinternal
pause() => voidinternal
resume() => voidinternal

Next Up

  • Add tests
  • Add more examples