diff --git a/superset-frontend/src/dashboard/components/gridComponents/Chart/Chart.jsx b/superset-frontend/src/dashboard/components/gridComponents/Chart/Chart.jsx
index f30bcfa4e9f4..4db7d1a31aef 100644
--- a/superset-frontend/src/dashboard/components/gridComponents/Chart/Chart.jsx
+++ b/superset-frontend/src/dashboard/components/gridComponents/Chart/Chart.jsx
@@ -613,8 +613,9 @@ export default memo(Chart, (prevProps, nextProps) => {
}
return (
!nextProps.isComponentVisible ||
- (prevProps.isInView === nextProps.isInView &&
- prevProps.componentId === nextProps.componentId &&
+ (prevProps.componentId === nextProps.componentId &&
+ prevProps.isComponentVisible &&
+ prevProps.isInView === nextProps.isInView &&
prevProps.id === nextProps.id &&
prevProps.dashboardId === nextProps.dashboardId &&
prevProps.extraControls === nextProps.extraControls &&
diff --git a/superset-frontend/src/dashboard/components/gridComponents/Chart/Chart.test.jsx b/superset-frontend/src/dashboard/components/gridComponents/Chart/Chart.test.jsx
index a00b9e88c086..bb49952601fb 100644
--- a/superset-frontend/src/dashboard/components/gridComponents/Chart/Chart.test.jsx
+++ b/superset-frontend/src/dashboard/components/gridComponents/Chart/Chart.test.jsx
@@ -267,3 +267,33 @@ test('should call exportChart with row_limit props.maxRows when exportFullXLSX i
stubbedExportXLSX.mockRestore();
});
+
+test('should re-render when chart becomes visible', () => {
+ const { rerender, getByTestId } = setup({ isComponentVisible: false });
+ expect(getByTestId('chart-container')).toBeInTheDocument();
+
+ rerender();
+ expect(getByTestId('chart-container')).toBeInTheDocument();
+});
+
+test('should re-render when componentId changes', () => {
+ const { rerender, getByTestId } = setup({
+ isComponentVisible: true,
+ componentId: 'test-1',
+ });
+ expect(getByTestId('chart-container')).toBeInTheDocument();
+
+ rerender();
+ expect(getByTestId('chart-container')).toBeInTheDocument();
+});
+
+test('should re-render when cacheBusterProp changes', () => {
+ const { rerender, getByTestId } = setup({
+ isComponentVisible: true,
+ cacheBusterProp: 'v1',
+ });
+ expect(getByTestId('chart-container')).toBeInTheDocument();
+
+ rerender();
+ expect(getByTestId('chart-container')).toBeInTheDocument();
+});