diff --git a/src/Squawk.ts b/src/Squawk.ts index 8743d6f..0355076 100644 --- a/src/Squawk.ts +++ b/src/Squawk.ts @@ -98,6 +98,10 @@ export default function createStore(initialState: Required, useReduxDevToo /** Ensure that subscribers are invoked only once */ const invokedSubscribers = new Set(); + + // Cache the state locally so we don't recreate a copy of it for every subscriber + const currentState = globalState.get(); + const reduceEach = (subscriber: Callback) => { // Check if subscriber has been invoked if (invokedSubscribers.has(subscriber)) { @@ -107,7 +111,7 @@ export default function createStore(initialState: Required, useReduxDevToo // Add the subscriber to the list of invoked subscribers invokedSubscribers.add(subscriber); // and invoke it - subscriber(globalState.get()); + subscriber(currentState); }; // Call the reducer for each list in subscribers