diff --git a/src/lib/spa-route.test.ts b/src/lib/spa-route.test.ts
index 1a731fc..a56db60 100644
--- a/src/lib/spa-route.test.ts
+++ b/src/lib/spa-route.test.ts
@@ -4,6 +4,7 @@ import { isSpaRoute } from './spa-route';
describe('Reader SPA route boundary', () => {
it.each([
'/about',
+ '/app',
'/privacy',
'/sample',
'/library',
diff --git a/src/lib/spa-route.ts b/src/lib/spa-route.ts
index 990977f..c8b2eb5 100644
--- a/src/lib/spa-route.ts
+++ b/src/lib/spa-route.ts
@@ -1,5 +1,6 @@
const EXACT_SPA_ROUTES = new Set([
'/about',
+ '/app',
'/privacy',
'/welcome',
'/sample',
diff --git a/src/router.tsx b/src/router.tsx
index 45189a2..e8a4cee 100644
--- a/src/router.tsx
+++ b/src/router.tsx
@@ -1,5 +1,5 @@
import type { ComponentType } from 'react';
-import { createBrowserRouter } from 'react-router-dom';
+import { createBrowserRouter, Navigate } from 'react-router-dom';
import RootLayout from './RootLayout';
@@ -27,6 +27,7 @@ export const router = createBrowserRouter([
hydrateFallbackElement: ,
children: [
{ path: 'about', lazy: () => lazyPage(() => import('./pages/AboutPage')) },
+ { path: 'app', element: },
{ path: 'privacy', lazy: () => lazyPage(() => import('./pages/PrivacyPage')) },
{ path: 'welcome', lazy: () => lazyPage(() => import('./pages/WelcomePage')) },
{ path: 'sample', lazy: () => lazyPage(() => import('./pages/SamplePage')) },