Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
2b01c81
refactor: implement code splitting for pages and optimize manual chun…
chirag-madlani Mar 31, 2026
e134644
handle chunk loading error gracefully
chirag-madlani Apr 1, 2026
3c6a6ad
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 1, 2026
d9f1e8a
address comments
chirag-madlani Apr 1, 2026
a889d04
fix lint comment
chirag-madlani Apr 1, 2026
3a6bfd2
address copilot comments
chirag-madlani Apr 1, 2026
515db48
fix chunk and initial load time
chirag-madlani Apr 1, 2026
9b0ee89
fix theme issues
chirag-madlani Apr 2, 2026
df8ba10
fix packaging
chirag-madlani Apr 3, 2026
bfa39d1
update imports
chirag-madlani Apr 5, 2026
cd6ac88
improve imports
chirag-madlani Apr 6, 2026
bdbfcaa
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 7, 2026
fcb911a
run checkstyle
chirag-madlani Apr 7, 2026
6874953
fix build
chirag-madlani Apr 7, 2026
f384934
fix css imports
chirag-madlani Apr 7, 2026
0b78f06
update
chirag-madlani Apr 7, 2026
73904cb
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 8, 2026
0ec3718
improve imports
chirag-madlani Apr 8, 2026
69c53c5
lazy load local options
chirag-madlani Apr 8, 2026
2a60599
refactor entityUtils
chirag-madlani Apr 9, 2026
2de630f
update
chirag-madlani Apr 11, 2026
1414cec
update
chirag-madlani Apr 11, 2026
203e3e0
fix failures
chirag-madlani Apr 13, 2026
52333ac
apply checkstyle
chirag-madlani Apr 13, 2026
a12427a
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 13, 2026
f35d8e6
fix build issue
chirag-madlani Apr 13, 2026
269a59d
address comments
chirag-madlani Apr 13, 2026
af65a6a
fix import error
chirag-madlani Apr 13, 2026
84daf1e
fix import error
chirag-madlani Apr 13, 2026
7fce04e
fix tests
chirag-madlani Apr 13, 2026
b089ef6
fix tests
chirag-madlani Apr 14, 2026
9ee338e
move local to classBase approach
chirag-madlani Apr 14, 2026
c276740
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 14, 2026
8d15f9e
fix tests and update local usage
chirag-madlani Apr 14, 2026
3aab0f5
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 15, 2026
61adb1a
fix import error
chirag-madlani Apr 15, 2026
2cd98fb
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 15, 2026
1ee853a
fix unit tests
chirag-madlani Apr 15, 2026
368ab82
fix entityUtils imports
chirag-madlani Apr 15, 2026
0b8c957
fix test and checkstyle
chirag-madlani Apr 15, 2026
9a18131
fix failing playwright
chirag-madlani Apr 15, 2026
11b2b24
fix plugin issue
chirag-madlani Apr 15, 2026
7dfc9c1
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 15, 2026
1518df3
address comments
chirag-madlani Apr 15, 2026
c685ef9
address comments
chirag-madlani Apr 15, 2026
2747ce8
fix unit tests
chirag-madlani Apr 16, 2026
99e2576
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 16, 2026
b11ef67
address comment
chirag-madlani Apr 16, 2026
f05a560
fix localization issue with playwright
chirag-madlani Apr 16, 2026
6a551ff
fix login.spec
chirag-madlani Apr 16, 2026
61d790e
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 17, 2026
d66719b
fix login spec failure
chirag-madlani Apr 17, 2026
1d4be7f
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 17, 2026
92cfc32
fix login spec
chirag-madlani Apr 17, 2026
eff7401
address comments
chirag-madlani Apr 17, 2026
a6f63a6
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 17, 2026
9707eba
final fix to icons
chirag-madlani Apr 17, 2026
b697ab8
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 17, 2026
15ee0ad
Merge branch 'main' into enahncement-loading-time
chirag-madlani Apr 18, 2026
bc47919
fix failing playwrights
chirag-madlani Apr 18, 2026
179c8bd
fix checkstyle
chirag-madlani Apr 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions openmetadata-ui/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@
<!--arguments>build</arguments-->
<environmentVariables>
<NODE_OPTIONS>--max-old-space-size=${node.heap.size}</NODE_OPTIONS>
<APP_VERSION>${project.version}</APP_VERSION>
</environmentVariables>
Comment on lines 152 to 156
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description says this “Fixes #3457” (replying on deleted entity threads), but the changes here are build/routing performance tweaks (APP_VERSION env var for cache busting) and don’t appear related to that backend/UI behavior. Please update the PR title/description to reference the correct issue, or link the relevant issue for these frontend build optimizations.

