diff --git a/packages/desktop-client/src/components/App.tsx b/packages/desktop-client/src/components/App.tsx
index 74000f5d37c..de4b47560b1 100644
--- a/packages/desktop-client/src/components/App.tsx
+++ b/packages/desktop-client/src/components/App.tsx
@@ -13,12 +13,11 @@ import { BrowserRouter } from 'react-router-dom';
import {
addNotification,
- closeBudget,
- loadBudget,
loadGlobalPrefs,
signOut,
} from 'loot-core/client/actions';
import { setAppState, sync } from 'loot-core/client/app/appSlice';
+import { closeBudget, loadBudget } from 'loot-core/client/budgets/budgetsSlice';
import { SpreadsheetProvider } from 'loot-core/client/SpreadsheetProvider';
import * as Platform from 'loot-core/src/client/platform';
import {
@@ -95,7 +94,7 @@ function AppInner() {
);
const budgetId = await send('get-last-opened-backup');
if (budgetId) {
- await dispatch(loadBudget(budgetId));
+ await dispatch(loadBudget({ id: budgetId }));
// Check to see if this file has been remotely deleted (but
// don't block on this in case they are offline or something)
diff --git a/packages/desktop-client/src/components/LoggedInUser.tsx b/packages/desktop-client/src/components/LoggedInUser.tsx
index 73dc30557a4..de5d12dfd2c 100644
--- a/packages/desktop-client/src/components/LoggedInUser.tsx
+++ b/packages/desktop-client/src/components/LoggedInUser.tsx
@@ -2,7 +2,8 @@ import React, { useState, useEffect, useRef, type CSSProperties } from 'react';
import { Trans, useTranslation } from 'react-i18next';
import { useLocation } from 'react-router-dom';
-import { closeBudget, getUserData, signOut } from 'loot-core/client/actions';
+import { getUserData, signOut } from 'loot-core/client/actions';
+import { closeBudget } from 'loot-core/client/budgets/budgetsSlice';
import { listen } from 'loot-core/src/platform/client/fetch';
import { type RemoteFile, type SyncedLocalFile } from 'loot-core/types/file';
import { type TransObjectLiteral } from 'loot-core/types/util';
diff --git a/packages/desktop-client/src/components/manager/BudgetList.tsx b/packages/desktop-client/src/components/manager/BudgetList.tsx
index 860a4db0c7b..ce015f9fcf2 100644
--- a/packages/desktop-client/src/components/manager/BudgetList.tsx
+++ b/packages/desktop-client/src/components/manager/BudgetList.tsx
@@ -7,16 +7,15 @@ import React, {
} from 'react';
import { Trans, useTranslation } from 'react-i18next';
+import { getUserData, pushModal } from 'loot-core/client/actions';
import {
closeAndDownloadBudget,
closeAndLoadBudget,
createBudget,
downloadBudget,
- getUserData,
loadAllFiles,
loadBudget,
- pushModal,
-} from 'loot-core/client/actions';
+} from 'loot-core/client/budgets/budgetsSlice';
import {
isElectron,
isNonProductionEnvironment,
@@ -559,14 +558,14 @@ export function BudgetList({ showHeader = true, quickSwitchMode = false }) {
if (!id) {
if (isRemoteFile) {
- await dispatch(downloadBudget(file.cloudFileId));
+ await dispatch(downloadBudget({ cloudFileId: file.cloudFileId }));
} else {
- await dispatch(loadBudget(file.id));
+ await dispatch(loadBudget({ id: file.id }));
}
} else if (!isRemoteFile && file.id !== id) {
- await dispatch(closeAndLoadBudget(file.id));
+ await dispatch(closeAndLoadBudget({ fileId: file.id }));
} else if (isRemoteFile) {
- await dispatch(closeAndDownloadBudget(file.cloudFileId));
+ await dispatch(closeAndDownloadBudget({ cloudFileId: file.cloudFileId }));
}
};
diff --git a/packages/desktop-client/src/components/manager/ConfigServer.tsx b/packages/desktop-client/src/components/manager/ConfigServer.tsx
index 107676551bb..e8c8afe3f24 100644
--- a/packages/desktop-client/src/components/manager/ConfigServer.tsx
+++ b/packages/desktop-client/src/components/manager/ConfigServer.tsx
@@ -2,7 +2,8 @@
import React, { useState, useEffect, useCallback } from 'react';
import { Trans, useTranslation } from 'react-i18next';
-import { createBudget, loggedIn, signOut } from 'loot-core/client/actions';
+import { loggedIn, signOut } from 'loot-core/client/actions';
+import { createBudget } from 'loot-core/client/budgets/budgetsSlice';
import {
isNonProductionEnvironment,
isElectron,
diff --git a/packages/desktop-client/src/components/manager/WelcomeScreen.tsx b/packages/desktop-client/src/components/manager/WelcomeScreen.tsx
index 7586402a78b..74aed82b2bd 100644
--- a/packages/desktop-client/src/components/manager/WelcomeScreen.tsx
+++ b/packages/desktop-client/src/components/manager/WelcomeScreen.tsx
@@ -1,7 +1,8 @@
import React from 'react';
import { Trans, useTranslation } from 'react-i18next';
-import { createBudget, pushModal } from 'loot-core/client/actions';
+import { pushModal } from 'loot-core/client/actions';
+import { createBudget } from 'loot-core/client/budgets/budgetsSlice';
import { useDispatch } from '../../redux';
import { styles, theme } from '../../style';
@@ -95,7 +96,7 @@ export function WelcomeScreen() {
diff --git a/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx b/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx
index d78561dbfd5..dfbbaef6a45 100644
--- a/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx
+++ b/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx
@@ -2,7 +2,7 @@
import React, { useState } from 'react';
import { Trans, useTranslation } from 'react-i18next';
-import { createBudget } from 'loot-core/src/client/actions/budgets';
+import { createBudget } from 'loot-core/client/budgets/budgetsSlice';
import { send } from 'loot-core/src/platform/client/fetch';
import { useNavigate } from '../../../hooks/useNavigate';
diff --git a/packages/desktop-client/src/components/modals/CreateEncryptionKeyModal.tsx b/packages/desktop-client/src/components/modals/CreateEncryptionKeyModal.tsx
index f13fdd8da87..03330684866 100644
--- a/packages/desktop-client/src/components/modals/CreateEncryptionKeyModal.tsx
+++ b/packages/desktop-client/src/components/modals/CreateEncryptionKeyModal.tsx
@@ -5,8 +5,9 @@ import { useTranslation, Trans } from 'react-i18next';
import { css } from '@emotion/css';
-import { loadAllFiles, loadGlobalPrefs } from 'loot-core/client/actions';
+import { loadGlobalPrefs } from 'loot-core/client/actions';
import { sync } from 'loot-core/client/app/appSlice';
+import { loadAllFiles } from 'loot-core/client/budgets/budgetsSlice';
import { send } from 'loot-core/src/platform/client/fetch';
import { getCreateKeyError } from 'loot-core/src/shared/errors';
diff --git a/packages/desktop-client/src/components/modals/LoadBackupModal.tsx b/packages/desktop-client/src/components/modals/LoadBackupModal.tsx
index 19bbb62fac2..1e1fb10d5d3 100644
--- a/packages/desktop-client/src/components/modals/LoadBackupModal.tsx
+++ b/packages/desktop-client/src/components/modals/LoadBackupModal.tsx
@@ -1,7 +1,7 @@
import React, { useState, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
-import { loadBackup, makeBackup } from 'loot-core/client/actions';
+import { loadBackup, makeBackup } from 'loot-core/client/budgets/budgetsSlice';
import { type Backup } from 'loot-core/server/backups';
import { send, listen, unlisten } from 'loot-core/src/platform/client/fetch';
@@ -106,7 +106,12 @@ export function LoadBackupModal({