diff --git a/packages/desktop-client/src/components/DevelopmentTopBar.tsx b/packages/desktop-client/src/components/DevelopmentTopBar.tsx
index 8bf786a64778a5644416afd9085a6142af49dd53..581f06f79c5819c7c793380b34797d83d1ceb73c 100644
--- a/packages/desktop-client/src/components/DevelopmentTopBar.tsx
+++ b/packages/desktop-client/src/components/DevelopmentTopBar.tsx
@@ -1,6 +1,6 @@
 import { theme } from '../style';
 
-import { ExternalLink } from './common';
+import ExternalLink from './common/ExternalLink';
 import View from './common/View';
 
 export default function DevelopmentTopBar() {
diff --git a/packages/desktop-client/src/components/FatalError.js b/packages/desktop-client/src/components/FatalError.js
index 59a50cae9d3e41e15632de1ba882108ce0178458..23c2346e42cc2ca27aa7c5782cea3620994e50a2 100644
--- a/packages/desktop-client/src/components/FatalError.js
+++ b/packages/desktop-client/src/components/FatalError.js
@@ -2,9 +2,9 @@ import React, { Component, useState } from 'react';
 
 import { theme } from '../style';
 
-import { ExternalLink } from './common';
 import Block from './common/Block';
 import Button from './common/Button';
+import ExternalLink from './common/ExternalLink';
 import LinkButton from './common/LinkButton';
 import Modal from './common/Modal';
 import Paragraph from './common/Paragraph';
diff --git a/packages/desktop-client/src/components/ManageRules.js b/packages/desktop-client/src/components/ManageRules.js
index 4d427ae582b83f6bfd3045e66f85190c751ec996..ad50910ce8b95e896542f1636bd7e221d4487833 100644
--- a/packages/desktop-client/src/components/ManageRules.js
+++ b/packages/desktop-client/src/components/ManageRules.js
@@ -31,8 +31,8 @@ import useSelected, {
 import ArrowRight from '../icons/v0/RightArrow2';
 import { colors } from '../style';
 
-import { ExternalLink } from './common';
 import Button from './common/Button';
+import ExternalLink from './common/ExternalLink';
 import Input from './common/Input';
 import LinkButton from './common/LinkButton';
 import Stack from './common/Stack';
diff --git a/packages/desktop-client/src/components/Notifications.tsx b/packages/desktop-client/src/components/Notifications.tsx
index e2599bb751a2168fc5ae0635a41ffa4ce8d53175..02ff9c8fad2c3292913c057cfa3f6f679ed22aff 100644
--- a/packages/desktop-client/src/components/Notifications.tsx
+++ b/packages/desktop-client/src/components/Notifications.tsx
@@ -15,8 +15,8 @@ import AnimatedLoading from '../icons/AnimatedLoading';
 import Delete from '../icons/v0/Delete';
 import { styles, colors } from '../style';
 
-import { ExternalLink } from './common';
 import Button, { ButtonWithLoading } from './common/Button';
+import ExternalLink from './common/ExternalLink';
 import LinkButton from './common/LinkButton';
 import Stack from './common/Stack';
 import Text from './common/Text';
diff --git a/packages/desktop-client/src/components/Titlebar.js b/packages/desktop-client/src/components/Titlebar.js
index 34e0f10740c95810d943f240fd10d0034125d73e..779e8ee669eefcfa8424c86e778bb173e24cb466 100644
--- a/packages/desktop-client/src/components/Titlebar.js
+++ b/packages/desktop-client/src/components/Titlebar.js
@@ -28,8 +28,9 @@ import tokens from '../tokens';
 import AccountSyncCheck from './accounts/AccountSyncCheck';
 import AnimatedRefresh from './AnimatedRefresh';
 import { MonthCountSelector } from './budget/MonthCountSelector';
-import { ButtonLink, ExternalLink } from './common';
 import Button, { ButtonWithLoading } from './common/Button';
+import ButtonLink from './common/ButtonLink';
+import ExternalLink from './common/ExternalLink';
 import Paragraph from './common/Paragraph';
 import Text from './common/Text';
 import View from './common/View';
diff --git a/packages/desktop-client/src/components/accounts/AccountSyncCheck.js b/packages/desktop-client/src/components/accounts/AccountSyncCheck.js
index 03f831b49d9e93490cae618189daa3dc821e44d8..05f58c7cf12f1e6f5cc1e14b47a9cca3fc15b778 100644
--- a/packages/desktop-client/src/components/accounts/AccountSyncCheck.js
+++ b/packages/desktop-client/src/components/accounts/AccountSyncCheck.js
@@ -6,8 +6,8 @@ import { authorizeBank } from '../../gocardless';
 import { useActions } from '../../hooks/useActions';
 import ExclamationOutline from '../../icons/v1/ExclamationOutline';
 import { colors } from '../../style';
-import { ExternalLink } from '../common';
 import Button from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import View from '../common/View';
 import { Tooltip } from '../tooltips';
 
diff --git a/packages/desktop-client/src/components/common.tsx b/packages/desktop-client/src/components/common.tsx
deleted file mode 100644
index a74afd246f68eaa3498ad1c7bfaf245cdd473b92..0000000000000000000000000000000000000000
--- a/packages/desktop-client/src/components/common.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import React, { type ComponentProps, type ReactNode, forwardRef } from 'react';
-import { useMatch, useNavigate } from 'react-router-dom';
-
-import { type CSSProperties } from 'glamor';
-
-import { colors } from '../style';
-
-import Button from './common/Button';
-
-let externalLinkColors = {
-  purple: colors.p4,
-  blue: colors.b4,
-  muted: 'inherit',
-};
-type ExternalLinkProps = {
-  children?: ReactNode;
-  to: string;
-  linkColor?: keyof typeof externalLinkColors;
-};
-
-export const ExternalLink = forwardRef<HTMLAnchorElement, ExternalLinkProps>(
-  ({ children, to, linkColor = 'blue' }, ref) => (
-    // we can’t use <ExternalLink /> here for obvious reasons
-    // eslint-disable-next-line no-restricted-syntax
-    <a
-      ref={ref}
-      href={to}
-      target="_blank"
-      rel="noopener noreferrer"
-      style={{ color: externalLinkColors[linkColor] }}
-    >
-      {children}
-    </a>
-  ),
-);
-
-type ButtonLinkProps = ComponentProps<typeof Button> & {
-  to: string;
-  activeStyle?: CSSProperties;
-};
-export function ButtonLink({
-  to,
-  style,
-  activeStyle,
-  ...props
-}: ButtonLinkProps) {
-  const navigate = useNavigate();
-  const match = useMatch({ path: to });
-  return (
-    <Button
-      style={{
-        ...style,
-        ...(match ? activeStyle : {}),
-      }}
-      {...props}
-      onClick={e => {
-        props.onClick?.(e);
-        navigate(to);
-      }}
-    />
-  );
-}
diff --git a/packages/desktop-client/src/components/common/ButtonLink.tsx b/packages/desktop-client/src/components/common/ButtonLink.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..77688daf565898b5caa3ea05421926cddb050632
--- /dev/null
+++ b/packages/desktop-client/src/components/common/ButtonLink.tsx
@@ -0,0 +1,33 @@
+import React, { type ComponentProps } from 'react';
+import { useMatch, useNavigate } from 'react-router-dom';
+
+import { type CSSProperties } from 'glamor';
+
+import Button from './Button';
+
+type ButtonLinkProps = ComponentProps<typeof Button> & {
+  to: string;
+  activeStyle?: CSSProperties;
+};
+export default function ButtonLink({
+  to,
+  style,
+  activeStyle,
+  ...props
+}: ButtonLinkProps) {
+  const navigate = useNavigate();
+  const match = useMatch({ path: to });
+  return (
+    <Button
+      style={{
+        ...style,
+        ...(match ? activeStyle : {}),
+      }}
+      {...props}
+      onClick={e => {
+        props.onClick?.(e);
+        navigate(to);
+      }}
+    />
+  );
+}
diff --git a/packages/desktop-client/src/components/common/ExternalLink.tsx b/packages/desktop-client/src/components/common/ExternalLink.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..e4fa656b5c7f29ce157a7ab83bfc1a132aaab98a
--- /dev/null
+++ b/packages/desktop-client/src/components/common/ExternalLink.tsx
@@ -0,0 +1,32 @@
+import React, { type ReactNode, forwardRef } from 'react';
+
+import { colors } from '../../style';
+
+let externalLinkColors = {
+  purple: colors.p4,
+  blue: colors.b4,
+  muted: 'inherit',
+};
+type ExternalLinkProps = {
+  children?: ReactNode;
+  to: string;
+  linkColor?: keyof typeof externalLinkColors;
+};
+
+const ExternalLink = forwardRef<HTMLAnchorElement, ExternalLinkProps>(
+  ({ children, to, linkColor = 'blue' }, ref) => (
+    // we can’t use <ExternalLink /> here for obvious reasons
+    // eslint-disable-next-line no-restricted-syntax
+    <a
+      ref={ref}
+      href={to}
+      target="_blank"
+      rel="noopener noreferrer"
+      style={{ color: externalLinkColors[linkColor] }}
+    >
+      {children}
+    </a>
+  ),
+);
+
+export default ExternalLink;
diff --git a/packages/desktop-client/src/components/manager/ImportYNAB5.js b/packages/desktop-client/src/components/manager/ImportYNAB5.js
index 2be9442342d2e9d654e4b0a792cbc07e2c6daf94..b302574027642dcc98b287de578bad0c1a98d900 100644
--- a/packages/desktop-client/src/components/manager/ImportYNAB5.js
+++ b/packages/desktop-client/src/components/manager/ImportYNAB5.js
@@ -4,9 +4,9 @@ import { useDispatch } from 'react-redux';
 import { importBudget } from 'loot-core/src/client/actions/budgets';
 
 import { styles, colors } from '../../style';
-import { ExternalLink } from '../common';
 import Block from '../common/Block';
 import { ButtonWithLoading } from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import Modal from '../common/Modal';
 import Paragraph from '../common/Paragraph';
 import View from '../common/View';
diff --git a/packages/desktop-client/src/components/manager/WelcomeScreen.js b/packages/desktop-client/src/components/manager/WelcomeScreen.js
index 6276a641bd69cfa4a8dad3c158553798ba8acabf..1fc42330d235299e936ac1e489cc33efb548d83f 100644
--- a/packages/desktop-client/src/components/manager/WelcomeScreen.js
+++ b/packages/desktop-client/src/components/manager/WelcomeScreen.js
@@ -2,8 +2,8 @@ import React from 'react';
 
 import { useActions } from '../../hooks/useActions';
 import { colors, styles } from '../../style';
-import { ExternalLink } from '../common';
 import Button from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import Paragraph from '../common/Paragraph';
 import Text from '../common/Text';
 import View from '../common/View';
diff --git a/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx b/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx
index 3d6e792e583a7e19d95b8daa402213cf51227b47..80d49ef1069a3f5d2a262c00c3a3687022adad66 100644
--- a/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx
+++ b/packages/desktop-client/src/components/manager/subscribe/Bootstrap.tsx
@@ -6,8 +6,8 @@ import { loggedIn } from 'loot-core/src/client/actions/user';
 import { send } from 'loot-core/src/platform/client/fetch';
 
 import { colors } from '../../../style';
-import { ExternalLink } from '../../common';
 import Button from '../../common/Button';
+import ExternalLink from '../../common/ExternalLink';
 import Paragraph from '../../common/Paragraph';
 import Text from '../../common/Text';
 import View from '../../common/View';
diff --git a/packages/desktop-client/src/components/modals/CreateAccount.js b/packages/desktop-client/src/components/modals/CreateAccount.js
index e5bfbd9dd8b42d322eabffafa3e42f98e3f517d5..751cd30f301e99bb8ae3b8e3be99ea84880e29de 100644
--- a/packages/desktop-client/src/components/modals/CreateAccount.js
+++ b/packages/desktop-client/src/components/modals/CreateAccount.js
@@ -5,8 +5,8 @@ import { pushModal } from 'loot-core/src/client/actions/modals';
 
 import { authorizeBank } from '../../gocardless';
 import useGoCardlessStatus from '../../hooks/useGoCardlessStatus';
-import { ExternalLink } from '../common';
 import Button, { ButtonWithLoading } from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import Modal from '../common/Modal';
 import Paragraph from '../common/Paragraph';
 import Text from '../common/Text';
diff --git a/packages/desktop-client/src/components/modals/CreateEncryptionKey.js b/packages/desktop-client/src/components/modals/CreateEncryptionKey.js
index 5644581ac092b1e525c133fcf5cf7db6b8b173ec..8f312e40b6f24e3c9a22b18e6cd8e3955ffb5b92 100644
--- a/packages/desktop-client/src/components/modals/CreateEncryptionKey.js
+++ b/packages/desktop-client/src/components/modals/CreateEncryptionKey.js
@@ -6,8 +6,8 @@ import { send } from 'loot-core/src/platform/client/fetch';
 import { getCreateKeyError } from 'loot-core/src/shared/errors';
 
 import { colors } from '../../style';
-import { ExternalLink } from '../common';
 import { ButtonWithLoading } from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import InitialFocus from '../common/InitialFocus';
 import Input from '../common/Input';
 import Modal, { ModalButtons } from '../common/Modal';
diff --git a/packages/desktop-client/src/components/modals/CreateLocalAccount.js b/packages/desktop-client/src/components/modals/CreateLocalAccount.js
index e037fb369f30d7fae8a0178dc6dcc2c058d8c08c..7a15bd7cd9f7d41ab9f99860adc112ca940eba19 100644
--- a/packages/desktop-client/src/components/modals/CreateLocalAccount.js
+++ b/packages/desktop-client/src/components/modals/CreateLocalAccount.js
@@ -4,8 +4,8 @@ import { useNavigate } from 'react-router-dom';
 import { toRelaxedNumber } from 'loot-core/src/shared/util';
 
 import { colors } from '../../style';
-import { ExternalLink } from '../common';
 import Button from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import FormError from '../common/FormError';
 import InitialFocus from '../common/InitialFocus';
 import InlineField from '../common/InlineField';
diff --git a/packages/desktop-client/src/components/modals/FixEncryptionKey.js b/packages/desktop-client/src/components/modals/FixEncryptionKey.js
index a617d33b5351f1740866288b741c42c49792a35a..099bd34981f900c321dab178b00a55750eed57af 100644
--- a/packages/desktop-client/src/components/modals/FixEncryptionKey.js
+++ b/packages/desktop-client/src/components/modals/FixEncryptionKey.js
@@ -4,8 +4,8 @@ import { send } from 'loot-core/src/platform/client/fetch';
 import { getTestKeyError } from 'loot-core/src/shared/errors';
 
 import { colors } from '../../style';
-import { ExternalLink } from '../common';
 import Button, { ButtonWithLoading } from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import InitialFocus from '../common/InitialFocus';
 import Input from '../common/Input';
 import Modal, { ModalButtons } from '../common/Modal';
diff --git a/packages/desktop-client/src/components/modals/GoCardlessExternalMsg.js b/packages/desktop-client/src/components/modals/GoCardlessExternalMsg.js
index 7e3dc8f7a272721ae2c79dcce4cb842939a1045a..a17520d5a45a8a3921a2549ae6e60ab2419d1766 100644
--- a/packages/desktop-client/src/components/modals/GoCardlessExternalMsg.js
+++ b/packages/desktop-client/src/components/modals/GoCardlessExternalMsg.js
@@ -10,8 +10,8 @@ import DotsHorizontalTriple from '../../icons/v1/DotsHorizontalTriple';
 import { colors } from '../../style';
 import { Error, Warning } from '../alerts';
 import Autocomplete from '../autocomplete/Autocomplete';
-import { ExternalLink } from '../common';
 import Button from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import LinkButton from '../common/LinkButton';
 import Menu from '../common/Menu';
 import Modal from '../common/Modal';
diff --git a/packages/desktop-client/src/components/modals/GoCardlessInitialise.tsx b/packages/desktop-client/src/components/modals/GoCardlessInitialise.tsx
index c18a02ac7a945f8f02309d984fad0343a4a8d458..39f8e4005fb5deeceba80ce988dc865ff2932947 100644
--- a/packages/desktop-client/src/components/modals/GoCardlessInitialise.tsx
+++ b/packages/desktop-client/src/components/modals/GoCardlessInitialise.tsx
@@ -3,8 +3,8 @@ import React, { useState } from 'react';
 import { send } from 'loot-core/src/platform/client/fetch';
 
 import { Error } from '../alerts';
-import { ExternalLink } from '../common';
 import { ButtonWithLoading } from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import Input from '../common/Input';
 import Modal, { ModalButtons } from '../common/Modal';
 import type { ModalProps } from '../common/Modal';
diff --git a/packages/desktop-client/src/components/reports/Header.js b/packages/desktop-client/src/components/reports/Header.js
index 2f1849796ed899c0eeb59eb124b6798f88955f50..b46aeba22b4d69424c85cf97a4aff71a11fb3ea6 100644
--- a/packages/desktop-client/src/components/reports/Header.js
+++ b/packages/desktop-client/src/components/reports/Header.js
@@ -2,8 +2,8 @@ import * as monthUtils from 'loot-core/src/shared/months';
 
 import ArrowLeft from '../../icons/v1/ArrowLeft';
 import { styles } from '../../style';
-import { ButtonLink } from '../common';
 import Button from '../common/Button';
+import ButtonLink from '../common/ButtonLink';
 import Select from '../common/Select';
 import View from '../common/View';
 import { FilterButton, AppliedFilters } from '../filters/FiltersMenu';
diff --git a/packages/desktop-client/src/components/settings/Encryption.tsx b/packages/desktop-client/src/components/settings/Encryption.tsx
index 0b0908509d7e7c45282b021fa6111a72a4a85ee2..6df29b85a43cc1800d0672f47494f81f831ea8f8 100644
--- a/packages/desktop-client/src/components/settings/Encryption.tsx
+++ b/packages/desktop-client/src/components/settings/Encryption.tsx
@@ -3,8 +3,8 @@ import { useSelector } from 'react-redux';
 
 import { useActions } from '../../hooks/useActions';
 import { colors } from '../../style';
-import { ExternalLink } from '../common';
 import Button from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import Text from '../common/Text';
 import { useServerURL } from '../ServerContext';
 
diff --git a/packages/desktop-client/src/components/settings/index.tsx b/packages/desktop-client/src/components/settings/index.tsx
index 375835c99de0b66ccec4e81c7400e117a834f42e..27184568757b3ec1205240ad454d962bc4fb44e5 100644
--- a/packages/desktop-client/src/components/settings/index.tsx
+++ b/packages/desktop-client/src/components/settings/index.tsx
@@ -13,8 +13,8 @@ import { useSetThemeColor } from '../../hooks/useSetThemeColor';
 import { useResponsive } from '../../ResponsiveProvider';
 import { colors } from '../../style';
 import tokens from '../../tokens';
-import { ExternalLink } from '../common';
 import Button from '../common/Button';
+import ExternalLink from '../common/ExternalLink';
 import Input from '../common/Input';
 import Text from '../common/Text';
 import View from '../common/View';
diff --git a/upcoming-release-notes/1422.md b/upcoming-release-notes/1422.md
new file mode 100644
index 0000000000000000000000000000000000000000..55e38310dc59edadec3384f79c51d362bc78f66b
--- /dev/null
+++ b/upcoming-release-notes/1422.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [MatissJanis]
+---
+
+Moving away from barrel `common` imports to more specific per-component imports (part 4)