diff --git a/enterprise/frontend/src/embedding-sdk/store/index.ts b/enterprise/frontend/src/embedding-sdk/store/index.ts
index a61313c9f4d3e7c26fd3597fac812a90a04a83bc..1a23e3cb8accc0341c84a4fb072cea4d9f535c83 100644
--- a/enterprise/frontend/src/embedding-sdk/store/index.ts
+++ b/enterprise/frontend/src/embedding-sdk/store/index.ts
@@ -8,13 +8,13 @@ import type { TypedUseSelectorHook } from "react-redux";
 import { useSelector, useDispatch } from "react-redux";
 
 import type { SdkStoreState } from "embedding-sdk/store/types";
-import reducers from "metabase/reducers-main";
+import { mainReducers } from "metabase/reducers-main";
 import { getStore } from "metabase/store";
 
 import { sdk } from "./reducer";
 
 export const sdkReducers = {
-  ...reducers,
+  ...mainReducers,
   sdk,
 } as unknown as Record<string, Reducer>;
 
diff --git a/frontend/src/metabase/app-embed.js b/frontend/src/metabase/app-embed.js
index 71e1ef30eccd035a53fc65aaafb04faef702408b..12a0ca9c2539452402b862274df493fef3179acf 100644
--- a/frontend/src/metabase/app-embed.js
+++ b/frontend/src/metabase/app-embed.js
@@ -6,10 +6,10 @@
 import { isWithinIframe } from "metabase/lib/dom";
 
 import { init } from "./app";
-import reducers from "./reducers-public";
+import { publicReducers } from "./reducers-public";
 import { getRoutes } from "./routes-embed";
 
