**Intended outcome:** useReactiveVar does not get stuck on old value. **Actual outcome:** useReactiveVar can get stuck and stop updating in case of a race condition. This seems to happen at least in cases where the are multiple sources updating the variable. **How to reproduce the issue:** The number should keep updating, but it gets stuck. This can be further tested by stopping the timer jobs and manually trying to change the value, and it does not result in the component getting updated. https://codesandbox.io/s/usereactivevar-gets-stuck-0hixe3?file=/src/App.js **Fix proposition** This alternative implementation would seem to work correctly, as can be tested in the POC codesandbox. And in my project where I 1st saw this bug. Will open PR soon. ```typescript function useReactiveVar<T>(rv: ReactiveVar<T>) { const value = rv(); const [, setValue] = useState(value); useEffect(() => { // We need a stable handle to function passed into rv.onNextChange. // Se that we can clean it up properly. // See ReactiveVar implementation for reasoning // @apollo/client/cache/inmemory/reactiveVars.js const onNextChange = (v: T) => { setValue(v); listenForUpdate(); }; const listenForUpdate = () => rv.onNextChange(onNextChange); return listenForUpdate(); }, [rv]); return value; } ``` **Versions** System: OS: Linux 5.19 Arch Linux Binaries: Node: 18.8.0 - /usr/bin/node Yarn: 1.22.19 - /usr/bin/yarn npm: 8.19.0 - /usr/bin/npm Browsers: Chrome: 105.0.5195.52 Firefox: 104.0.1 npmPackages: @apollo/client: ^3.6.9 => 3.6.9 npmGlobalPackages: apollo: 2.33.3