diff --git a/packages/loot-core/src/client/data-hooks/accounts.tsx b/packages/loot-core/src/client/data-hooks/accounts.tsx
index c19b2c4e6c38493c97226cf44717bce5bad435fd..147e545c6f8e666ef87e81c70f3875be6d12dc7d 100644
--- a/packages/loot-core/src/client/data-hooks/accounts.tsx
+++ b/packages/loot-core/src/client/data-hooks/accounts.tsx
@@ -4,7 +4,7 @@ import q from '../query-helpers';
 import { useLiveQuery } from '../query-hooks';
 import { getAccountsById } from '../reducers/queries';
 
-export function useAccounts() {
+function useAccounts() {
   return useLiveQuery(() => q('accounts').select('*'), []);
 }
 
diff --git a/packages/loot-core/src/client/data-hooks/payees.tsx b/packages/loot-core/src/client/data-hooks/payees.tsx
index c06ba9a2e3960a3f35e3ca0107ad5325e4a77322..2adba3bb71f0203b72953de837acaaffc0371d02 100644
--- a/packages/loot-core/src/client/data-hooks/payees.tsx
+++ b/packages/loot-core/src/client/data-hooks/payees.tsx
@@ -4,7 +4,7 @@ import q from '../query-helpers';
 import { useLiveQuery } from '../query-hooks';
 import { getPayeesById } from '../reducers/queries';
 
-export function usePayees() {
+function usePayees() {
   return useLiveQuery(() => q('payees').select('*'), []);
 }
 
diff --git a/packages/loot-core/src/client/query-helpers.ts b/packages/loot-core/src/client/query-helpers.ts
index 4416d3851b8cfdd28310232f7395a94356218817..4ff9e457fe9c915e19ef1aff8addaa260a329455 100644
--- a/packages/loot-core/src/client/query-helpers.ts
+++ b/packages/loot-core/src/client/query-helpers.ts
@@ -7,13 +7,13 @@ export async function runQuery(query) {
   return send('query', query.serialize());
 }
 
-export function liveQuery(query, onData?, opts?) {
+export function liveQuery(query, onData?, opts?): LiveQuery {
   let q = new LiveQuery(query, onData, opts);
   q.run();
   return q;
 }
 
-export function pagedQuery(query, onData?, opts?) {
+export function pagedQuery(query, onData?, opts?): PagedQuery {
   let q = new PagedQuery(query, onData, opts);
   q.run();
   return q;
@@ -176,7 +176,7 @@ export class LiveQuery {
 }
 
 // Paging
-export class PagedQuery extends LiveQuery {
+class PagedQuery extends LiveQuery {
   done;
   onPageData;
   pageCount;
diff --git a/packages/loot-core/src/client/query-hooks.tsx b/packages/loot-core/src/client/query-hooks.tsx
index 5828a671594bc2045425a2ff25b49b4060143e58..d516f01163380fc6503c33030a9c3fca898ec488 100644
--- a/packages/loot-core/src/client/query-hooks.tsx
+++ b/packages/loot-core/src/client/query-hooks.tsx
@@ -9,7 +9,7 @@ import React, {
 
 import { type Query } from '../shared/query';
 
-import { liveQuery, LiveQuery, PagedQuery } from './query-helpers';
+import { liveQuery, LiveQuery } from './query-helpers';
 
 function makeContext(queryState, opts, QueryClass) {
   let query = new QueryClass(queryState, null, opts);
@@ -69,10 +69,6 @@ export function liveQueryContext(query, opts) {
   return makeContext(query, opts, LiveQuery);
 }
 
-export function pagedQueryContext(query, opts) {
-  return makeContext(query, opts, PagedQuery);
-}
-
 export function useLiveQuery(makeQuery: () => Query, deps: DependencyList) {
   let [data, setData] = useState(null);
   let query = useMemo(makeQuery, deps);
diff --git a/packages/loot-core/src/client/reducers/budgets.ts b/packages/loot-core/src/client/reducers/budgets.ts
index 45a7ee28fcfc122ae0ae03c3acf491183f8379c8..ddd75630c72b67cf74a676576e903a27c6330545 100644
--- a/packages/loot-core/src/client/reducers/budgets.ts
+++ b/packages/loot-core/src/client/reducers/budgets.ts
@@ -20,7 +20,7 @@ function sortFiles(arr) {
 // 4. detached - Downloaded but broken group id (reset sync state)
 // 5. broken - user shouldn't have access to this file
 // 6. unknown - user is offline so can't determine the status
-export function reconcileFiles(localFiles, remoteFiles) {
+function reconcileFiles(localFiles, remoteFiles) {
   let reconciled = new Set();
 
   let files = localFiles.map(localFile => {
diff --git a/packages/loot-core/src/server/accounts/rules.ts b/packages/loot-core/src/server/accounts/rules.ts
index 37d547a0d7114ccea58878eba40c8a7ac595a3d5..d79ef88f8753135286fc2e79c43172ac20ea885e 100644
--- a/packages/loot-core/src/server/accounts/rules.ts
+++ b/packages/loot-core/src/server/accounts/rules.ts
@@ -21,7 +21,7 @@ function assert(test, type, msg) {
   }
 }
 
-export function parseRecurDate(desc) {
+function parseRecurDate(desc) {
   try {
     let rules = recurConfigToRSchedule(desc);
 
@@ -63,7 +63,7 @@ export function parseDateString(str) {
   return null;
 }
 
-export function parseBetweenAmount(between) {
+function parseBetweenAmount(between) {
   let { num1, num2 } = between;
   if (typeof num1 !== 'number' || typeof num2 !== 'number') {
     return null;
diff --git a/packages/loot-core/src/server/accounts/transaction-rules.ts b/packages/loot-core/src/server/accounts/transaction-rules.ts
index 46c7c5593640f8e5a33ac8c59e71fa90e4ebe2e0..fe81388007c03046c023b9668315c9eb4f96bd0a 100644
--- a/packages/loot-core/src/server/accounts/transaction-rules.ts
+++ b/packages/loot-core/src/server/accounts/transaction-rules.ts
@@ -16,8 +16,7 @@ import * as db from '../db';
 import { getMappings } from '../db/mappings';
 import { RuleError } from '../errors';
 import { requiredFields, toDateRepr } from '../models';
-import { batchMessages } from '../sync';
-import { addSyncListener } from '../sync/index';
+import { batchMessages, addSyncListener } from '../sync';
 
 import {
   Condition,
diff --git a/packages/loot-core/src/server/aql/compiler.ts b/packages/loot-core/src/server/aql/compiler.ts
index ddd858b05e77cd343c5c42fd7627d936e084db15..899cd383dd776edc66818957c3c5e01926cd7915 100644
--- a/packages/loot-core/src/server/aql/compiler.ts
+++ b/packages/loot-core/src/server/aql/compiler.ts
@@ -19,7 +19,7 @@ function dateToInt(date) {
   return parseInt(date.replace(/-/g, ''));
 }
 
-export function addTombstone(schema, tableName, tableId, whereStr) {
+function addTombstone(schema, tableName, tableId, whereStr) {
   let hasTombstone = schema[tableName].tombstone != null;
   return hasTombstone ? `${whereStr} AND ${tableId}.tombstone = 0` : whereStr;
 }
diff --git a/packages/loot-core/src/server/aql/schema/executors.ts b/packages/loot-core/src/server/aql/schema/executors.ts
index 56493a0bd07aed6ea5869a2ae72411bb7090f7d9..f6fa0d17d5a307e9d0f562e3b75534792b2148d6 100644
--- a/packages/loot-core/src/server/aql/schema/executors.ts
+++ b/packages/loot-core/src/server/aql/schema/executors.ts
@@ -6,7 +6,7 @@ import { convertOutputType } from '../schema-helpers';
 
 // Transactions executor
 
-export function toGroup(parents, children, mapper = x => x) {
+function toGroup(parents, children, mapper = x => x) {
   return parents.reduce((list, parent) => {
     let childs = children.get(parent.id) || [];
     list.push({
diff --git a/packages/loot-core/src/server/backups.ts b/packages/loot-core/src/server/backups.ts
index 0766ee670087ed9bfc1f1940c6df582db1874260..2919b66df7caa070bb02afe0ec6b6f5f3ac08f90 100644
--- a/packages/loot-core/src/server/backups.ts
+++ b/packages/loot-core/src/server/backups.ts
@@ -14,7 +14,7 @@ import * as prefs from './prefs';
 const LATEST_BACKUP_FILENAME = 'db.latest.sqlite';
 let serviceInterval = null;
 
-export async function getBackups(id) {
+async function getBackups(id) {
   const budgetDir = fs.getBudgetDir(id);
   const backupDir = fs.join(budgetDir, 'backups');
 
@@ -46,7 +46,7 @@ export async function getBackups(id) {
   return backups;
 }
 
-export async function getLatestBackup(id) {
+async function getLatestBackup(id) {
   const budgetDir = fs.getBudgetDir(id);
   if (await fs.exists(fs.join(budgetDir, LATEST_BACKUP_FILENAME))) {
     return {
diff --git a/packages/loot-core/src/server/schedules/app.ts b/packages/loot-core/src/server/schedules/app.ts
index 962a9be5fade712b787e9b5c3d413a1c8f22d998..c2f3cfe07759c4a82df3bd098bcbdbcd5fdc9a6f 100644
--- a/packages/loot-core/src/server/schedules/app.ts
+++ b/packages/loot-core/src/server/schedules/app.ts
@@ -100,7 +100,7 @@ export async function getRuleForSchedule(id) {
   return getRules().find(rule => rule.id === ruleId);
 }
 
-export async function fixRuleForSchedule(id) {
+async function fixRuleForSchedule(id) {
   let { data: ruleId } = await aqlQuery(
     q('schedules').filter({ id }).calculate('rule'),
   );
@@ -186,7 +186,7 @@ export async function setNextDate({
 
 // Methods
 
-export async function checkIfScheduleExists(name, scheduleId) {
+async function checkIfScheduleExists(name, scheduleId) {
   let idForName = await db.first('SELECT id from schedules WHERE name = ?', [
     name,
   ]);
@@ -349,7 +349,7 @@ export async function deleteSchedule({ id }) {
   });
 }
 
-export async function skipNextDate({ id }) {
+async function skipNextDate({ id }) {
   return setNextDate({
     id,
     start: nextDate => {
@@ -360,13 +360,13 @@ export async function skipNextDate({ id }) {
 
 // `schedule` here might not be a saved schedule, so it might not have
 // an id
-export function getPossibleTransactions({ schedule }) {}
+function getPossibleTransactions({ schedule }) {}
 
-export function discoverSchedules() {
+function discoverSchedules() {
   return findSchedules();
 }
 
-export async function getUpcomingDates({ config, count }) {
+async function getUpcomingDates({ config, count }) {
   let rules = recurConfigToRSchedule(config);
 
   try {
@@ -460,7 +460,7 @@ async function postTransactionForSchedule({ id }) {
 
 // TODO: make this sequential
 
-export async function advanceSchedulesService(syncSuccess) {
+async function advanceSchedulesService(syncSuccess) {
   // Move all paid schedules
   let { data: schedules } = await aqlQuery(
     q('schedules')
diff --git a/packages/loot-core/src/server/schedules/find-schedules.ts b/packages/loot-core/src/server/schedules/find-schedules.ts
index d812cf24576abeaf52b320194e486f5e46aed232..31e6ece6e9246178312b22c3e7b626d7ce675560 100644
--- a/packages/loot-core/src/server/schedules/find-schedules.ts
+++ b/packages/loot-core/src/server/schedules/find-schedules.ts
@@ -48,7 +48,7 @@ function getRank(day1, day2) {
   return 1 / (dayDiff + 1);
 }
 
-export function matchSchedules(allOccurs, config, partialMatchRank = 0.5) {
+function matchSchedules(allOccurs, config, partialMatchRank = 0.5) {
   allOccurs = [...allOccurs].reverse();
   let baseOccur = allOccurs[0];
   let occurs = allOccurs.slice(1);
diff --git a/packages/loot-core/src/server/update.ts b/packages/loot-core/src/server/update.ts
index 6be345e9e8c18f298903c168a5fffc4330c7a8fb..221b4869fc35f615b8f20385dd48798fb14bfc0a 100644
--- a/packages/loot-core/src/server/update.ts
+++ b/packages/loot-core/src/server/update.ts
@@ -10,7 +10,7 @@ async function runMigrations() {
   await migrations.migrate(db.getDatabase());
 }
 
-export async function updateViews() {
+async function updateViews() {
   let hashKey = 'view-hash';
   let row = await db.first('SELECT value FROM __meta__ WHERE key = ?', [
     hashKey,
diff --git a/packages/loot-core/src/shared/transactions.ts b/packages/loot-core/src/shared/transactions.ts
index 2653b4826333530cf0820c1c04a36ac74d676d1e..a1b2e425c88d6457da2532a3638b7eeb76448dca 100644
--- a/packages/loot-core/src/shared/transactions.ts
+++ b/packages/loot-core/src/shared/transactions.ts
@@ -56,7 +56,7 @@ export function recalculateSplit(trans) {
   };
 }
 
-export function findParentIndex(transactions, idx) {
+function findParentIndex(transactions, idx) {
   // This relies on transactions being sorted in a way where parents
   // are always before children, which is enforced in the db layer.
   // Walk backwards and find the last parent;
@@ -95,7 +95,7 @@ export function ungroupTransactions(transactions) {
   return x;
 }
 
-export function groupTransaction(split) {
+function groupTransaction(split) {
   return { ...split[0], subtransactions: split.slice(1) };
 }
 
@@ -110,7 +110,7 @@ export function applyTransactionDiff(groupedTrans, diff) {
   return groupTransaction(applyChanges(diff, ungroupTransaction(groupedTrans)));
 }
 
-export function replaceTransactions(transactions, id, func) {
+function replaceTransactions(transactions, id, func) {
   let idx = transactions.findIndex(t => t.id === id);
   let trans = transactions[idx];
   let transactionsCopy = [...transactions];
diff --git a/upcoming-release-notes/1147.md b/upcoming-release-notes/1147.md
new file mode 100644
index 0000000000000000000000000000000000000000..dc46502735d924197b252301f89a65d3194dce15
--- /dev/null
+++ b/upcoming-release-notes/1147.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [Shazib]
+---
+
+Remove redundant usage of 'export' keyword