-init(reducers, getRoutes, () => {
+init(publicReducers, getRoutes, () => {
   if (isWithinIframe()) {
     document.body.style.backgroundColor = "transparent";
   }
diff --git a/frontend/src/metabase/app-main.js b/frontend/src/metabase/app-main.js
index 3a8cbd58a503786d9863ae8dd37e53c0f81ff32c..58034ccbd71f217613ed367401e7315e8fe2df3a 100644
--- a/frontend/src/metabase/app-main.js
+++ b/frontend/src/metabase/app-main.js
@@ -7,7 +7,7 @@ import _ from "underscore";
 
 import { init } from "metabase/app";
 import api from "metabase/lib/api";
-import reducers from "metabase/reducers-main";
+import { mainReducers } from "metabase/reducers-main";
 import { setErrorPage } from "metabase/redux/app";
 import { clearCurrentUser } from "metabase/redux/user";
 import { getRoutes } from "metabase/routes";
@@ -21,7 +21,7 @@ const NOT_AUTHORIZED_TRIGGERS = [
   /\/api\/dataset$/,
 ];
 
-init(reducers, getRoutes, store => {
+init(mainReducers, getRoutes, store => {
   // received a 401 response
   api.on("401", url => {
     if (url.indexOf("/api/user/current") >= 0) {
diff --git a/frontend/src/metabase/app-public.js b/frontend/src/metabase/app-public.js
index 81874d1a860b13f58f42210237963d522b407265..a34bc882f2b519df847c7345839ea5eb3c1cac45 100644
--- a/frontend/src/metabase/app-public.js
+++ b/frontend/src/metabase/app-public.js
@@ -1,5 +1,5 @@
 import { init } from "./app";
-import reducers from "./reducers-public";
+import { publicReducers } from "./reducers-public";
 import { getRoutes } from "./routes-public";
 
-init(reducers, getRoutes, () => {});
+init(publicReducers, getRoutes, () => {});
diff --git a/frontend/src/metabase/dashboard/actions/cards.unit.spec.ts b/frontend/src/metabase/dashboard/actions/cards.unit.spec.ts
index 23cc3ab818d40c9ac1dce25075dd0a88f72a0615..d4a1854db4420d57ba711e33030c4143625c4efb 100644
--- a/frontend/src/metabase/dashboard/actions/cards.unit.spec.ts
+++ b/frontend/src/metabase/dashboard/actions/cards.unit.spec.ts
@@ -10,7 +10,7 @@ import {
 } from "__support__/server-mocks";
 import { Api } from "metabase/api";
 import { checkNotNull } from "metabase/lib/types";
-import mainReducers from "metabase/reducers-main";
+import { mainReducers } from "metabase/reducers-main";
 import { CardApi } from "metabase/services";
 import type {
   CardId,
diff --git a/frontend/src/metabase/reducers-common.js b/frontend/src/metabase/reducers-common.ts
similarity index 74%
rename from frontend/src/metabase/reducers-common.js
rename to frontend/src/metabase/reducers-common.ts
index dc8f27447c45a82786df4bac7eeee9a161e4e4ae..768155cb08f3b15d9ac3fc608c79c371308cd6a2 100644
--- a/frontend/src/metabase/reducers-common.js
+++ b/frontend/src/metabase/reducers-common.ts
@@ -1,6 +1,10 @@
 // Reducers shared between "main" and "public" apps
 
+import { combineReducers } from "@reduxjs/toolkit";
+
 import { Api } from "metabase/api";
+import { dashboardReducers as dashboard } from "metabase/dashboard/reducers";
+import * as parameters from "metabase/parameters/reducers";
 import app from "metabase/redux/app";
 import { reducer as auth } from "metabase/redux/auth";
 import embed from "metabase/redux/embed";
@@ -12,7 +16,7 @@ import undo from "metabase/redux/undo";
 import upload from "metabase/redux/uploads";
 import { currentUser } from "metabase/redux/user";
 
-export default {
+export const commonReducers = {
   // global reducers
   app,
   embed,
@@ -26,4 +30,6 @@ export default {
   auth,
   [Api.reducerPath]: Api.reducer,
   modal,
+  dashboard,
+  parameters: combineReducers(parameters),
 };
diff --git a/frontend/src/metabase/reducers-main.js b/frontend/src/metabase/reducers-main.ts
similarity index 75%
rename from frontend/src/metabase/reducers-main.js
rename to frontend/src/metabase/reducers-main.ts
index 535d5305994a63f3f4809846427e003391e19c5b..33c19c02495badc160c194048d11034dda35d2b2 100644
--- a/frontend/src/metabase/reducers-main.js
+++ b/frontend/src/metabase/reducers-main.ts
@@ -4,9 +4,7 @@ import { combineReducers } from "@reduxjs/toolkit";
 
 import admin from "metabase/admin/admin";
 import alert from "metabase/alert/alert";
-import { dashboardReducers as dashboard } from "metabase/dashboard/reducers";
 import * as metabot from "metabase/metabot/reducers";
-import * as parameters from "metabase/parameters/reducers";
 import { PLUGIN_REDUCERS } from "metabase/plugins";
 import * as pulse from "metabase/pulse/reducers";
 import * as qb from "metabase/query_builder/reducers";
@@ -14,15 +12,13 @@ import revisions from "metabase/redux/revisions";
 import reference from "metabase/reference/reference";
 import { reducer as setup } from "metabase/setup/reducers";
 
-import commonReducers from "./reducers-common";
+import { commonReducers } from "./reducers-common";
 
-export default {
+export const mainReducers = {
   ...commonReducers,
 
   // main app reducers
   alert,
-  dashboard,
-  parameters: combineReducers(parameters),
   metabot: combineReducers(metabot),
   pulse: combineReducers(pulse),
   qb: combineReducers(qb),
diff --git a/frontend/src/metabase/reducers-public.js b/frontend/src/metabase/reducers-public.js
deleted file mode 100644
index 6533b5379a7f9d7e0790b58271f30c8fbf2356f6..0000000000000000000000000000000000000000
--- a/frontend/src/metabase/reducers-public.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Reducers needed for public questions and dashboards
-import { combineReducers } from "@reduxjs/toolkit";
-
-import { dashboardReducers as dashboard } from "metabase/dashboard/reducers";
-import * as parameters from "metabase/parameters/reducers";
-
-import commonReducers from "./reducers-common";
-
-export default {
-  ...commonReducers,
-  dashboard,
-  parameters: combineReducers(parameters),
-};
diff --git a/frontend/src/metabase/reducers-public.ts b/frontend/src/metabase/reducers-public.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3591824726e20beb2f0fb0af782bffcb5cff66d0
--- /dev/null
+++ b/frontend/src/metabase/reducers-public.ts
@@ -0,0 +1,7 @@
+// Reducers needed for public questions and dashboards
+
+import { commonReducers } from "./reducers-common";
+
+export const publicReducers = {
+  ...commonReducers,
+};
diff --git a/frontend/test/__support__/storybook.tsx b/frontend/test/__support__/storybook.tsx
index 2f28986ef6f5bebc0026742b513b8e1c6438d967..ca526fb014922c390661b428f7a6a4e8b6167995 100644
--- a/frontend/test/__support__/storybook.tsx
+++ b/frontend/test/__support__/storybook.tsx
@@ -3,7 +3,7 @@ import { Provider } from "react-redux";
 
 import type { MetabaseTheme } from "embedding-sdk";
 import { SdkThemeProvider } from "embedding-sdk/components/private/SdkThemeProvider";
-import mainReducers from "metabase/reducers-main";
+import { mainReducers } from "metabase/reducers-main";
 import type { MantineThemeOverride } from "metabase/ui";
 import { createMockSettingsState } from "metabase-types/store/mocks";
 
diff --git a/frontend/test/__support__/ui.tsx b/frontend/test/__support__/ui.tsx
index 4905d91b7a0dfe10166ab76b409fc8d311b8190f..a8fd7ad8c13da3ff67e36941531ba57768279d99 100644
--- a/frontend/test/__support__/ui.tsx
+++ b/frontend/test/__support__/ui.tsx
@@ -22,8 +22,8 @@ import { createMockSdkState } from "embedding-sdk/test/mocks/state";
 import type { SDKConfig } from "embedding-sdk/types";
 import { Api } from "metabase/api";
 import { UndoListing } from "metabase/containers/UndoListing";
-import mainReducers from "metabase/reducers-main";
-import publicReducers from "metabase/reducers-public";
+import { mainReducers } from "metabase/reducers-main";
+import { publicReducers } from "metabase/reducers-public";
 import { EmotionCacheProvider } from "metabase/styled-components/components/EmotionCacheProvider";
 import { ThemeProvider } from "metabase/ui";
 import type { State } from "metabase-types/store";