Copilot uses AI. Check for mistakes.
</configuration>
</execution>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,49 @@
*/

import { isEmpty, isNil } from 'lodash';
import { useCallback, useEffect } from 'react';
import { lazy, useCallback, useEffect } from 'react';
import { Navigate, Route, Routes } from 'react-router-dom';
import { useAnalytics } from 'use-analytics';
import { useShallow } from 'zustand/react/shallow';
import { ROUTES } from '../../constants/constants';
import { CustomEventTypes } from '../../generated/analytics/webAnalyticEventData';
import { useApplicationStore } from '../../hooks/useApplicationStore';
import useCustomLocation from '../../hooks/useCustomLocation/useCustomLocation';
import AccessNotAllowedPage from '../../pages/AccessNotAllowedPage/AccessNotAllowedPage';
import { LogoutPage } from '../../pages/LogoutPage/LogoutPage';
import PageNotFound from '../../pages/PageNotFound/PageNotFound';
import SamlCallback from '../../pages/SamlCallback';
import SignUpPage from '../../pages/SignUp/SignUpPage';
import applicationRoutesClass from '../../utils/ApplicationRoutesClassBase';
import AppContainer from '../AppContainer/AppContainer';
import Loader from '../common/Loader/Loader';
import { useApplicationsProvider } from '../Settings/Applications/ApplicationsProvider/ApplicationsProvider';
import { RoutePosition } from '../Settings/Applications/plugins/AppPlugin';
import withSuspenseFallback from './withSuspenseFallback';

// Lazy-load the entire authenticated shell so login page users never download it
const AppContainer = withSuspenseFallback(
lazy(() => import('../AppContainer/AppContainer'))
);

// Lazy-load infrequently-visited unauthenticated pages
const AccessNotAllowedPage = withSuspenseFallback(
lazy(() => import('../../pages/AccessNotAllowedPage/AccessNotAllowedPage'))
);

const LogoutPage = withSuspenseFallback(
lazy(() =>
import('../../pages/LogoutPage/LogoutPage').then((m) => ({
default: m.LogoutPage,
}))
)
);

const PageNotFound = withSuspenseFallback(
lazy(() => import('../../pages/PageNotFound/PageNotFound'))
);

const SamlCallback = withSuspenseFallback(
lazy(() => import('../../pages/SamlCallback'))
);

const SignUpPage = withSuspenseFallback(
lazy(() => import('../../pages/SignUp/SignUpPage'))
);

