2.0.2 • Published 5 years ago

@prepair/ga-timing v2.0.2

Weekly downloads
4
License
MIT
Repository
github
Last release
5 years ago

GA timing

Google Analytics user timing for UI components

Installation

npm i -S @prepair/ga-timing

Setup

import { setup } from '@prepair/ga-timing';
import { myCustomGetStorageItem, myCustomSetStorageItem, myCustomGetConfig } from '../my-custom';

...

setup({
    isAutoReset: false,
    isTrackingEnabled: true,
    storageApi: {
        getItem: myCustomGetStorageItem,
        setItem: myCustomSetStorageItem
    },
    configApi: {
        get: myCustomGetConfig
    },
    googleAnalyticsApi: window.gtag
});

Options

nametypedefaultdescription
keyStringuserTimingConfigurationsthe root key of the config JSON and the key for the storage item
isAutoResetBooleanfalseif true it loads the default configuration into the storage on every page load
isTrackingEnabledBooleantrueif false it won't call the googleAnalyticsApi
storageApiObjectdefault implementationget and set methods for interacting the storage
configApiObjectdefault implementationXHR request wrapper for config endpoint
googleAnalyticsApiObjectwindow.gtagGoogle Analytics gtag object

Example for config JSON

{
  "userTimingConfigurations": [
    {
      "name": "timingCategory.childCategory",
      "conditions": {
        "interactivity": ["COND_0"],
        "loadCompletion": ["COND_1", "COND_2"]
      },
      "analytics": {
        "timingCategory": "Timing category / Child category"
      }
    }
  ]
}

Tracking example

import * as gaTiming from '@prepair/ga-timing';

const TIMING_CATEGORY = 'timingCategory.childCategory';

...

onStart () {
    gaTiming.startTracking(TIMING_CATEGORY);
    // OR gaTiming.startTracking(TIMING_CATEGORY, window.performance.timing.*)
}

...

componentReady () {
    gaTiming.fulfillCondition(TIMING_CATEGORY, 'COND_0');
    // emits the following GA 'timing' event
    // timingCategory: TIMING_CATEGORY, timingVar: 'Interactivity', timingVal: ~1000
}

onLoad1 () {
    gaTiming.fulfillCondition(TIMING_CATEGORY, 'COND_1');
}

onLoad2 () {
    gaTiming.fulfillCondition(TIMING_CATEGORY, 'COND_2');
    // emits the following GA 'timing' event
    // timingCategory: TIMING_CATEGORY, timingVar: 'Load completion', timingVal: ~2000
}

...

onSpecialEvent () {
	gaTiming.skipTracking(TIMING_CATEGORY);
}

...
2.0.2

5 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.12

6 years ago

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago