The selector returned a freshly constructed authority object each call, so useSyncExternalStore saw a new reference every render and force-rerendered, producing a maximum update depth crash. Select the specific workspace descriptor (stable reference) and derive the authority via useMemo.