# acdlite/recompose

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/acdlite-recompose).**

14,801 stars · 1,222 forks · JavaScript · MIT · archived

## Links

- GitHub: https://github.com/acdlite/recompose
- awesome-repositories: https://awesome-repositories.com/repository/acdlite-recompose.md

## Description

Recompose is a suite of toolsets for implementing higher-order component composition, context extraction, render optimization, and external state integration. It provides a library of utilities to wrap components in reusable logic and behavioral layers, allowing developers to chain functional wrappers and reduce nesting within a component tree.

The project focuses on the composition of functional wrappers to inject properties and behavior into components. It includes a set of helpers for extracting values from component context and passing them as direct properties, as well as tools for integrating external data sources and managing request lifecycles.

The toolkit covers a broad range of capabilities including performance optimization through shallow prop equality and stabilized event handlers, state management using reducers and observable data binding, and render logic management to control component updates. It also provides utilities for prop transformation, component preconfiguration, and the encapsulation of recurring UI patterns.

## Tags

### User Interface & Experience

- [Component Composition Patterns](https://awesome-repositories.com/f/user-interface-experience/component-composition-patterns.md) — Provides a comprehensive suite for wrapping components in reusable logic and behavioral layers to avoid code duplication.
- [Higher-Order Components](https://awesome-repositories.com/f/user-interface-experience/functional-components/higher-order-components.md) — Implements functional wrappers that encapsulate shared logic and reusable behavior to avoid code duplication across UI elements. ([source](https://github.com/acdlite/recompose#readme))
- [Component Composition Primitives](https://awesome-repositories.com/f/user-interface-experience/component-architectures/component-composition/component-composition-primitives.md) — Provides modular primitives that encapsulate behavioral logic to facilitate the composition of complex UI components.
- [Component Context Management](https://awesome-repositories.com/f/user-interface-experience/component-context-management.md) — Passes values to child elements or extracts existing context values to use them as direct properties. ([source](https://github.com/acdlite/recompose/blob/master/docs/API.md))
- [Context-to-Prop Mappings](https://awesome-repositories.com/f/user-interface-experience/component-props-management/context-to-prop-mappings.md) — Extracts values from the component context and injects them as direct properties into functional components.
- [Prop Transformations](https://awesome-repositories.com/f/user-interface-experience/component-props-management/prop-transformations.md) — Implements tools to intercept and modify data properties, allowing for filtering and formatting before they reach a component. ([source](https://github.com/acdlite/recompose/blob/master/docs/API.md))
- [Conditional Rendering](https://awesome-repositories.com/f/user-interface-experience/conditional-rendering.md) — Provides logic to show or hide specific UI elements based on test functions applied to current data. ([source](https://github.com/acdlite/recompose/blob/master/docs/API.md))
- [Conditional Rendering Logic](https://awesome-repositories.com/f/user-interface-experience/conditional-rendering-logic.md) — Implements logic to control component output based on test functions applied to properties.
- [Component Context Access](https://awesome-repositories.com/f/user-interface-experience/context-menu-customizations/component-context-access.md) — Extracts values from component context and injects them as direct properties to decouple components from data sources.
- [Data Mapping Utilities](https://awesome-repositories.com/f/user-interface-experience/data-mapping-utilities.md) — Provides utilities for mapping data properties from complex objects to component properties for UI rendering. ([source](https://github.com/acdlite/recompose/blob/master/README.md))
- [External State Integrations](https://awesome-repositories.com/f/user-interface-experience/ui-architecture/reactivity-systems/external-state-integrations.md) — Implements HOC wrappers that synchronize external state management tools with the user interface. ([source](https://github.com/acdlite/recompose#readme))
- [Component Preconfigurations](https://awesome-repositories.com/f/user-interface-experience/component-architectures/component-composition/component-composition-primitives/component-preconfigurations.md) — Enables the creation of specialized components by injecting fixed sets of default properties into generic base components. ([source](https://github.com/acdlite/recompose/wiki/Recipes))
- [Component Lifecycle Hooks](https://awesome-repositories.com/f/user-interface-experience/component-lifecycle-hooks.md) — Provides functional wrappers that execute custom logic during component rendering, updates, or removal. ([source](https://github.com/acdlite/recompose/blob/master/docs/API.md))
- [Comparison Functions](https://awesome-repositories.com/f/user-interface-experience/component-props-management/comparison-functions.md) — Prevents unnecessary subtree re-renders by implementing shallow equality checks between property sets.
- [Pattern Conversions](https://awesome-repositories.com/f/user-interface-experience/dom-manipulation-libraries/declarative-rendering-frameworks/render-props/pattern-conversions.md) — Transforms render props and context consumers into wrapper components for easier integration with other logic enhancers. ([source](https://github.com/acdlite/recompose/blob/master/docs/API.md))
- [Render Prop Transformations](https://awesome-repositories.com/f/user-interface-experience/dom-manipulation-libraries/declarative-rendering-frameworks/render-props/render-prop-transformations.md) — Converts render prop patterns into wrapper components to simplify integration with other logic enhancers.
- [Identity Stabilization](https://awesome-repositories.com/f/user-interface-experience/event-handlers/identity-stabilization.md) — Provides utilities to maintain stable event handler identities, preventing unnecessary re-renders of child components. ([source](https://github.com/acdlite/recompose/blob/master/docs/API.md))

### Software Engineering & Architecture

- [Context Mapping Utilities](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/runtime-control-and-customization/context-mapping-utilities.md) — Provides a set of wrappers for extracting values from component context and passing them as direct properties.
- [UI Data Binding](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/observer-patterns/ui-data-observers/ui-data-binding.md) — Maps asynchronous data streams to component properties to synchronize external state with the user interface.
- [Enhancement Chaining](https://awesome-repositories.com/f/software-engineering-architecture/enhancement-chaining.md) — Provides pipelines that combine multiple logic wrappers into a single sequence to apply several behavioral changes at once. ([source](https://github.com/acdlite/recompose/blob/master/README.md))
- [Function Composition](https://awesome-repositories.com/f/software-engineering-architecture/modular-program-composition/function-composition.md) — Merges multiple component enhancers into a single function to reduce tree nesting and improve readability. ([source](https://github.com/acdlite/recompose/blob/master/docs/API.md))
- [Component Encapsulation Wrappers](https://awesome-repositories.com/f/software-engineering-architecture/module-encapsulation-patterns/logic-encapsulation-interfaces/component-encapsulation-wrappers.md) — Groups recurring layout or data patterns into reusable interfaces for a consistent application look and feel. ([source](https://github.com/acdlite/recompose/blob/master/README.md))

### Web Development

- [Reducer State Management](https://awesome-repositories.com/f/web-development/frontend-development-tools/state-data-management/state-logic-patterns/reducer-state-management.md) — Separates business logic from presentation by injecting state and update handlers via reducer patterns.
- [Component Update Optimizations](https://awesome-repositories.com/f/web-development/performance-optimizations/component-update-optimizations.md) — Restricts component re-renders using shallow prop equality and specific key monitoring to optimize performance. ([source](https://github.com/acdlite/recompose/blob/master/docs/API.md))
- [Performance Optimizers](https://awesome-repositories.com/f/web-development/react-development/performance-optimizers.md) — Enhances rendering performance through shallow prop equality checks and event handler stabilization.
- [Loading State Indicators](https://awesome-repositories.com/f/web-development/asynchronous-state-management/loading-state-indicators.md) — Offers mechanisms for tracking backend fetch request lifecycles to manage loading and error states in the UI. ([source](https://github.com/acdlite/recompose/wiki/Recipes))
- [React State Bindings](https://awesome-repositories.com/f/web-development/react-state-bindings.md) — Bridges external data sources and state management containers to React UI components.

### Part of an Awesome List

- [GUI Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/gui-frameworks.md) — Utility belt for functional React components.
