diff --git a/packages/jaeger-ui/src/components/TracePage/TraceGraph/TraceGraph.tsx b/packages/jaeger-ui/src/components/TracePage/TraceGraph/TraceGraph.tsx
index 18ef0c7adc..04d39fe924 100644
--- a/packages/jaeger-ui/src/components/TracePage/TraceGraph/TraceGraph.tsx
+++ b/packages/jaeger-ui/src/components/TracePage/TraceGraph/TraceGraph.tsx
@@ -16,8 +16,7 @@ import * as React from 'react';
 import { Card, Button, Tooltip } from 'antd';
 import { IoClose, IoHelpCircleOutline } from 'react-icons/io5';
 import cx from 'classnames';
-import { Digraph, LayoutManager } from '@jaegertracing/plexus';
-import cacheAs from '@jaegertracing/plexus/lib/cacheAs';
+import { Digraph, LayoutManager, cacheAs } from '@jaegertracing/plexus';
 
 import {
   getNodeRenderer,
diff --git a/packages/jaeger-ui/vite.config.mts b/packages/jaeger-ui/vite.config.mts
index 9f723370e2..df8dfe0807 100644
--- a/packages/jaeger-ui/vite.config.mts
+++ b/packages/jaeger-ui/vite.config.mts
@@ -18,6 +18,7 @@ import react from '@vitejs/plugin-react';
 import legacy from '@vitejs/plugin-legacy';
 import vitePluginImp from 'vite-plugin-imp';
 import { visualizer } from 'rollup-plugin-visualizer';
+import path from 'path';
 
 const proxyConfig = {
   target: 'http://localhost:16686',
@@ -86,4 +87,10 @@ export default defineConfig({
       transformMixedEsModules: true,
     },
   },
+  resolve: {
+    alias: {
+      // allow hot reload of Plexus code -- https://github.com/jaegertracing/jaeger-ui/pull/2089
+      '@jaegertracing/plexus': path.resolve(__dirname, '../plexus/src'),
+    },
+  },
 });