From f495c0aba34b9a12a581f5fd8fffc00a4adbf137 Mon Sep 17 00:00:00 2001 From: Tobias Merkle Date: Wed, 24 Sep 2025 11:15:22 -0400 Subject: [PATCH 1/4] fix #852 --- .../src/components/Home/components/Widget.tsx | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/hyperdrive/packages/homepage/ui/src/components/Home/components/Widget.tsx b/hyperdrive/packages/homepage/ui/src/components/Home/components/Widget.tsx index 44a091c14..cbc531680 100644 --- a/hyperdrive/packages/homepage/ui/src/components/Home/components/Widget.tsx +++ b/hyperdrive/packages/homepage/ui/src/components/Home/components/Widget.tsx @@ -1,4 +1,4 @@ -import React, { useState, useRef } from 'react'; +import React, { useState, useRef, useMemo } from 'react'; import type { HomepageApp } from '../../../types/app.types'; import { usePersistenceStore } from '../../../stores/persistenceStore'; import { Draggable } from './Draggable'; @@ -48,7 +48,7 @@ export const Widget: React.FC = ({ app, index, totalWidgets, childr } }; - const size = settings.size || calculateSize(); + const size = useMemo(() => settings.size || calculateSize(), [settings.size]); // Calculate responsive position based on index const calculatePosition = () => { @@ -67,7 +67,7 @@ export const Widget: React.FC = ({ app, index, totalWidgets, childr } }; - const position = settings.position || calculatePosition(); + const position = useMemo(() => settings.position || calculatePosition(), [settings.position]); // Widgets can either have widget HTML content or be loaded from their app URL const isHtmlWidget = app.widget && app.widget !== 'true' && app.widget.includes('<'); @@ -132,10 +132,13 @@ export const Widget: React.FC = ({ app, index, totalWidgets, childr >