Never miss a release that matters
AI-powered summaries of every GitHub release.
AI Summaries
Changelogs condensed into clear, actionable insights.
Always Free
Track up to 5 packages at no cost, forever.
Weekly Digest
A curated summary of every release, delivered weekly.
TL;DR
Redux now correctly handles objects created with Object.create(null) (empty objects) and ensures the store state type is nullable, improving compatibility and type safety.
Fixes Worth Knowing
Redux now correctly identifies objects created without a prototype as plain objects. This resolves issues when using Redux with data structures that don’t inherit from Object.prototype (common JavaScript pattern).
Before You Upgrade
No action is needed; this is a patch release addressing compatibility and type definitions.
TL;DR
Redux 5.0 is coming soon, alongside Redux Toolkit 2.0, and introduces new TypeScript utilities for safer action handling.
Breaking
- TypeScript Middleware Types: Middleware now receives actions as type
unknown, requiring explicit type guards (type checking) for correct usage. (See migration guide)
New
isActionPredicate: A new function to reliably determine if a value is a Redux action.isPlainObjectUtility: An internal utility function is now exported for checking object types.
Fixes Worth Knowing
None.
Before You Upgrade
Review the Redux Toolkit 2.0 + Redux core 5.0 Migration Guide to prepare for potential breaking changes in related packages.
TL;DR
Redux now fully supports modern JavaScript bundlers (tools for packaging code) without requiring specific production build settings, resolving compatibility issues with platforms like Expo.
Breaking
- Removed internal minification check – may affect custom builds relying on this behavior (unlikely).
Fixes Worth Knowing
- Resolved compatibility issues with Expo and similar bundlers.
Before You Upgrade
No action is needed; this is a bugfix release.
TL;DR
Redux 4.1 reduces bundle size by replacing verbose error messages with concise error codes (unique identifiers) in production builds.
Breaking
- Error messages are now codes (for smaller bundles).
New
- TypeScript definitions are improved (for better type safety).
Fixes Worth Knowing
- Runtime type check errors now include more helpful details and documentation links.
Before You Upgrade
If you rely on parsing Redux error messages, update your code to handle error codes instead.
TL;DR
Redux now fully supports TypeScript 2.4, resolving type definition issues for users of that TypeScript version.
Breaking
- Reducer type definitions changed (for TypeScript 2.4 users).
Fixes Worth Knowing
- TypeScript 2.4 compatibility improved (popular JavaScript/TypeScript tool).
Before You Upgrade
If you are using TypeScript 2.4 with Redux, ensure your reducer types are updated to reflect the new definitions.
TL;DR
Redux v2.0.0 introduces breaking changes to how compose() and reducer hot reloading work, requiring updates to store configuration and potentially Webpack setup.
Breaking
getReducer()removed: If you used reducer hot reloading, update your store creation to usemodule.hot.accept()andstore.replaceReducer(). (Webpack configuration)compose()behavior changed: Adjust how you apply middleware and store enhancers; applycreateStoreas a function to the composed function. (Function application)process.env.NODE_ENVrequired: Ensureprocess.env.NODE_ENVis defined in your CommonJS environment. (Environment variable)
Before You Upgrade
- If using reducer hot reloading, implement the
module.hot.accept()pattern shown in the release notes. - Verify
process.env.NODE_ENVis set in your build environment if using CommonJS.
TL;DR
Redux 1.0 is released with significant documentation and examples, but introduces a breaking change: reducers can no longer dispatch actions during execution.
Breaking
- Reducers cannot dispatch actions during execution. (Prevents unexpected behavior and infinite loops.)
New
- Comprehensive documentation is now available. (Gitbook platform)
- New examples demonstrate async applications and real-world patterns. (Includes caching, normalization, and middleware.)
Fixes Worth Knowing
- Fixed “process is not defined” error in React Native. (Improves mobile development experience.)
- Resolved issues with unsubscribing during dispatch. (Enhances component update reliability.)
Before You Upgrade
- If migrating from Redux 0.12, first apply the 0.12 -> 1.0.0-alpha and then 1.0.0-alpha -> 1.0.0-rc migrations before upgrading to 1.0.
TL;DR
Redux has undergone a major refactoring, moving React bindings to a separate react-redux package and introducing breaking changes to store creation and middleware application, requiring updates to how state is managed and actions are dispatched.
Breaking
- React Bindings Moved: React-specific code is now in
react-redux. Update imports fromredux/reacttoreact-redux. createStoreChanges:createStoreno longer implicitly combines reducers or accepts middleware directly. UsecombineReducersandapplyMiddlewareexplicitly.- Middleware Signature: All middleware now requires a
{ getState, dispatch }parameter. - Thunk Middleware:
redux-thunkis no longer included by default and must be installed and applied separately. - Reducer Initial State: Reducers must now return a default state or handle undefined state, as returning
undefinedwill now throw an error. @@INITAction: The@@INITaction is deprecated; reducers should handle initial state based onundefinedstate input.
New
None
Fixes Worth Knowing
- Components now update
TL;DR
Redux now supports React Native and introduces middleware (function-based action dispatch) for managing asynchronous logic, replacing the previous function-returning action creator approach.
Breaking
- React Native Support: Imports for React-specific components must now come from
redux/reactorredux/react-native. - Asynchronous Actions: Function-returning action creators are deprecated; use
thunkMiddlewareinstead.
New
- Middleware: Enables asynchronous actions and side effects within Redux.
- React Native: Adds support for building React Native applications with Redux.
Fixes Worth Knowing
Connectornow correctly recalculates state whenselectchanges.getStatenow returns the current state after hot reloading.Connectorvalidates thatselectreturns a plain object.
Before You Upgrade
- Update your imports to use
redux/reactorredux/react-nativewhen working with React Native. - Migrate any function-returning action creators to use
thunkMiddleware.