2.1.8 • Published 6 months ago

@goodhood/tracking v2.1.8

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

@goodhood/tracking

Declarative tracking for react apps

Split up tracking payload setup from the actual tracking call. Avoids leaking data across the whole app.

Install

npm i @goodhood/tracking
import { TrackingProvider } from '@goodhood/tracking';

const handleEvent = (payload) => {
  sendAnalyticsEvent(payload);
};

<TrackingProvider onEvent={handleEvent}>
  ...
</TrackingProvider>

Preview

Usage

Track an event with hooks

trackingProvider.track(payload)

  • sends the payload to the parent provider
  • expects an object
    • with at least the event key
    • can have any kind of other keys

useTrack returns a function that forwards to trackingProvider.track(payload)

import { useTrack } from '@goodhood/tracking';

export default {
    const track = useTrack();

    return (
      <button 
        type="button"
        onClick={() => { track({ event: 'button-clicked' }); }}
      >
        track now
      </button>
    );
}

Track an event via class components

class ClassComponent extends PureComponent {
  constructor(props) {
    super(props);
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    this.provider.track({ event: 'button-clicked' });
  }

  render() {
    return (
      <>
        <Provider ref={(provider) => { this.provider = provider; }} />
        <button type="button" onClick={this.handleClick} className="ui-button ui-button-primary">
          press me to track (check console)
        </button>
      </>
    );
  }
}

Track on mount

TrackingTrigger accepts any kind of props. All props will be forwarded as payload to track(payload).

import { TrackingTrigger } from '@goodhood/tracking';

<TrackingTrigger event="pageload" additional-data={123} />

Setting up tracking data

<Provider email="fun@mail.at">
  <Provider funnel="Post creation" any-kind-of-prop="oh yes">
    <TrackButton />
  </Provider>
</Provider>

TrackingProvider

TrackingProvider accepts the following props:

  • onEvent: Called whenever the provider receives a track(payload) call. Either directly or coming from a TrackingProvider inside children.
  • transform: Allows to change payloads before they are sent to the parent TrackingProvider (or to onEvent) (check stories for detailed examples)
  • all other props will be merged to the payload

TrackingProvider allows imperative access to:

  • track(payload) as described above
2.1.2

8 months ago

2.0.3

9 months ago

2.1.1

8 months ago

2.0.2

9 months ago

2.1.4

7 months ago

2.0.13

8 months ago

2.0.5

9 months ago

2.1.3

7 months ago

2.0.4

9 months ago

2.1.6

6 months ago

2.0.7

9 months ago

2.1.5

6 months ago

2.0.12

9 months ago

2.0.6

9 months ago

2.1.8

6 months ago

2.0.9

9 months ago

2.1.7

6 months ago

2.0.10

9 months ago

2.0.8

9 months ago

2.0.0-beta.2

10 months ago

2.0.0-beta.1

10 months ago

2.0.0-beta.0

10 months ago

2.1.0

8 months ago

2.0.1

9 months ago

2.0.0-beta.4

10 months ago

2.0.0

9 months ago

2.0.0-beta.3

10 months ago

1.1.0

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

2 years ago

1.0.0-beta.3

3 years ago

1.0.0-beta.2

3 years ago

1.0.0-beta.1

3 years ago

1.0.0-beta.0

3 years ago