Change Log

  • 28.1.0 Minor non-breaking enhancement to createRouteBundle to more easily allow dynamic replacement of routes. Adding doReplaceRoutes action creator and explicitly storing cached routes and routeMatcher in a reducer so they can be easily replaced.

  • 28.0.3 No API changes.

    • Replaces all uses of self with globalThis.

    • Explicitly pre-binds raf and ric to globalThis to prevents bug otherwise caused by Parcel 2 compiler optimization.

    • Adds prettier and fixpack as cleanup steps.

  • 28.0.2 npm 7 deprecated prepublish, so last publish didn't build first. This fixes that.

  • 28.0.1 Super minor fix. Some bundlers will remove context for requestIdleCallback and requestAnimationFrame so they end up being called as a method of the main redux-bundler export. This can cause "ILLEGAL invocation" errors when using them. This change simply wraps them in a fn so they're always called on self.

  • 28.0.0 No API changes, just internal change to how reactors are dispatched. Due to potential behavioral impact to apps this is a major version bump. Details: to keep perf good we fire reactors on a requestIdleCallback we were firing the result even if by the time it fired, state had changed. The changes in this release should make that scenario impossible.

  • 27.0.2 Fixed handling of selectRoute if there was no match. Previously, this would error, now it returns null. Previously selectRouteParams would also error, now it returns {}. Updated dependencies to eliminate some npm audit security warnings. Updated doc table of contents to fix broken links (due to change in gitbook). Removed standard and prettier-standard in lieu of vanilla eslint. Removed a couple of unused deps (oops).

  • 27.0.1 Fix build issue for newly extracted "extra" bundles.

  • 27.0.0 Separated a few non-core items into their own exports must be imported independently: redux-bundler/dist/create-async-resource-bundle, redux-bundler/dist/create-geolocation-bundle, redux-bundler/dist/online-bundle. This just removes stuff that is often unused from main build.

  • 26.1.0 Added reactorPermissionCheck option to createReactorBundle to better support building rate-limiting or developer tools for reactors. Also, added better docs for createReactorBundle options.

  • 26.0.0

    • Removed logIdle option from createDebugBundle and added support for actionFilter function instead. Thanks to @malbonesi for the idea of making this more flexible.

    • Added store.destroy() method. Bundle .init() methods can optionally return a "cleanup" function. This means you can have an architecture that loads/unloads entire apps within the same document and lets you do cleanup like removing event listeners, etc. Thanks to @rudionrails

  • 25.0.0

    • Re-worked debug bundle. It is now created programmatically so it can be configured: createDebugBundle()

      • Now works in node.js (#31)

      • Big thanks to @aulneau for general idea. Unfortunately wasn't quite able to merge his PR as it was and wanted to do some other related changes as well. But credit is due, for sure. Thanks!

      • Fix logging difference when activated later: (#24)

    • Updates querystringify and create-selector to 2.1.1 (#55)

    • Fixes annoying "missing sourcemap" warning when building with parcel.

  • 24.0.0

    • Breaking change to createCacheBundle. It now takes an options object as an argument instead of just a cache function. This allows us to pass an enabled option to enable its use in node.js (it's still off by default in node). Also adds support for passing a logger function as an option. It will be called with a message describing what was persisted and why.

    • Fixes persist action support for bundles added later with integrateBundles. Previously the map of actions to reducers to persist was only created up front. It is now re-generated after other bundles are integrated.

    • Added, tests to demonstrate these changes.

  • 23.2.0 Adds option for cancelIdleWhenDone to createReactorBundle. By default, if redux-bundler is running in node.js and there are no pending reactions, the idle dispatcher stops firing. This is to support normal SSR use-cases where you may want to wait for the store to be "done" doing any remaining work, then fire the done callback. However, for use cases where you're wanting to use redux-bundler as a long-lived state engine in node.js it was problematic to have it stop idling. The default behavior is unchanged, but no if you pass cancelIdleWhenDone: false as an option, it will keep running indefinitely.

  • 23.1.2 Adds setTimeout to restore scroll position util. This buys UI libs a chance to update the DOM and makes scroll position restoration work in some cases where it wasn't previously.

  • 23.1.1 Updates create-selector to 4.0.3 to improve selector resolution perf. Updates a few dev dependencies to latest versions.

  • 23.1.0 Adds maintainScrollPosition option to doUpdateUrl() (thanks @abuinitski). Minor tweak to explicitly check for null instead of implied type in order to support storing 0 as the data in createAsyncResourceBundle() (thanks @layflags).

  • 23.0.2 Fixes issues with scroll restoration not working in all cases when using the url bundle.

  • 23.0.1 Use --no-compress instead of --compress=false. It was not being parsed properly by the updated version of microbundle.

  • 23.0.0

    • Added support for passing a REPLACE_STATE action to replace entire state of store. Because this could be a breaking change if you already have such an action type, I'm doing a major version bump for this.

    • Updated npm deps to mitigate security advisories.

  • 22.2.0

    • Added selectRoutes to enable retrieving the entire routes object.

    • Merged refactored createAsyncResourceBundle (thanks @aaronmccall) to enable better bundle composition.

  • 22.1.0 - Added selectRouteMatcher to enable retrieving the function used to match urls to routes.

  • 22.0.0 - Upgraded to redux v4.0.0.

  • 21.2.2 - Fixed staleAge -> staleAfter bug in geolocation bundle and fix starting state from online bundle should come from navigator.onLine (thanks @layflags!). Minor docs update (thanks @JayChetty).

  • 21.2.1 - Super minor tweak to appTimeBundle to make it possible to overwrite Date.now() after the app has started which can be useful to enable speeding up time for automated testing.

  • 21.2.0 - Added support for hash-based routing by passing in options object to createRouteBundle (thanks [@olizilla]!).

  • 21.1.0 - Added support for Redux Dev Tools (thanks @aulneau!). Added CI. Added some notes for React Native users to docs (thanks @quarkcore).

  • 21.0.3 - Fix for bug in required options check in createAsyncResourceBundle (thanks @greggb). Minor simplification/cleanup of custom-apply-middleware.js. (this was supposed to be 21.0.2 but accidentally got published as 21.0.3 :facepalm:)

  • 21.0.1 - Build with compress=false to avoid redux console warning and improve debugging experience.

  • 21.0.0 - Adding scroll restoration handling. (many browsers already handle this well by default, but not FF or IE 11). This handles scroll position internally in the url bundle if used, it also exports the scroll restoration helper functions so that they can be used directly as well.

  • 20.0.0 - Adding documentation site, wrote lots of docs and made mostly internal changes and bug fixes, can cause breakage if depending on action type names, or if using composeBundlesRaw() to handpick what's included.

    • Changed all action types to be past-tense (so they don't sound like RPC calls). Action types should describe things that happened, not sound like they're causing things to happen. So in asyncCount instead of START, SUCCESS, ERROR it's now STARTED, FINISHED, FAILED. In URL bundle UPDATE_URL -> URL_UPDATED. In geolocation bundle REQUEST_GEOLOCATION_X -> GEOLOCATION_REQUEST_X.

    • All included bundles that require instantiation with a config are now named createXBundle for consistency. This includes createGeolocationBundle, createReactorBundle, createCacheBundle.

    • Added lots of documentation to readme several of the included bundles.

    • Significant changes to createAsyncResourceBundle:

      • actionBaseType is now the noun, such as USER, from this we build FETCH_USER_STARTED, USER_EXPIRED, etc.

      • doMarkXAsStale is now doMarkXAsOutdated.

      • Action type names updated to be past tense: MAKE_STALE -> X_INVALIDATED

      • Added doClearX action creator and reducer case.

      • Now takes 3 time-related settings: staleAfter, retryAfter, and expireAfter.

      • Support for expireAfter was added, the X_EXPIRED action will be dispatched clearing the state.

    • Removed wonky batch dispatch quasi-middleware.

  • 19.0.1 - Minor fix for WebWorkers (updating redux-persist-middleware dep).

  • 19.0.0 - Externalized caching lib as its own library called money-clip and the caching bundle now uses redux-persist-middleware to generate it's persistance middleware. Nothing huge changes other than importing caching lib from outside of bundler. I've updated redux-bundler-example for sample usage of caching bundle with money-clip. Renamed cacheBundle -> createCacheBundle since it needs to be configured to be used. Removed unused npm-watch dev dependency.

  • 18.0.0 - Renamed selectCurrentComponent -> selectRoute in create route bundle.

  • 17.1.1 - Fix bug where requestAnimationFrame was expected to exist when running inside a worker.

  • 17.1.0 - Export * from redux in index.

  • 17.0.1 - Fix to ensure publishing/mapping to correct build files :facepalm:.

  • 17.0.0 - Switched to build with microbundle. Should address issues #5, #8. No longer pulling in redux-bundler version into build.

  • 16.1.1 - Ensure all output from selectors of included bundles is serializable. selectUrlObject() in the url bundle was returning a URL object instance. Now it just returns a plain object with all string properties from the URL object. Did this as bug fix release because it was always intended this way. In theory it could could be a breaking change, but odds are miniscule. Only if someone were doing selectUrlObject then treating its resulting searchParams prop as a URLSearchParams object and calling its methods instead of using one of the selectors that already exist for accessing query params.

  • 16.1.0 - Added .action() method to store for calling an action creator by name (useful when wanting to proxy all actions to another object, such as a web worker)

  • 16.0.0 - First public release

Last updated