diff --git a/packages/react-reconciler/src/__tests__/useSyncExternalStore-test.js b/packages/react-reconciler/src/__tests__/useSyncExternalStore-test.js
index 67cefa180a..c27297c120 100644
--- a/packages/react-reconciler/src/__tests__/useSyncExternalStore-test.js
+++ b/packages/react-reconciler/src/__tests__/useSyncExternalStore-test.js
@@ -294,4 +294,51 @@ describe('useSyncExternalStore', () => {
);
},
);
+
+ test('detecting mutation in previously hidden activity subtree', async () => {
+ const store = createExternalStore('revision:1');
+
+ function App({mode, revision}) {
+ return (
+
+
+
+
+
+ );
+ }
+
+ function Wrapper({children, revision}) {
+ useLayoutEffect(() => {
+ store.set('revision:' + revision);
+ }, [revision]);
+
+ return children;
+ }
+
+ function Subscriber() {
+ const revision = useSyncExternalStore(store.subscribe, store.getState);
+ return ;
+ }
+
+ const root = ReactNoop.createRoot();
+
+ // Mount app
+ await act(() => {
+ root.render();
+ });
+ assertLog(['revision:1']);
+
+ // Hide subtree
+ await act(() => {
+ root.render();
+ });
+ assertLog(['revision:1']);
+
+ // Show subtree (and update mutable store in a layout effect)
+ await act(() => {
+ root.render();
+ });
+ assertLog(['revision:1', 'revision:2']);
+ });
});