diff --git a/apps/canvas/front/src/components/actions.tsx b/apps/canvas/front/src/components/actions.tsx
index 0f39e4e..54449c4 100644
--- a/apps/canvas/front/src/components/actions.tsx
+++ b/apps/canvas/front/src/components/actions.tsx
@@ -57,7 +57,7 @@
             }
         };
         setTimeout(m, 100);
-    }, [projectId, nodes]);
+    }, [projectId, nodes, store]);
     const deploy = useCallback(async () => {
         if (projectId == null) {
             return;
@@ -99,8 +99,7 @@
         } finally {
             setLoading(false);
         }
-    }, [projectId, instance, nodes, env, setLoading]);
-    const [st, setSt] = useState<string>();
+    }, [projectId, instance, nodes, env, setLoading, toast, monitor]);
     const save = useCallback(async () => {
         if (projectId == null) {
             return;
@@ -123,7 +122,7 @@
                 description: await resp.text(),
             });
         }
-    }, [projectId, instance, setSt]);
+    }, [projectId, instance, toast]);
     const restoreSaved = useCallback(async () => {
         if (projectId == null) {
             return;
@@ -136,12 +135,12 @@
         store.setNodes(inst.nodes || []);
         store.setEdges(inst.edges || []);
         instance.setViewport({ x, y, zoom });
-    }, [projectId, instance, st]);
+    }, [projectId, instance, store]);
     const clear = useCallback(() => {
         store.setEdges([]);
         store.setNodes([]);
         instance.setViewport({ x: 0, y: 0, zoom: 1 });
-    }, [store]);
+    }, [store, instance]);
     // TODO(gio): Update store
     const deleteProject = useCallback(async () => {
         if (projectId == null) {
@@ -163,7 +162,7 @@
                 description: await resp.text(),
             });
         }
-    }, [store, clear]);
+    }, [store, clear, projectId, toast]);
     const [props, setProps] = useState({});
     useEffect(() => {
         if (loading) {
