Improved initial load time

This commit is contained in:
2026-01-30 16:52:44 -06:00
parent f2a75c954f
commit b075f4b4f7
6 changed files with 70 additions and 34 deletions
+22 -9
View File
@@ -1,9 +1,10 @@
import { type Component, type JSX, createSignal, Show } from "solid-js";
import { type Component, type JSX, createSignal, Show, lazy, Suspense, onMount } from "solid-js";
import { Sidebar, BottomNav } from "./Navigation";
import { QuickEntry } from "./QuickEntry";
import { TaskDetail } from "./TaskDetail";
import { store, activeTaskId, setActiveTaskId } from "@/store";
import { PanelLeftOpen } from "lucide-solid";
const TaskDetail = lazy(() => import("./TaskDetail").then(m => ({ default: m.TaskDetail })));
const QuickEntry = lazy(() => import("./QuickEntry").then(m => ({ default: m.QuickEntry })));
import { Button } from "./ui/button";
import { cn } from "@/lib/utils";
@@ -17,6 +18,14 @@ export const Layout: Component<LayoutProps> = (props) => {
const [isSidebarLocked, setIsSidebarLocked] = createSignal(true);
const [isSidebarPeeking, setIsSidebarPeeking] = createSignal(false);
onMount(() => {
// Preload TaskDetail and QuickEntry in background
setTimeout(() => {
import("./TaskDetail");
import("./QuickEntry");
}, 500);
});
// Derived active task for the detail view
const activeTask = () => store.tasks.find(t => t.id === activeTaskId());
@@ -58,14 +67,18 @@ export const Layout: Component<LayoutProps> = (props) => {
<BottomNav currentView={props.currentView} setView={props.setView} />
</div>
<QuickEntry />
<Suspense>
<QuickEntry />
</Suspense>
<Show when={activeTask()}>
<TaskDetail
task={activeTask()!}
isOpen={!!activeTaskId()}
onClose={() => setActiveTaskId(null)}
/>
<Suspense>
<TaskDetail
task={activeTask()!}
isOpen={!!activeTaskId()}
onClose={() => setActiveTaskId(null)}
/>
</Suspense>
</Show>
</div>
);