diff --git a/packages/desktop-client/src/components/accounts/Account.js b/packages/desktop-client/src/components/accounts/Account.js
index 0ee330edddc1f0daf430ebfbc08153d5c4630e51..d1e6f4a99e020f5bd4a0d6203449a28952730b7b 100644
--- a/packages/desktop-client/src/components/accounts/Account.js
+++ b/packages/desktop-client/src/components/accounts/Account.js
@@ -1,4 +1,4 @@
-import React, { useState, useEffect, useRef, useMemo } from 'react';
+import React, { useState, useRef, useMemo } from 'react';
 import { useSelector, useDispatch } from 'react-redux';
 import { Redirect, useParams, useHistory, useLocation } from 'react-router-dom';
 
@@ -327,31 +327,27 @@ function DetailedBalance({ name, balance }) {
 }
 
 function SelectedBalance({ selectedItems }) {
-  let [balance, setBalance] = useState(null);
-
-  useEffect(() => {
-    async function run() {
-      let { data: rows } = await runQuery(
-        q('transactions')
-          .filter({
-            id: { $oneof: [...selectedItems] },
-            parent_id: { $oneof: [...selectedItems] }
-          })
-          .select('id')
-      );
-      let ids = new Set(rows.map(r => r.id));
-
-      let finalIds = [...selectedItems].filter(id => !ids.has(id));
-      let { data: balance } = await runQuery(
-        q('transactions')
-          .filter({ id: { $oneof: finalIds } })
-          .options({ splits: 'all' })
-          .calculate({ $sum: '$amount' })
-      );
-      setBalance(balance);
-    }
-    run();
-  }, [selectedItems]);
+  let name = `selected-balance-${[...selectedItems].join('-')}`;
+
+  let rows = useSheetValue({
+    name,
+    query: q('transactions')
+      .filter({
+        id: { $oneof: [...selectedItems] },
+        parent_id: { $oneof: [...selectedItems] }
+      })
+      .select('id')
+  });
+  let ids = new Set((rows || []).map(r => r.id));
+
+  let finalIds = [...selectedItems].filter(id => !ids.has(id));
+  let balance = useSheetValue({
+    name: name + '-sum',
+    query: q('transactions')
+      .filter({ id: { $oneof: finalIds } })
+      .options({ splits: 'all' })
+      .calculate({ $sum: '$amount' })
+  });
 
   if (balance == null) {
     return null;