diff --git a/packages/react-meteor-data/CHANGELOG.md b/packages/react-meteor-data/CHANGELOG.md index d8fe25e6..a104cf9f 100644 --- a/packages/react-meteor-data/CHANGELOG.md +++ b/packages/react-meteor-data/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## v4.0.0-beta.0, xxx +* Breaking change: useFind describes no deps by default [PR#431](https://github.com/meteor/react-packages/pull/431) +* Fix concurrency issue with useFind [PR#419](https://github.com/meteor/react-packages/pull/419) +* Improve `useFind` and `useSubscribe` React suspense hooks [PR#420](https://github.com/meteor/react-packages/pull/429), [PR#430](https://github.com/meteor/react-packages/pull/430) and [PR#441](https://github.com/meteor/react-packages/pull/441) + ## v3.0.3, 2024-12-30 * Add `useSubscribeSuspenseServer` hook to be used in SSR. diff --git a/packages/react-meteor-data/package.js b/packages/react-meteor-data/package.js index c106844a..96886796 100644 --- a/packages/react-meteor-data/package.js +++ b/packages/react-meteor-data/package.js @@ -17,7 +17,7 @@ Package.onUse((api) => { api.use('tracker') api.use('ecmascript') api.use('typescript') - api.use('zodern:types@1.0.13', 'server') + api.use('zodern:types@1.0.13') api.mainModule('index.ts', ['client', 'server'], { lazy: true }) }) diff --git a/packages/react-meteor-data/useFind.ts b/packages/react-meteor-data/useFind.ts index 59244e3d..4fbc9b6d 100644 --- a/packages/react-meteor-data/useFind.ts +++ b/packages/react-meteor-data/useFind.ts @@ -72,24 +72,23 @@ const fetchData = (cursor: Mongo.Cursor) => { } const useSyncEffect = (effect, deps) => { - const [cleanup, timeoutId] = useMemo( - () => { - const cleanup = effect(); - const timeoutId = setTimeout(cleanup, 1000); - return [cleanup, timeoutId]; - }, - deps - ); - - useEffect(() => { - clearTimeout(timeoutId); - - return cleanup; - }, [cleanup]); -}; - - -const useFindClient = (factory: () => (Mongo.Cursor | undefined | null), deps: DependencyList = []) => { + const [cleanup, timeoutId] = useMemo( + () => { + const cleanup = effect(); + const timeoutId = setTimeout(cleanup, 1000); + return [cleanup, timeoutId]; + }, + deps + ); + + useEffect(() => { + clearTimeout(timeoutId); + + return cleanup; + }, [cleanup]); + }; + +const useFindClient = (factory: () => (Mongo.Cursor | undefined | null), deps: DependencyList) => { const cursor = useMemo(() => { // To avoid creating side effects in render, opt out // of Tracker integration altogether.