diff --git a/angular.json b/angular.json
index 72c8107..326b9d1 100644
--- a/angular.json
+++ b/angular.json
@@ -190,6 +190,75 @@
           "builder": "@angular-devkit/build-angular:extract-i18n"
         }
       }
+    },
+    "angular-redux-auto-dispatch-demo": {
+      "projectType": "application",
+      "schematics": {},
+      "root": "projects/angular-redux-auto-dispatch-demo",
+      "sourceRoot": "projects/angular-redux-auto-dispatch-demo/src",
+      "prefix": "app",
+      "architect": {
+        "build": {
+          "builder": "@angular-devkit/build-angular:application",
+          "options": {
+            "outputPath": "dist/angular-redux-auto-dispatch-demo",
+            "index": "projects/angular-redux-auto-dispatch-demo/src/index.html",
+            "browser": "projects/angular-redux-auto-dispatch-demo/src/main.ts",
+            "polyfills": [
+              "zone.js"
+            ],
+            "tsConfig": "projects/angular-redux-auto-dispatch-demo/tsconfig.app.json",
+            "assets": [
+              {
+                "glob": "**/*",
+                "input": "projects/angular-redux-auto-dispatch-demo/public"
+              }
+            ],
+            "styles": [
+              "projects/angular-redux-auto-dispatch-demo/src/styles.css"
+            ],
+            "scripts": []
+          },
+          "configurations": {
+            "production": {
+              "budgets": [
+                {
+                  "type": "initial",
+                  "maximumWarning": "500kB",
+                  "maximumError": "1MB"
+                },
+                {
+                  "type": "anyComponentStyle",
+                  "maximumWarning": "4kB",
+                  "maximumError": "8kB"
+                }
+              ],
+              "outputHashing": "all"
+            },
+            "development": {
+              "optimization": false,
+              "extractLicenses": false,
+              "sourceMap": true
+            }
+          },
+          "defaultConfiguration": "production"
+        },
+        "serve": {
+          "builder": "@angular-devkit/build-angular:dev-server",
+          "configurations": {
+            "production": {
+              "buildTarget": "angular-redux-auto-dispatch-demo:build:production"
+            },
+            "development": {
+              "buildTarget": "angular-redux-auto-dispatch-demo:build:development"
+            }
+          },
+          "defaultConfiguration": "development"
+        },
+        "extract-i18n": {
+          "builder": "@angular-devkit/build-angular:extract-i18n"
+        }
+      }
     }
   }
 }
