
Company News
Socket Named to Rising in Cyber 2026 List of Top Cybersecurity Startups
Socket was named to the Rising in Cyber 2026 list, recognizing 30 private cybersecurity startups selected by CISOs and security executives.
react-store-toolkit
Advanced tools
React Store Toolkit is a library heavily inspired by [Redux Toolkit](https://github.com/reduxjs/redux-toolkit) but for React `Context API` and `useReducer`.
React Store Toolkit is a library heavily inspired by Redux Toolkit but for React Context API and useReducer.
createStore(initialState, reducer, middlewares?,)declare function createStore<State>(
initialState: State,
reducer: Reducer<State, AnyAction>,
middlewares?: Middleware<AnyAction, State>[]
): {
useState: () => State
useDispatch: () => React.Dispatch<AnyAction>
StateProvider: React.FunctionComponent<Partial<State>>
}
| returned object | description |
|---|---|
StateProvider | The context provider (React Element) that provides the store to all its children |
useState | Hook that returns the value of the state stored in the Provider |
useDispatch() | Hook that returns a dispatch function |
The Middleware follows the exact same pattern as Redux based middlewares so therefore Redux middlewares like redux-logger and redux-thunk are directly compatible!
createSlice()Immer and your state updates need to return the newly created state.createReducer()Immer and your state updates need to return the newly created state.createAction()useActionDispatch()declare function useActionDispatch(
action: ActionCreatorWithoutPayload<string>,
useDispatch: () => React.Dispatch<AnyAction>,
payload?: false
): () => void
This hook returns a Callback that lets you call the action specified within a react component. Here is an example:
// store.ts
export const useSetDecrement = () =>
useActionDispatch(decrement, useDispatch, false)
export const useSetIncrement = () =>
useActionDispatch(increment, useDispatch, false)
// Counter.ts
const increment = useSetIncrement()
const decrement = useSetDecrement()
return (
<>
<button onClick={() => increment()}>Increment</button>
<button onClick={() => decrement()}>Decrement</button>
</>
)
Take note of the payload parameter passed in which is defaulted to true. If your action has no payload, you must set it to false explicitly.
createActionEffect()Returns a hook that allows you to update a part of your store similar to a useEffect.
// store.ts
export const useSetCounterName = createActionEffect(changeName, useDispatch)
// Counter.tsx
Examples are available in the Example directory
FAQs
React Store Toolkit is a library heavily inspired by [Redux Toolkit](https://github.com/reduxjs/redux-toolkit) but for React `Context API` and `useReducer`.
We found that react-store-toolkit demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers 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 was named to the Rising in Cyber 2026 list, recognizing 30 private cybersecurity startups selected by CISOs and security executives.

Research
Socket detected 84 compromised TanStack npm package artifacts modified with suspected CI credential-stealing malware.

Security News
A dispute over fsnotify maintainer access set off supply chain alarms around one of Go’s most widely used filesystem libraries.