diff --git a/apps/canvas/front/src/components/node-gateway-https.tsx b/apps/canvas/front/src/components/node-gateway-https.tsx
index e618943..6effb26 100644
--- a/apps/canvas/front/src/components/node-gateway-https.tsx
+++ b/apps/canvas/front/src/components/node-gateway-https.tsx
@@ -125,7 +125,7 @@
       return nodes.find((n) => n.id === https.serviceId)! as ServiceNode;
     }
     return null;
-  }, [data]);
+  }, [data, nodes]);
   const selectable = useMemo(() => {
     return nodes.filter((n) => {
       if (n.id === id) {
@@ -139,14 +139,14 @@
       }
       return n.data && n.data.ports && n.data.ports.length > 0;
     })
-  }, [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") {
         return;
       }
       switch (name) {
-        case "id":
+        case "id": {
           if (!value.id) {
             break;
           }
@@ -159,6 +159,7 @@
             targetHandle: "https",
           }, cid);
           break;
+        }
         case "portId":
           store.updateNodeData<"gateway-https">(id, {
             https: {
@@ -170,7 +171,7 @@
       }
     });
     return () => sub.unsubscribe();
-  }, [connectedToForm, store, selectable]);
+  }, [id, connectedToForm, store, selectable]);
   const authEnabledForm = useForm<z.infer<typeof authEnabledSchema>>({
     resolver: zodResolver(authEnabledSchema),
     mode: "onChange",
@@ -224,7 +225,7 @@
       },
     });
     authGroupForm.reset();
-  }, [id, data, store]);
+  }, [id, data, store, authGroupForm]);
   const removeNoAuthPathPattern = useCallback((path: string) => {
     const noAuthPathPatterns = data?.auth?.noAuthPathPatterns || [];
     store.updateNodeData<"gateway-https">(id, {
@@ -245,7 +246,7 @@
       },
     });
     authNoAuthPatternFrom.reset();
-  }, [id, data, store]);
+  }, [id, data, store, authNoAuthPatternFrom]);
   return (
     <>
       <Form {...form}>
