diff --git a/packages/desktop-client/src/components/settings/Experimental.tsx b/packages/desktop-client/src/components/settings/Experimental.tsx
index fec5f04cabe68a3f14726d6a1ca1c39fcfb80aa6..ab49f18c426f77ba4ae8d7ca5d3c7f07ef2fcf8e 100644
--- a/packages/desktop-client/src/components/settings/Experimental.tsx
+++ b/packages/desktop-client/src/components/settings/Experimental.tsx
@@ -89,9 +89,6 @@ export function ExperimentalFeatures() {
               Goal templates
             </FeatureToggle>
             <FeatureToggle flag="simpleFinSync">SimpleFIN sync</FeatureToggle>
-            <FeatureToggle flag="iterableTopologicalSort">
-              Iterable topological sort budget
-            </FeatureToggle>
           </View>
         ) : (
           <Link
diff --git a/packages/desktop-client/src/hooks/useFeatureFlag.ts b/packages/desktop-client/src/hooks/useFeatureFlag.ts
index 689b3772e79eb32d54b9cb47af1a63b24a486779..f6756404513f710a1bbf10ff4981fc7238e709f3 100644
--- a/packages/desktop-client/src/hooks/useFeatureFlag.ts
+++ b/packages/desktop-client/src/hooks/useFeatureFlag.ts
@@ -8,7 +8,6 @@ const DEFAULT_FEATURE_FLAG_STATE: Record<FeatureFlag, boolean> = {
   goalTemplatesEnabled: false,
   spendingReport: false,
   simpleFinSync: false,
-  iterableTopologicalSort: true,
 };
 
 export function useFeatureFlag(name: FeatureFlag): boolean {
diff --git a/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts b/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts
index be2669d1ff2d82daea376d2d63433877503329ba..f5bc30a92fbc76e1bb18729c4c4bd81488c9cbb9 100644
--- a/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts
+++ b/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts
@@ -1,5 +1,3 @@
-import { getPrefs } from '../prefs';
-
 // @ts-strict-ignore
 export function Graph() {
   const graph = {
@@ -81,42 +79,16 @@ export function Graph() {
   function topologicalSort(sourceNodes) {
     const visited = new Set();
     const sorted = [];
-    const prefs = getPrefs();
-    const iterableTopologicalSort =
-      prefs != null ? prefs['flags.iterableTopologicalSort'] : false;
 
     sourceNodes.forEach(name => {
       if (!visited.has(name)) {
-        if (iterableTopologicalSort) {
-          topologicalSortIterable(name, visited, sorted);
-        } else {
-          topologicalSortUntil(name, visited, sorted, 0);
-        }
+        topologicalSortIterable(name, visited, sorted);
       }
     });
 
     return sorted;
   }
 
-  function topologicalSortUntil(name, visited, sorted, level) {
-    visited.add(name);
-    if (level > 2500) {
-      console.error('Limit of recursions reached while sorting budget: 2500');
-      return;
-    }
-
-    const iter = adjacent(name).values();
-    let cur = iter.next();
-    while (!cur.done) {
-      if (!visited.has(cur.value)) {
-        topologicalSortUntil(cur.value, visited, sorted, level + 1);
-      }
-      cur = iter.next();
-    }
-
-    sorted.unshift(name);
-  }
-
   function topologicalSortIterable(name, visited, sorted) {
     const stackTrace: StackItem[] = [];
 
diff --git a/packages/loot-core/src/types/prefs.d.ts b/packages/loot-core/src/types/prefs.d.ts
index ee5aa40ec642c0464cc46e9be41be8fe0bac425d..3d3664a87cb79bda0a980073b77cffa48a37eb06 100644
--- a/packages/loot-core/src/types/prefs.d.ts
+++ b/packages/loot-core/src/types/prefs.d.ts
@@ -6,8 +6,7 @@ export type FeatureFlag =
   | 'reportBudget'
   | 'goalTemplatesEnabled'
   | 'spendingReport'
-  | 'simpleFinSync'
-  | 'iterableTopologicalSort';
+  | 'simpleFinSync';
 
 /**
  * Cross-device preferences. These sync across devices when they are changed.
diff --git a/upcoming-release-notes/3262.md b/upcoming-release-notes/3262.md
new file mode 100644
index 0000000000000000000000000000000000000000..51cfaaee1cb79655cf6acc76fe7f62bef54b14e1
--- /dev/null
+++ b/upcoming-release-notes/3262.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [Matissjanis]
+---
+
+Cleanup `iterableTopologicalSort` feature flag.