diff --git a/projects/angular-redux-auto-dispatch-demo/public/favicon.ico b/projects/angular-redux-auto-dispatch-demo/public/favicon.ico
new file mode 100644
index 0000000..57614f9
Binary files /dev/null and b/projects/angular-redux-auto-dispatch-demo/public/favicon.ico differ
diff --git a/projects/angular-redux-auto-dispatch-demo/src/app/app.component.ts b/projects/angular-redux-auto-dispatch-demo/src/app/app.component.ts
new file mode 100644
index 0000000..403be28
--- /dev/null
+++ b/projects/angular-redux-auto-dispatch-demo/src/app/app.component.ts
@@ -0,0 +1,24 @@
+import { Component, effect } from '@angular/core';
+import { injectSelector, injectDispatch } from '@reduxjs/angular-redux';
+import { decrement, increment } from './store/counter-slice';
+import { RootState } from './store';
+
+@Component({
+  selector: 'app-root',
+  standalone: true,
+  template: `
+    <button (click)="dispatch(increment())">Increment</button>
+    <span>{{ count() }}</span>
+    <button (click)="dispatch(decrement())">Decrement</button>
+  `,
+})
+export class AppComponent {
+  count = injectSelector((state: RootState) => state.counter.value);
+  dispatch = injectDispatch();
+  increment = increment;
+  decrement = decrement;
+
+  _auto_increment = effect(() => {
+    this.dispatch(increment());
+  });
+}
diff --git a/projects/angular-redux-auto-dispatch-demo/src/app/app.config.ts b/projects/angular-redux-auto-dispatch-demo/src/app/app.config.ts
new file mode 100644
index 0000000..8f1092f
--- /dev/null
+++ b/projects/angular-redux-auto-dispatch-demo/src/app/app.config.ts
@@ -0,0 +1,10 @@
+import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
+import { provideRedux } from '@reduxjs/angular-redux';
+import { store } from './store';
+
+export const appConfig: ApplicationConfig = {
+  providers: [
+    provideZoneChangeDetection({ eventCoalescing: true }),
+    provideRedux({ store }),
+  ],
+};
diff --git a/projects/angular-redux-auto-dispatch-demo/src/app/store/counter-slice.ts b/projects/angular-redux-auto-dispatch-demo/src/app/store/counter-slice.ts
new file mode 100644
index 0000000..6f65718
--- /dev/null
+++ b/projects/angular-redux-auto-dispatch-demo/src/app/store/counter-slice.ts
@@ -0,0 +1,35 @@
+import { createSlice } from '@reduxjs/toolkit';
+import type { PayloadAction } from '@reduxjs/toolkit';
+
+export interface CounterState {
+  value: number;
+}
+
+const initialState: CounterState = {
+  value: 0,
+};
+
+export const counterSlice = createSlice({
+  name: 'counter',
+  initialState,
+  reducers: {
+    increment: (state) => {
+      // Redux Toolkit allows us to write "mutating" logic in reducers. It
+      // doesn't actually mutate the state because it uses the Immer library,
+      // which detects changes to a "draft state" and produces a brand new
+      // immutable state based off those changes
+      state.value += 1;
+    },
+    decrement: (state) => {
+      state.value -= 1;
+    },
+    incrementByAmount: (state, action: PayloadAction<number>) => {
+      state.value += action.payload;
+    },
+  },
+});
+
+// Action creators are generated for each case reducer function
+export const { increment, decrement, incrementByAmount } = counterSlice.actions;
+
+export default counterSlice.reducer;
diff --git a/projects/angular-redux-auto-dispatch-demo/src/app/store/index.ts b/projects/angular-redux-auto-dispatch-demo/src/app/store/index.ts
new file mode 100644
index 0000000..0e410ac
--- /dev/null
+++ b/projects/angular-redux-auto-dispatch-demo/src/app/store/index.ts
@@ -0,0 +1,13 @@
+import { configureStore } from '@reduxjs/toolkit';
+import counterReducer from './counter-slice';
+
+export const store = configureStore({
+  reducer: {
+    counter: counterReducer,
+  },
+});
+
+// Infer the `RootState` and `AppDispatch` types from the store itself
+export type RootState = ReturnType<typeof store.getState>;
+// Inferred type: {counter: CounterState}
+export type AppDispatch = typeof store.dispatch;
diff --git a/projects/angular-redux-auto-dispatch-demo/src/index.html b/projects/angular-redux-auto-dispatch-demo/src/index.html
new file mode 100644
index 0000000..e0cbc09
--- /dev/null
+++ b/projects/angular-redux-auto-dispatch-demo/src/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <title>AngularReduxDemo</title>
+    <base href="/" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <link rel="icon" type="image/x-icon" href="favicon.ico" />
+  </head>
+  <body>
+    <app-root></app-root>
+  </body>
+</html>
diff --git a/projects/angular-redux-auto-dispatch-demo/src/main.ts b/projects/angular-redux-auto-dispatch-demo/src/main.ts
new file mode 100644
index 0000000..8882c45
--- /dev/null
+++ b/projects/angular-redux-auto-dispatch-demo/src/main.ts
@@ -0,0 +1,7 @@
+import { bootstrapApplication } from '@angular/platform-browser';
+import { appConfig } from './app/app.config';
+import { AppComponent } from './app/app.component';
+
+bootstrapApplication(AppComponent, appConfig).catch((err) =>
+  console.error(err),
+);
diff --git a/projects/angular-redux-auto-dispatch-demo/src/styles.css b/projects/angular-redux-auto-dispatch-demo/src/styles.css
new file mode 100644
index 0000000..90d4ee0
--- /dev/null
+++ b/projects/angular-redux-auto-dispatch-demo/src/styles.css
@@ -0,0 +1 @@
+/* You can add global styles to this file, and also import other style files */
diff --git a/projects/angular-redux-auto-dispatch-demo/tsconfig.app.json b/projects/angular-redux-auto-dispatch-demo/tsconfig.app.json
new file mode 100644
index 0000000..e40712b
--- /dev/null
+++ b/projects/angular-redux-auto-dispatch-demo/tsconfig.app.json
@@ -0,0 +1,15 @@
+/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
+/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
+{
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../../out-tsc/app",
+    "types": []
+  },
+  "files": [
+    "src/main.ts"
+  ],
+  "include": [
+    "src/**/*.d.ts"
+  ]
+}
diff --git a/projects/angular-redux/package.json b/projects/angular-redux/package.json
index e4f88a1..d2f4975 100644
--- a/projects/angular-redux/package.json
+++ b/projects/angular-redux/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@reduxjs/angular-redux",
-  "version": "2.0.0",
+  "version": "2.0.1",
   "keywords": [
     "angular",
     "redux"
diff --git a/projects/angular-redux/src/lib/inject-selector.ts b/projects/angular-redux/src/lib/inject-selector.ts
index a5c3603..d84f4ae 100644
--- a/projects/angular-redux/src/lib/inject-selector.ts
+++ b/projects/angular-redux/src/lib/inject-selector.ts
@@ -91,13 +91,12 @@ export function createSelectorInjection(): InjectSelector {
 
     const { store, subscription } = reduxContext;
 
-    const selectedState = linkedSignal(() => selector(store.getState()));
+    const selectedState = linkedSignal(() => selector(store.getState()), {
+      equal: equalityFn,
+    });
 
     const unsubscribe = subscription.addNestedSub(() => {
       const data = selector(store.getState());
-      if (equalityFn(selectedState(), data)) {
-        return;
-      }
 
       selectedState.set(data);
     });
diff --git a/yarn.lock b/yarn.lock
index 29086b6..7c6aee5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9322,13 +9322,13 @@ __metadata:
   linkType: hard
 
 "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3":
-  version: 7.0.3
-  resolution: "cross-spawn@npm:7.0.3"
+  version: 7.0.6
+  resolution: "cross-spawn@npm:7.0.6"
   dependencies:
     path-key: "npm:^3.1.0"
     shebang-command: "npm:^2.0.0"
     which: "npm:^2.0.1"
-  checksum: 10/e1a13869d2f57d974de0d9ef7acbf69dc6937db20b918525a01dacb5032129bd552d290d886d981e99f1b624cb03657084cc87bd40f115c07ecf376821c729ce
+  checksum: 10/0d52657d7ae36eb130999dffff1168ec348687b48dd38e2ff59992ed916c88d328cf1d07ff4a4a10bc78de5e1c23f04b306d569e42f7a2293915c081e4dfee86
   languageName: node
   linkType: hard
 
@@ -12312,8 +12312,8 @@ __metadata:
   linkType: hard
 
 "http-proxy-middleware@npm:^2.0.3":
-  version: 2.0.6
-  resolution: "http-proxy-middleware@npm:2.0.6"
+  version: 2.0.7
+  resolution: "http-proxy-middleware@npm:2.0.7"
   dependencies:
     "@types/http-proxy": "npm:^1.17.8"
     http-proxy: "npm:^1.18.1"
@@ -12325,7 +12325,7 @@ __metadata:
   peerDependenciesMeta:
     "@types/express":
       optional: true
-  checksum: 10/768e7ae5a422bbf4b866b64105b4c2d1f468916b7b0e9c96750551c7732383069b411aa7753eb7b34eab113e4f77fb770122cb7fb9c8ec87d138d5ddaafda891
+  checksum: 10/4a51bf612b752ad945701995c1c029e9501c97e7224c0cf3f8bf6d48d172d6a8f2b57c20fec469534fdcac3aa8a6f332224a33c6b0d7f387aa2cfff9b67216fd
   languageName: node
   linkType: hard
 
@@ -15658,11 +15658,11 @@ __metadata:
   linkType: hard
 
 "nanoid@npm:^3.3.7":
-  version: 3.3.7
-  resolution: "nanoid@npm:3.3.7"
+  version: 3.3.8
+  resolution: "nanoid@npm:3.3.8"
   bin:
     nanoid: bin/nanoid.cjs
-  checksum: 10/ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679
+  checksum: 10/2d1766606cf0d6f47b6f0fdab91761bb81609b2e3d367027aff45e6ee7006f660fb7e7781f4a34799fe6734f1268eeed2e37a5fdee809ade0c2d4eb11b0f9c40
   languageName: node
   linkType: hard
 
