diff --git a/apps/canvas/front/src/components/node-gateway-tcp.tsx b/apps/canvas/front/src/components/node-gateway-tcp.tsx
index 3588502..e16fdd2 100644
--- a/apps/canvas/front/src/components/node-gateway-tcp.tsx
+++ b/apps/canvas/front/src/components/node-gateway-tcp.tsx
@@ -104,7 +104,7 @@
       portId: data.selected?.portId,
     });
     console.log(connectedToForm.getValues());
-  }, [connectedToForm, data]);
+  }, [id, connectedToForm, data]);
   const nodes = useNodes<AppNode>();
   const [selected, setSelected] = useState<AppNode | undefined>(undefined);
   useEffect(() => {
@@ -114,7 +114,7 @@
       const serviceId = data.selected.serviceId;
       setSelected(nodes.find((n) => n.id === serviceId));
     }
-  }, [data, setSelected]);
+  }, [id, data, setSelected, nodes]);
   const selectable = useMemo(() => {
     console.log(selected);
     return nodes.filter((n) => {
@@ -129,7 +129,7 @@
       }
       return false;
     })
-  }, [nodes, selected]);
+  }, [id, nodes, selected]);
   useEffect(() => {
     const sub = connectedToForm.watch((value: DeepPartial<z.infer<typeof connectedToSchema>>, { name, type }: { name?: keyof z.infer<typeof connectedToSchema> | undefined, type?: EventType | undefined }) => {
       if (type !== "change") {
@@ -160,7 +160,7 @@
       }
     });
     return () => sub.unsubscribe();
-  }, [connectedToForm, store]);
+  }, [id, connectedToForm, store]);
   const [nodeLabels, setNodeLabels] = useState(new Map<string, string>());
   const [portLabels, setPortLabels] = useState(new Map<string, string>());
   useEffect(() => {
@@ -184,7 +184,7 @@
       target: id,
       targetHandle: "tcp",
     }))));
-  }, [id, data, connectedToForm, store, setNodeLabels, setPortLabels]);
+  }, [id, data, store]);
   return (
     <>
       <Form {...form}>
