diff --git a/pages/_app.tsx b/pages/_app.tsx
index 570dbf6ec1e87a472fec088079810ca058673a9c..da35a0c30130c1a7521e4f531cd9376ee61e43b4 100644
--- a/pages/_app.tsx
+++ b/pages/_app.tsx
@@ -3,6 +3,9 @@ import type { AppProps } from 'next/app';
 import '@/styles/index.css';
 import { useEffect } from 'react';
 import { store } from '@/redux/store';
+import { initializeErrorReporting } from '@/utils/error-report/errorReporting';
+
+initializeErrorReporting();
 
 const MyApp = ({ Component, pageProps }: AppProps): JSX.Element => {
   const project = store.getState().project.data;
diff --git a/src/redux/middlewares/error.middleware.test.ts b/src/redux/middlewares/error.middleware.test.ts
index 7662714e2f08a2dccd3a6329db08716d0103bc2d..c9f3d022e742d839a7abc1f91e2215f96da0d68b 100644
--- a/src/redux/middlewares/error.middleware.test.ts
+++ b/src/redux/middlewares/error.middleware.test.ts
@@ -1,11 +1,13 @@
-import { showToast } from '@/utils/showToast';
+import { handleError } from '@/utils/error-report/errorReporting';
 import { errorMiddlewareListener } from './error.middleware';
 
-jest.mock('../../utils/showToast', () => ({
-  showToast: jest.fn(),
+jest.mock('../../utils/error-report/errorReporting', () => ({
+  handleError: jest.fn(),
 }));
 
 describe('errorMiddlewareListener', () => {
+  // eslint-disable-next-line no-console
+
   beforeEach(() => {
     jest.clearAllMocks();
   });
@@ -19,9 +21,12 @@ describe('errorMiddlewareListener', () => {
         rejectedWithValue: true,
         requestStatus: 'rejected',
       },
+      error: {
+        code: 'Error 2',
+      },
     };
     await errorMiddlewareListener(action);
-    expect(showToast).toHaveBeenCalledWith({ type: 'error', message: 'Error message' });
+    expect(handleError).toHaveBeenCalledWith({ code: 'Error 2' });
   });
 
   it('should show toast with unknown error when action is rejected without value', async () => {
@@ -33,12 +38,12 @@ describe('errorMiddlewareListener', () => {
         rejectedWithValue: true,
         requestStatus: 'rejected',
       },
+      error: {
+        code: 'Error 3',
+      },
     };
     await errorMiddlewareListener(action);
-    expect(showToast).toHaveBeenCalledWith({
-      type: 'error',
-      message: 'An unknown error occurred. Please try again later.',
-    });
+    expect(handleError).toHaveBeenCalledWith({ code: 'Error 3' });
   });
 
   it('should not show toast when action is not rejected', async () => {
@@ -51,7 +56,7 @@ describe('errorMiddlewareListener', () => {
       },
     };
     await errorMiddlewareListener(action);
-    expect(showToast).not.toHaveBeenCalled();
+    expect(handleError).not.toHaveBeenCalled();
   });
 
   it('should show toast with unknown error when action payload is not a string', async () => {
@@ -63,12 +68,13 @@ describe('errorMiddlewareListener', () => {
         rejectedWithValue: true,
         requestStatus: 'rejected',
       },
+      error: {
+        code: 'ERROR',
+        message: 'Error message',
+      },
     };
     await errorMiddlewareListener(action);
-    expect(showToast).toHaveBeenCalledWith({
-      type: 'error',
-      message: 'An unknown error occurred. Please try again later.',
-    });
+    expect(handleError).toHaveBeenCalledWith({ code: 'ERROR', message: 'Error message' });
   });
 
   it('should show toast with custom message when action payload is a string', async () => {
@@ -80,8 +86,11 @@ describe('errorMiddlewareListener', () => {
         rejectedWithValue: true,
         requestStatus: 'rejected',
       },
+      error: {
+        code: 'ERROR',
+      },
     };
     await errorMiddlewareListener(action);
-    expect(showToast).toHaveBeenCalledWith({ type: 'error', message: 'Failed to fetch' });
+    expect(handleError).toHaveBeenCalledWith({ code: 'ERROR' });
   });
 });
diff --git a/src/redux/middlewares/error.middleware.ts b/src/redux/middlewares/error.middleware.ts
index 0ba6a0f75452822908c449ba4d3dcb0ac59dddd9..906ddfc0e61c9392313bb7495057e04fcff9d211 100644
--- a/src/redux/middlewares/error.middleware.ts
+++ b/src/redux/middlewares/error.middleware.ts
@@ -1,30 +1,14 @@
 import type { AppStartListening } from '@/redux/store';
-import { UNKNOWN_ERROR } from '@/utils/getErrorMessage/getErrorMessage.constants';
-import { showToast } from '@/utils/showToast';
-import {
-  Action,
-  createListenerMiddleware,
-  isRejected,
-  isRejectedWithValue,
-} from '@reduxjs/toolkit';
+import { Action, createListenerMiddleware, isRejected } from '@reduxjs/toolkit';
+import { handleError } from '@/utils/error-report/errorReporting';
 
 export const errorListenerMiddleware = createListenerMiddleware();
 
 const startListening = errorListenerMiddleware.startListening as AppStartListening;
 
 export const errorMiddlewareListener = async (action: Action): Promise<void> => {
-  if (isRejectedWithValue(action)) {
-    let message: string;
-    if (typeof action.payload === 'string') {
-      message = action.payload;
-    } else {
-      message = UNKNOWN_ERROR;
-    }
-
-    showToast({
-      type: 'error',
-      message,
-    });
+  if (isRejected(action)) {
+    handleError(action.error);
   }
 };