Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
redux-beacon
Advanced tools
Analytics integration for Redux and ngrx/store
If you're using Redux or ngrx/store to manage your app's state, you can use Redux Beacon to tap into your dispatched actions and map them to events that are consumable by an analytics service (e.g. Google Analytics). With Redux Beacon your entire global state life-cycle becomes trackable.
The core Redux Beacon module is tiny (~ 1KB), and each target, extension, and util, is either around the same size or smaller.
Redux Beacon doesn't depend on any framework, you can use Redux Beacon with React, Angular, React Native, Vue or just plain JavaScript.
With Redux Beacon you can send analytics events anywhere. We have prebuilt targets for the most popular analytics services, you can also build your own custom targets if you need to.
Redux Beacon provides extensions for tracking analytics during intermittent outages in connectivity. These extensions save events in a persistent store when offline (e.g indexedDB). When back online, the extensions purge the store and pass the events off to a target. Read more about offline event collection in the docs.
When using Redux Beacon the bulk of your work will be in an eventsMap
which is
an object that maps action types to analytics events. Here's what an eventsMap
might look like:
const eventsMap = {
// Track a page view on each 'ROUTE_CHANGED' action
'ROUTE_CHANGED': trackPageView(action => ({
page: action.payload.routerState.url,
})),
// Track an event on each 'VIDEO_SELECTED' action, use the state before
// the action and the state after the action to hydrate the analytics event
'VIDEO_SELECTED': trackEvent((action, prevState, nextState) => ({
category: 'Videos',
action: action.type,
label: prevState.videos.currentCampaign,
value: nextState.videos.numVideosSelected,
}))
// Track an event on _every_ action with the special '*' key
'*': trackEvent(action => ({
category: 'redux',
action: action.type,
})),
// Track multiple events on each 'VIDEO_PLAYED' action with the
// combineEvents util
'VIDEO_PLAYED': combineEvents(
trackTiming(action => ({
category: 'Videos',
action: 'load',
value: action.payload.loadTime,
}))
trackEvent(() => ({
category: 'Videos',
action: 'play'
})),
),
// Track an event on each 'VIDEO_SEARCHED' action, but throttle it with
// the debounceEvent util so it doesn't fire as often
'VIDEO_SEARCHED': debounceEvent(300,
trackEvent(action => ({
category: 'Videos',
action: 'search',
label: action.payload.searchTerm,
}))
),
};
The trackPageView
, trackEvent
, and trackTiming
functions used above are
called eventDefinitions
and are what you use to create events that are
consumable by an analytics service (a.k.a "target"). Each target will have its
own set of eventDefinitions
that you can use and customize. In a nutshell,
each time you want to track something:
If the eventsMap
object doesn't meet your needs you can also use an
eventsMapper
function to map action types to event definitions:
const pageView = trackPageView(action => ({
page: action.payload.routerState.url,
}));
const videoLoadTime = trackTiming(action => ({
category: 'Videos',
action: 'load',
value: action.payload.loadTime,
}));
const videoPlayed = trackEvent(() => ({
category: 'Videos',
action: 'play'
}));
const eventsMapper = (action) => {
switch(action.type) {
case 'ROUTE_CHANGED':
return pageView;
case 'VIDEO_PLAYED':
return [videoLoadTime, videoPlayed]
default:
return [];
}
}
FAQs
Analytics integration for Redux and ngrx/store
The npm package redux-beacon receives a total of 32,233 weekly downloads. As such, redux-beacon popularity was classified as popular.
We found that redux-beacon demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.