diff --git a/apps/canvas/front/src/ProjectSelect.tsx b/apps/canvas/front/src/ProjectSelect.tsx
index 699fb04..6903c5e 100644
--- a/apps/canvas/front/src/ProjectSelect.tsx
+++ b/apps/canvas/front/src/ProjectSelect.tsx
@@ -1,7 +1,6 @@
 import { ChangeEvent, useCallback, useEffect, useState } from "react";
 import { Project, useProjectId, useStateStore } from "./lib/state";
 import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./components/ui/select";
-import { useReactFlow } from "@xyflow/react";
 import { Input } from "./components/ui/input";
 import { Button } from "./components/ui/button";
 import { Dialog, DialogContent, DialogTrigger } from "./components/ui/dialog";
@@ -37,7 +36,6 @@
 		refreshProjects();
 	}, [refreshProjects]);
 
-	const project = useProjectId();
 	const [createNewOpen, setCreateNewOpen] = useState(false);
 	const onSelect = useCallback(
 		(projectId: string) => {
@@ -49,26 +47,6 @@
 		},
 		[store],
 	);
-	const instance = useReactFlow();
-	const restoreSaved = useCallback(
-		async (projectId: string) => {
-			const resp = await fetch(`/api/project/${projectId}/saved`, {
-				method: "GET",
-			});
-			const inst = await resp.json();
-			const { x = 0, y = 0, zoom = 1 } = inst.viewport;
-			instance.setNodes(inst.nodes || []);
-			instance.setEdges(inst.edges || []);
-			instance.setViewport({ x, y, zoom });
-		},
-		[instance],
-	);
-	useEffect(() => {
-		if (project == null) {
-			return;
-		}
-		restoreSaved(project);
-	}, [project, restoreSaved]);
 	const [name, setName] = useState<string | undefined>(undefined);
 	const updateName = useCallback(
 		(e: ChangeEvent<HTMLInputElement>) => {
@@ -111,9 +89,9 @@
 			});
 	}, [name, setCreateNewOpen, toast, store, refreshProjects]);
 	return (
-		<Select onValueChange={onSelect} value={project}>
+		<Select onValueChange={onSelect} value={projectId}>
 			<SelectTrigger className="w-[200px] !border-none !shadow-none !focus:ring-0 !focus:ring-offset-0">
-				<SelectValue placeholder="Choose Project" defaultValue={project} />
+				<SelectValue placeholder="Choose Project" defaultValue={projectId} />
 			</SelectTrigger>
 			<SelectContent>
 				{projects.map((p) => (