const AppRouter = () => {
const location = useCustomLocation();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,65 +21,64 @@ import {
import { usePermissionProvider } from '../../context/PermissionProvider/PermissionProvider';
import { ResourceEntity } from '../../context/PermissionProvider/PermissionProvider.interface';
import { Operation } from '../../generated/entity/policies/policy';
import AddCustomMetricPage from '../../pages/AddCustomMetricPage/AddCustomMetricPage';
import { CustomizablePage } from '../../pages/CustomizablePage/CustomizablePage';
import DataQualityPage from '../../pages/DataQuality/DataQualityPage';
import ForbiddenPage from '../../pages/ForbiddenPage/ForbiddenPage';
import PlatformLineage from '../../pages/PlatformLineage/PlatformLineage';
import TagPage from '../../pages/TagPage/TagPage';
import { checkPermission, userPermissions } from '../../utils/PermissionsUtils';
import { useApplicationsProvider } from '../Settings/Applications/ApplicationsProvider/ApplicationsProvider';
import { RoutePosition } from '../Settings/Applications/plugins/AppPlugin';
import AdminProtectedRoute from './AdminProtectedRoute';
import withSuspenseFallback from './withSuspenseFallback';

const DomainRouter = withSuspenseFallback(
// Previously statically imported — lazify so they stay out of the main chunk
const AddCustomMetricPage = withSuspenseFallback(
React.lazy(
() => import(/* webpackChunkName: "DomainRouter" */ './DomainRouter')
() => import('../../pages/AddCustomMetricPage/AddCustomMetricPage')
)
);
const DataProductListPage = withSuspenseFallback(
React.lazy(
() =>
import(
/* webpackChunkName: "DataProductListPage" */ '../DataProduct/DataProductListPage'
)

const CustomizablePage = withSuspenseFallback(
React.lazy(() =>
import('../../pages/CustomizablePage/CustomizablePage').then((m) => ({
default: m.CustomizablePage,
}))
)
);

const DataQualityPage = withSuspenseFallback(
React.lazy(() => import('../../pages/DataQuality/DataQualityPage'))
);

const ForbiddenPage = withSuspenseFallback(
React.lazy(() => import('../../pages/ForbiddenPage/ForbiddenPage'))
);

const PlatformLineage = withSuspenseFallback(
React.lazy(() => import('../../pages/PlatformLineage/PlatformLineage'))
);

const TagPage = withSuspenseFallback(
React.lazy(() => import('../../pages/TagPage/TagPage'))
);

const DomainRouter = withSuspenseFallback(
React.lazy(() => import('./DomainRouter'))
);
const DataProductListPage = withSuspenseFallback(
React.lazy(() => import('../DataProduct/DataProductListPage'))
);
const SettingsRouter = withSuspenseFallback(
React.lazy(
() => import(/* webpackChunkName: "SettingsRouter" */ './SettingsRouter')
)
React.lazy(() => import('./SettingsRouter'))
);
const EntityRouter = withSuspenseFallback(
React.lazy(
() => import(/* webpackChunkName: "EntityRouter" */ './EntityRouter')
)
React.lazy(() => import('./EntityRouter'))
);
const ClassificationRouter = withSuspenseFallback(
React.lazy(
() =>
import(
/* webpackChunkName: "ClassificationRouter" */ './ClassificationRouter'
)
)
React.lazy(() => import('./ClassificationRouter'))
);
const GlossaryRouter = withSuspenseFallback(
React.lazy(
() =>
import(
/* webpackChunkName: "GlossaryRouter" */ './GlossaryRouter/GlossaryRouter'
)
)
React.lazy(() => import('./GlossaryRouter/GlossaryRouter'))
);

const GlossaryTermRouter = withSuspenseFallback(
React.lazy(
() =>
import(
/* webpackChunkName: "GlossaryTermRouter" */ './GlossaryTermRouter/GlossaryTermRouter'
)
)
React.lazy(() => import('./GlossaryTermRouter/GlossaryTermRouter'))
);

const MyDataPage = withSuspenseFallback(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,7 @@ import { ROUTES } from '../../constants/constants';
import { AuthProvider } from '../../generated/configuration/authenticationConfiguration';
import { useApplicationStore } from '../../hooks/useApplicationStore';
import useCustomLocation from '../../hooks/useCustomLocation/useCustomLocation';
import PageNotFound from '../../pages/PageNotFound/PageNotFound';
import AccountActivationConfirmation from '../../pages/SignUp/account-activation-confirmation.component';
import applicationRoutesClass from '../../utils/ApplicationRoutesClassBase';
import Auth0Callback from '../Auth/AppCallbacks/Auth0Callback/Auth0Callback';
import withSuspenseFallback from './withSuspenseFallback';

const SigninPage = withSuspenseFallback(
Expand All @@ -40,6 +37,18 @@ const BasicSignupPage = withSuspenseFallback(
lazy(() => import('../../pages/SignUp/BasicSignup.component'))
);

const PageNotFound = withSuspenseFallback(
lazy(() => import('../../pages/PageNotFound/PageNotFound'))
);

const AccountActivationConfirmation = withSuspenseFallback(
lazy(() => import('../../pages/SignUp/account-activation-confirmation.component'))
);

const Auth0Callback = withSuspenseFallback(
lazy(() => import('../Auth/AppCallbacks/Auth0Callback/Auth0Callback'))
);

export const UnAuthenticatedAppRouter = () => {
const location = useCustomLocation();
const { authConfig, isSigningUp } = useApplicationStore(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,13 @@ const ErrorFallback: React.FC<FallbackProps> = ({
}) => {
const navigate = useNavigate();

const isChunkLoadError = error.message?.startsWith('Loading chunk');
const isChunkLoadError =
error?.name === 'ChunkLoadError' ||
error.message?.startsWith('Loading chunk') || // Legacy Webpack
error.message
?.toLowerCase()
.includes('failed to fetch dynamically imported module') || // Vite
error.message?.toLowerCase().includes('importing a module script failed'); // Vite (Safari)

const message = isChunkLoadError
? t('message.please-refresh-the-page')
Expand Down
Loading
Loading