
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
feathers-redux-immutable
Advanced tools
An immutable, redux data store for FeathersJS services.
npm install feathers-redux-immutable --save
import reduxifyServices from 'feathers-redux-immutable';
const feathersClient = feathers()...;
// Create Redux actions and reducers for Feathers services
const services = reduxifyServices(feathersClient, ['messages', 'users']);
// Configure Redux store & reducers
export default combineReducers({
messages: services.messages.reducer,
users: services.users.reducer,
});
// Feathers service calls may now be dispatched.
store.dispatch(services.messages.get('557XxUL8PalGMgOo'));
reduxifyServices returns an object with the shape:
{
messages: { // For the Feathers service with path /messages.
// action creators
create(data, params) {}, // Action creator for app.services('messages').create(data, params)
update(id, data, params) {},
patch(id, data, params) {},
remove(id, params) {},
find(params) {},
get(id, params) {},
store(object) {}, // Interface for realtime replication.
reset() {}, // Reinitializes store for this service.
// reducer
reducer() {}, // Reducers handling actions MESSAGES_CREATE_PENDING, _FULFILLED, and _REJECTED.
},
users: { ... },
}
Service calls can be dispatched by:
dispatch(services.messages.create(data, params));
The usage example code produces a Redux state with the shape:
state = {
messages: {
isLoading: boolean, // If get or find have started
isSaving: boolean, // If update, patch or remove have started
isFinished: boolean, // If last call finished successfully
isError: Feathers error, // If last call was unsuccessful
data: hook.result, // Results from other than a find call
queryResult: hook.result, // Results from a find call. May be paginated.
},
users: { ... },
};
If integrating with feathers-offline-realtime-immutable, the state will be decorated with these additional properties:
state = {
messages: {
store: {
connected: boolean, // If replication engine still listening for Feathers service events
last: { // Read https://github.com/feathersjs/feathers-offline-realtime#event-information.
action: string, // Replication action.
eventName: string, // Feathers service event name. e.g. created
records: object, // Feathers service event record.
},
records: [ objects ], // Sorted near realtime contents of remote service
},
},
users: { ... },
}
const Realtime = require('feathers-offline-realtime-immutable');
const messages = feathersClient.service('/messages');
const messagesRealtime = new Realtime(messages, { subscriber: (records, last) => {
store.dispatch(services.messages.store({ connected: messagesRealtime.connected, last, records }));
} });
Immutable objects allow for shallow equality checking.
If you're using React to render your application, you can increase performance by utilizing a shallow comparison (as opposed to a more expensive deep object comparison) in the shouldComponentUpdate lifecycle method. The behavior is the default when extending from React.PureComponent.
This implementation uses timm, which uses plain JS objects.
MIT
FAQs
An immutable, redux data store for FeathersJS services.
The npm package feathers-redux-immutable receives a total of 1 weekly downloads. As such, feathers-redux-immutable popularity was classified as not popular.
We found that feathers-redux-immutable 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.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.