A set of React high order components based on Rx.

Downloads in past


41703.4.06 years ago8 years agoMinified + gzip package size for recompact in KB


Build Status codecov
Recompact is a set of React higher-order components for reactive programming. It's a drop-in replacement of Recompose with several enhancements.

Installation and Usage

To install the stable version:
yarn add recompact

and to use it in your code:
import recompact from 'recompact'

Optimizing bundle size


The best way to reduce build size is to use babel-plugin-lodash. It can be used with other libraries than lodash, just like this:
  "plugins": [
    ["lodash", { "id": "recompact" }],

import recompact from 'recompact'
import { pure, withProps } from 'recompact'

const enhance = recompact.compose(
  withProps({ className: 'beautiful' }),

roughly to
import _compose from 'recompact/compose'
import _pure from 'recompact/pure'
import _withProps from 'recompact/withProps'

const enhance = _compose(
  _withProps({ className: 'beautiful' }),

Tree shaking

Since tree shaking isn't ready yet to reduce build size efficiently, it is not supported in recompact.



Recompact vs. Recompose

Recompact is a drop-in replacement for Recompose with better performance.
\* Except for the callback of withState's state updater.

Flattened React components tree

You may have noticed the "compact" keyword in "Recompact". It's the main differences between Recompose and Recompact. Recompact compacts all higher-order components into a single one. It results in a flatter React tree. A flatter React tree has several advantages: performance improvement, better debugging (especially in React Developer Tools) and easier testing.
Let's take two components using composition, one using recompose and one using recompact.
The two components are similar, but if you take a look at the React component tree (using React Developer Tool), you can see that the component using recompact is flat:

New methods

Recompact also features higher-order components that are not included in Recompose:

And some very specific higher-order components that give you a lot of power:

To learn more about how to use connectObs and withObs inside your project, please refer to this complete guide about connectObs and withObs.