Skip to content
🔥 Redux side-effects as a function of state
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

redux-heat 🔥

Build Status npm version

Redux side-effects as a function of state.

  • Reducers and action creators as pure functions;
  • It is not a middleware, so setup and testing are super easy;
  • Follows the same pattern as React (decide what to do based on the state and not the actions);
  • Effects are pure functions.


Add it as a dependency in your project:

npm install --save redux-heat


Here is a simple example to fetch user details once the id of the user changes is the Redux store:

import subscribe from 'redux-heat'

// Define a selector to define what data to check for changes
const getUserId = state => state.userId

// Action creators
const setUserDetails = user => ({ type: 'SET_USER_DETAILS', payload: user })
const notifyUserFetchFailed = error => ({ type: 'FETCH_USER_FAILED', payload: e })

const fetchUser = userId => fetch(`/user/${userId}`)

// Describe the effect based on state changes
const fetchUserHeat = state => ({
  fn: fetchUser,
  args: [getUserId(state)],
  onValue: setUserDetails,
  onError: notifyUserFetchFailed

// Then subscribe the effect to the Redux store
subscribe(reduxStore, [fetchUserHeat])
You can’t perform that action at this time.