Reapex is a JavaScript framework designed for building scalable React applications, with a particular focus on micro-frontend architectures and robust state management. It is currently at version 1.1.1 and appears to be actively maintained, though a specific release cadence isn't explicitly stated. Key differentiators include its plugin system (e.g., for Immer integration), flexible state model supporting both immutable records and plain JavaScript objects, and built-in support for integrating with Redux Sagas for complex side effects. The framework abstracts away much of the boilerplate associated with Redux-like patterns, aiming to simplify state management and modular development in larger applications. Its design enables developers to extend its core functionality through plugins, adapting it to various architectural needs.
npm install reapexVerified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates how to set up a Reapex application, define a state model with reducers and effects (Sagas), and consume it within a React component using the `useModel` hook.
Review model initial state definitions and update to reflect the new structure. If using Immutable.js, consider migrating to plain objects with an Immer plugin for simpler state management.
Remove `actionTypeDelimiter` from your `createApp` configuration. Ensure any custom action type generation or parsing expects `/` as the delimiter.
Update any subscriber functions to correctly deconstruct or access properties from the full action object instead of expecting only the payload directly.
No direct fix needed for Reapex itself, but ensure your project explicitly declares and manages its own `react`, `react-redux`, and `react-dom` dependencies.
Instead of passing `reducers` and `sagas` to `createApp`, use `app.setExternalReducers()` and `app.runSaga()` after the app has been initialized to register them.
Carefully review the documentation for `throttle`, `debounce`, and `takeLeading` when applying them to effects to ensure the desired behavior for concurrent effect execution.
Use `app.setExternalReducers(yourReducers)` and `app.runSaga(yourSaga)` methods after initializing the app with `createApp()`.
Ensure your TypeScript configuration is compatible, and review model definitions for correct type annotations, especially for reducers and effects, as per the Reapex API.
Remove any custom `actionTypeDelimiter` configuration and ensure all action types are structured using `/` (e.g., `modelName/actionName`).
Upgrade Reapex to version 1.0.0-beta.2 or later, or ensure your state is an Immutable.js Record if using an older version without the Immer plugin.