diff --git a/packages/loot-design/src/components/DateSelect.js b/packages/loot-design/src/components/DateSelect.js
index dbb766b453c480ff879ed2643b22a59cd9b359e8..1a8f6e11e0e8e621a33659d38475a44505baf3c7 100644
--- a/packages/loot-design/src/components/DateSelect.js
+++ b/packages/loot-design/src/components/DateSelect.js
@@ -223,9 +223,6 @@ export default function DateSelect({
   }, [value]);
 
   function onKeyDown(e) {
-    let ENTER = 13;
-    let UP = 38;
-    let DOWN = 40;
     let ESC = 27;
 
     if (
diff --git a/packages/loot-design/src/components/FixedSizeList.js b/packages/loot-design/src/components/FixedSizeList.js
index 61406bfd6c28505011ad8b33d2cc6dad97f6c9bb..44732a41dbe25e8eb01ea3ccf928844d1a9aee95 100644
--- a/packages/loot-design/src/components/FixedSizeList.js
+++ b/packages/loot-design/src/components/FixedSizeList.js
@@ -78,7 +78,7 @@ export class FixedSizeList extends React.PureComponent {
   }
 
   componentDidMount() {
-    const { direction, initialScrollOffset, layout } = this.props;
+    const { initialScrollOffset } = this.props;
 
     if (typeof initialScrollOffset === 'number' && this._outerRef != null) {
       let outerRef = this._outerRef;
@@ -93,7 +93,6 @@ export class FixedSizeList extends React.PureComponent {
     if (this.anchored && this.props.indexForKey && this._outerRef != null) {
       let index = this.props.indexForKey(this.anchored.key);
       let baseOffset = this.getOffsetForIndexAndAlignment(index, 'start');
-      let outerRef = this._outerRef;
       return baseOffset + this.anchored.offset;
     }
     return null;
@@ -147,8 +146,7 @@ export class FixedSizeList extends React.PureComponent {
       outerTagName,
       style,
       useIsScrolling,
-      width,
-      version
+      width
     } = this.props;
     const { isScrolling } = this.state;
 
@@ -473,7 +471,7 @@ export class FixedSizeList extends React.PureComponent {
   }
 
   _onScrollVertical = event => {
-    let { clientHeight, scrollHeight, scrollTop } = event.currentTarget;
+    let { scrollTop } = event.currentTarget;
 
     this.setState(prevState => {
       if (prevState.scrollOffset === scrollTop) {
diff --git a/packages/loot-design/src/components/RecurringSchedulePicker.js b/packages/loot-design/src/components/RecurringSchedulePicker.js
index 7e4b29d404a1fb7f3aa34bba2fefc7b1c1f50c52..c83696f0d26c1cd719f33d0fee45aa55274b0533 100644
--- a/packages/loot-design/src/components/RecurringSchedulePicker.js
+++ b/packages/loot-design/src/components/RecurringSchedulePicker.js
@@ -12,8 +12,6 @@ import SubtractIcon from 'loot-design/src/svg/Subtract';
 import { Button, Select, Input, Tooltip, View, Text, Stack } from './common';
 import DateSelect from './DateSelect';
 
-const DATE_FORMAT = 'yyyy-MM-dd';
-
 // ex: There is no 6th Friday of the Month
 const MAX_DAY_OF_WEEK_INTERVAL = 5;
 
@@ -96,7 +94,6 @@ function reducer(state, action) {
         }
       };
     case 'update-recurrence':
-      const index = state.config.patterns.indexOf(action.recurrence);
       return {
         ...state,
         config: {
diff --git a/packages/loot-design/src/components/budget/BudgetMonthCountContext.js b/packages/loot-design/src/components/budget/BudgetMonthCountContext.js
index e615369581a19ffc46ac30a4537bdaa5a83f2c37..7e7d2c513fb92061d994e3b9fc10326843aca0b3 100644
--- a/packages/loot-design/src/components/budget/BudgetMonthCountContext.js
+++ b/packages/loot-design/src/components/budget/BudgetMonthCountContext.js
@@ -1,12 +1,9 @@
 import React, { useContext, useState } from 'react';
 
-import mitt from 'mitt';
-
 export let BudgetMonthCountContext = React.createContext();
 
 export function BudgetMonthCountProvider({ children }) {
   let [displayMax, setDisplayMax] = useState(1);
-  let emitter = mitt();
 
   return (
     <BudgetMonthCountContext.Provider value={{ displayMax, setDisplayMax }}>
diff --git a/packages/loot-design/src/components/common.js b/packages/loot-design/src/components/common.js
index 3c69be92d8e0a9551fb4605cc192681871ab199c..6c935b887c1f72d65d9c8c5c28148149e89a4340 100644
--- a/packages/loot-design/src/components/common.js
+++ b/packages/loot-design/src/components/common.js
@@ -7,13 +7,7 @@ import React, {
 } from 'react';
 import mergeRefs from 'react-merge-refs';
 import ReactModal from 'react-modal';
-import {
-  Route,
-  NavLink,
-  withRouter,
-  useHistory,
-  useRouteMatch
-} from 'react-router-dom';
+import { Route, NavLink, withRouter, useRouteMatch } from 'react-router-dom';
 
 import {
   ListboxInput,
@@ -88,16 +82,7 @@ export function Link({ style, children, ...nativeProps }) {
   );
 }
 
-export function AnchorLink({
-  staticContext,
-  to,
-  exact,
-  style,
-  activeStyle,
-  children
-}) {
-  let history = useHistory();
-  let href = history.createHref(typeof to === 'string' ? { pathname: to } : to);
+export function AnchorLink({ to, exact, style, activeStyle, children }) {
   let match = useRouteMatch({ path: to, exact: true });
 
   return (
diff --git a/packages/loot-design/src/components/manager/DeleteFile.js b/packages/loot-design/src/components/manager/DeleteFile.js
index 9eaa6861d3ef4bb3db2c83f465468ec56f57f8ef..42a4038e9f87e60a462e4581c14bded02b9cd732 100644
--- a/packages/loot-design/src/components/manager/DeleteFile.js
+++ b/packages/loot-design/src/components/manager/DeleteFile.js
@@ -5,7 +5,6 @@ import { View, Text, Modal, ButtonWithLoading } from '../common';
 
 export default function DeleteMenu({ modalProps, actions, file }) {
   let [loadingState, setLoadingState] = useState(null);
-  let { state } = file;
 
   async function onDeleteCloud() {
     setLoadingState('cloud');
diff --git a/packages/loot-design/src/components/manager/Import.js b/packages/loot-design/src/components/manager/Import.js
index 105cdbdded248de3884554a7ac5a36f62037b441..64933def353ee310ccbd41bd0abd9aa56e55b69e 100644
--- a/packages/loot-design/src/components/manager/Import.js
+++ b/packages/loot-design/src/components/manager/Import.js
@@ -25,10 +25,8 @@ function getErrorMessage(error) {
 //   this.setState({ error: err.message, importing: false });
 // });
 
-function Import({ modalProps, actions, availableImports }) {
-  const [error, setError] = useState(false);
-  const [importing, setImporting] = useState(false);
-  const [type, setType] = useState(null);
+function Import({ modalProps, actions }) {
+  const [error] = useState(false);
 
   function onSelectType(type) {
     switch (type) {
diff --git a/packages/loot-design/src/components/manager/ImportActual.js b/packages/loot-design/src/components/manager/ImportActual.js
index eedf0ab8c3f26faa5dea5ad78597cb6c176748c2..43a83497241571a51341120deea8368b277570bd 100644
--- a/packages/loot-design/src/components/manager/ImportActual.js
+++ b/packages/loot-design/src/components/manager/ImportActual.js
@@ -4,16 +4,7 @@ import { useDispatch } from 'react-redux';
 import { importBudget } from 'loot-core/src/client/actions/budgets';
 
 import { styles, colors } from '../../style';
-import {
-  View,
-  Block,
-  Modal,
-  ButtonWithLoading,
-  Button,
-  Link,
-  P,
-  ExternalLink
-} from '../common';
+import { View, Block, Modal, ButtonWithLoading, Button, P } from '../common';
 
 function getErrorMessage(error) {
   switch (error) {
diff --git a/packages/loot-design/src/components/mobile/dragdrop.js b/packages/loot-design/src/components/mobile/dragdrop.js
index d8372c0504d6ef6ce343bfa8e9529dfd90c7628a..12b787b19c09c85edfd70bd8912e2e1086d907c6 100644
--- a/packages/loot-design/src/components/mobile/dragdrop.js
+++ b/packages/loot-design/src/components/mobile/dragdrop.js
@@ -265,7 +265,7 @@ export function DragDrop({ makeHighlight, children, style }) {
     });
 
     if (droppable) {
-      let { layout, getActiveStatus } = droppable;
+      let { getActiveStatus } = droppable;
 
       if (getActiveStatus) {
         let status = getActiveStatus(x, y, droppable, draggable.current || {});
diff --git a/packages/loot-design/src/components/mobile/transaction.js b/packages/loot-design/src/components/mobile/transaction.js
index 3e04d6d0e87351ba4523626cd6c5f494186e9179..812166ded1f910444f6b14f0bb1c42843134a58b 100644
--- a/packages/loot-design/src/components/mobile/transaction.js
+++ b/packages/loot-design/src/components/mobile/transaction.js
@@ -30,9 +30,7 @@ import ArrowsSynchronize from 'loot-design/src/svg/v2/ArrowsSynchronize';
 import { colors, mobileStyles as styles } from '../../style';
 import Add from '../../svg/v1/Add';
 import Trash from '../../svg/v1/Trash';
-import AlertTriangle from '../../svg/v2/AlertTriangle';
 import CheckCircle1 from '../../svg/v2/CheckCircle1';
-import EditSkull1 from '../../svg/v2/EditSkull1';
 import PencilWriteAlternate from '../../svg/v2/PencilWriteAlternate';
 import { FocusableAmountInput } from './AmountInput';
 import { Button, TextOneLine } from './common';
@@ -175,7 +173,6 @@ export class TransactionEdit extends React.Component {
 
   onEdit = async (transaction, name, value) => {
     let { transactions } = this.state;
-    let { payees } = this.props;
 
     let newTransaction = { ...transaction, [name]: value };
     if (this.props.onEdit) {
@@ -699,20 +696,17 @@ export function DateHeader({ date }) {
 }
 
 function Status({ status }) {
-  let color, backgroundColor, Icon;
+  let color;
 
   switch (status) {
     case 'missed':
       color = colors.r3;
-      Icon = EditSkull1;
       break;
     case 'due':
       color = colors.y3;
-      Icon = AlertTriangle;
       break;
     case 'upcoming':
       color = colors.n4;
-      Icon = ArrowsSynchronize;
       break;
     default:
   }
@@ -776,17 +770,6 @@ export class Transaction extends React.PureComponent {
       fontStyle: 'italic',
       color: colors.n5
     };
-    let textStyleWithColor = [
-      textStyle,
-      isPreview && {
-        color:
-          notes === 'missed'
-            ? colors.r6
-            : notes === 'due'
-            ? colors.y4
-            : colors.n5
-      }
-    ];
 
     return (
       <RectButton
diff --git a/packages/loot-design/src/components/modals/CreateLocalAccount.js b/packages/loot-design/src/components/modals/CreateLocalAccount.js
index c59e06f53dc10121999624d4daa83fd4fff64d98..734420a14efaecb5b6c06b1653b37fdf3fa31c56 100644
--- a/packages/loot-design/src/components/modals/CreateLocalAccount.js
+++ b/packages/loot-design/src/components/modals/CreateLocalAccount.js
@@ -12,7 +12,6 @@ import {
   Button,
   Input,
   Select,
-  P,
   InlineField,
   FormError,
   InitialFocus
diff --git a/packages/loot-design/src/components/modals/EditField.js b/packages/loot-design/src/components/modals/EditField.js
index 9b0277d6814aebff0c43318b749029b48d2d4311..992aa4aca3fa80cb255b5f80157dd4dc7370fe65 100644
--- a/packages/loot-design/src/components/modals/EditField.js
+++ b/packages/loot-design/src/components/modals/EditField.js
@@ -1,4 +1,4 @@
-import React, { useRef } from 'react';
+import React from 'react';
 import { connect } from 'react-redux';
 
 import { parseISO, format as formatDate, parse as parseDate } from 'date-fns';
@@ -27,8 +27,6 @@ function EditField({
   dateFormat,
   createPayee
 }) {
-  let submitRef = useRef();
-
   function onSelect(value) {
     // Process the value if needed
     if (name === 'amount') {
diff --git a/packages/loot-design/src/components/modals/LoadBackup.js b/packages/loot-design/src/components/modals/LoadBackup.js
index d9c9fd09d594d49141af451b0277284fbb065ca8..a325001ef33c1d09af9f74fb667549fc2223661f 100644
--- a/packages/loot-design/src/components/modals/LoadBackup.js
+++ b/packages/loot-design/src/components/modals/LoadBackup.js
@@ -15,7 +15,6 @@ class BackupTable extends React.Component {
     const { backups, onSelect } = this.props;
     const { hoveredBackup } = this.state;
 
-    const borderColor = '#f0f0f0';
     return (
       <View
         style={{ flex: 1, maxHeight: 200, overflow: 'auto' }}
diff --git a/packages/loot-design/src/components/payees.js b/packages/loot-design/src/components/payees.js
index 35d5a75eaf0fbd20fa5d230300828373551d44bf..d7f938bfe93fcbd2c3411107d8ff2a8719e6da4c 100644
--- a/packages/loot-design/src/components/payees.js
+++ b/packages/loot-design/src/components/payees.js
@@ -22,7 +22,6 @@ import {
   useStableCallback,
   View,
   Text,
-  Modal,
   Input,
   Button,
   Tooltip,
diff --git a/packages/loot-design/src/components/sidebar.js b/packages/loot-design/src/components/sidebar.js
index a5f0218c0db8fc8add44dda44d966f175c5852aa..5d4154ff5d229a79e9609ee068e8fefd71275e6f 100644
--- a/packages/loot-design/src/components/sidebar.js
+++ b/packages/loot-design/src/components/sidebar.js
@@ -1,4 +1,4 @@
-import React, { useState, useMemo, useCallback, useEffect } from 'react';
+import React, { useState, useMemo, useCallback } from 'react';
 import { RectButton } from 'react-native-gesture-handler';
 import { useDispatch } from 'react-redux';
 import { useLocation, useHistory } from 'react-router';
@@ -7,7 +7,6 @@ import { withRouter } from 'react-router-dom';
 import { css } from 'glamor';
 
 import { closeBudget } from 'loot-core/src/client/actions/budgets';
-import { pushModal } from 'loot-core/src/client/actions/modals';
 import Platform from 'loot-core/src/client/platform';
 import PiggyBank from 'loot-design/src/svg/v1/PiggyBank';
 
diff --git a/packages/loot-design/src/components/tooltips.js b/packages/loot-design/src/components/tooltips.js
index b82f12c73dc81eb50a313e7cabc17bd64da094b0..c2eb2c6565c72d693a5afd0cb3dfd0da8424f5f8 100644
--- a/packages/loot-design/src/components/tooltips.js
+++ b/packages/loot-design/src/components/tooltips.js
@@ -7,29 +7,6 @@ import { styles } from '../style';
 
 export const IntersectionBoundary = React.createContext();
 
-function visibleBoundingRect(el) {
-  let rect = el.getBoundingClientRect();
-  let parentRect = el.parentNode.getBoundingClientRect();
-
-  let top = Math.max(rect.top, parentRect.top);
-  let left = Math.max(rect.left, parentRect.left);
-  let right = Math.min(
-    rect.left + rect.width,
-    parentRect.left + parentRect.width
-  );
-  let bottom = Math.min(
-    rect.top + rect.height,
-    parentRect.top + parentRect.height
-  );
-
-  return {
-    top,
-    left,
-    width: right - left,
-    height: bottom - top
-  };
-}
-
 export function useTooltip() {
   let [isOpen, setIsOpen] = useState(false);
 
diff --git a/packages/loot-design/src/setupTests.js b/packages/loot-design/src/setupTests.js
index c92384587517c777d7adc358dd7eeac8150cb076..1348a9c23eff60790499cacfba138bfe6f115b1a 100644
--- a/packages/loot-design/src/setupTests.js
+++ b/packages/loot-design/src/setupTests.js
@@ -22,7 +22,6 @@ Math.random = function random() {
 
 global.Date.now = () => 123456789;
 
-let seqId = 1;
 uuid.v4 = function() {
   return Promise.resolve('testing-uuid-' + Math.floor(Math.random() * 1000000));
 };
@@ -33,7 +32,6 @@ uuid.v4Sync = function() {
 
 global.__resetWorld = () => {
   seed = 2;
-  seqId = 1;
   resetStore();
 };