diff --git a/web/src/App.tsx b/web/src/App.tsx
index 2fd8a98e..699857f0 100644
--- a/web/src/App.tsx
+++ b/web/src/App.tsx
@@ -1,9 +1,10 @@
import { CssVarsProvider } from "@mui/joy/styles";
-import { useEffect } from "react";
+import { useEffect, Suspense } from "react";
import { useTranslation } from "react-i18next";
import { RouterProvider } from "react-router-dom";
import { locationService } from "./services";
import { useAppSelector } from "./store";
+import Loading from "./pages/Loading";
import router from "./router";
import * as storage from "./helpers/storage";
import theme from "./theme";
@@ -43,7 +44,9 @@ function App() {
return (
-
+ }>
+
+
);
}
diff --git a/web/src/less/loading.less b/web/src/less/loading.less
new file mode 100644
index 00000000..f4702a0e
--- /dev/null
+++ b/web/src/less/loading.less
@@ -0,0 +1,11 @@
+.page-wrapper.loading {
+ @apply flex flex-row justify-center items-center w-full h-screen bg-white dark:bg-zinc-900;
+
+ > .page-container {
+ @apply w-80 max-w-full h-full py-4 flex flex-col justify-center items-center;
+
+ >.loading-icon {
+ @apply animate-spin;
+ }
+ }
+}
diff --git a/web/src/pages/Loading.tsx b/web/src/pages/Loading.tsx
new file mode 100644
index 00000000..10b9bef7
--- /dev/null
+++ b/web/src/pages/Loading.tsx
@@ -0,0 +1,14 @@
+import Icon from "../components/Icon";
+import "../less/loading.less";
+
+function Loading() {
+ return (
+
+ );
+}
+
+export default Loading;
diff --git a/web/src/router/index.tsx b/web/src/router/index.tsx
index 682a97e9..f2398098 100644
--- a/web/src/router/index.tsx
+++ b/web/src/router/index.tsx
@@ -1,10 +1,12 @@
import { createBrowserRouter, redirect } from "react-router-dom";
+import { lazy } from "react";
import { isNullorUndefined } from "../helpers/utils";
import { globalService, userService } from "../services";
-import Auth from "../pages/Auth";
-import Explore from "../pages/Explore";
-import Home from "../pages/Home";
-import MemoDetail from "../pages/MemoDetail";
+
+const Auth = lazy(() => import("../pages/Auth"));
+const Explore = lazy(() => import("../pages/Explore"));
+const Home = lazy(() => import("../pages/Home"));
+const MemoDetail = lazy(() => import("../pages/MemoDetail"));
const router = createBrowserRouter([
{