diff --git a/.changeset/preact-v11-peer-dependency.md b/.changeset/preact-v11-peer-dependency.md new file mode 100644 index 00000000000..360bf58d6fd --- /dev/null +++ b/.changeset/preact-v11-peer-dependency.md @@ -0,0 +1,7 @@ +--- +'@tanstack/preact-query': patch +'@tanstack/preact-query-devtools': patch +'@tanstack/preact-query-persist-client': patch +--- + +Add Preact v11 to peerDependencies diff --git a/packages/preact-query-devtools/package.json b/packages/preact-query-devtools/package.json index fa7ecd600fd..01b7025d86b 100644 --- a/packages/preact-query-devtools/package.json +++ b/packages/preact-query-devtools/package.json @@ -89,6 +89,6 @@ }, "peerDependencies": { "@tanstack/preact-query": "workspace:^", - "preact": "^10.0.0" + "preact": "^10.0.0 || ^11.0.0-0" } } diff --git a/packages/preact-query-devtools/src/__tests__/PreactQueryDevtools.test.tsx b/packages/preact-query-devtools/src/__tests__/PreactQueryDevtools.test.tsx index 75e69860edd..33862ef5108 100644 --- a/packages/preact-query-devtools/src/__tests__/PreactQueryDevtools.test.tsx +++ b/packages/preact-query-devtools/src/__tests__/PreactQueryDevtools.test.tsx @@ -1,5 +1,5 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' -import { render } from '@testing-library/preact' +import { act, render } from '@testing-library/preact' import { QueryClient, QueryClientProvider } from '@tanstack/preact-query' import { TanstackQueryDevtools } from '@tanstack/query-devtools' import type { PreactQueryDevtools as PreactQueryDevtoolsComponent } from '../PreactQueryDevtools' @@ -216,7 +216,9 @@ describe('PreactQueryDevtools', () => { it('should call "unmount" on the devtools instance when the component unmounts', () => { const { unmount } = render() - unmount() + act(() => { + unmount() + }) expect(unmountMock).toHaveBeenCalled() }) diff --git a/packages/preact-query-devtools/src/__tests__/PreactQueryDevtoolsPanel.test.tsx b/packages/preact-query-devtools/src/__tests__/PreactQueryDevtoolsPanel.test.tsx index 3eedadff41f..586987bb9a1 100644 --- a/packages/preact-query-devtools/src/__tests__/PreactQueryDevtoolsPanel.test.tsx +++ b/packages/preact-query-devtools/src/__tests__/PreactQueryDevtoolsPanel.test.tsx @@ -1,5 +1,5 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' -import { render } from '@testing-library/preact' +import { act, render } from '@testing-library/preact' import { QueryClient, QueryClientProvider } from '@tanstack/preact-query' import { TanstackQueryDevtoolsPanel } from '@tanstack/query-devtools' import type { PreactQueryDevtoolsPanel as PreactQueryDevtoolsPanelComponent } from '../PreactQueryDevtoolsPanel' @@ -175,7 +175,9 @@ describe('PreactQueryDevtoolsPanel', () => { const { unmount } = render( , ) - unmount() + act(() => { + unmount() + }) expect(unmountMock).toHaveBeenCalled() }) diff --git a/packages/preact-query-devtools/test-setup.ts b/packages/preact-query-devtools/test-setup.ts index e7b70f873e2..c509f3ae57f 100644 --- a/packages/preact-query-devtools/test-setup.ts +++ b/packages/preact-query-devtools/test-setup.ts @@ -4,8 +4,11 @@ import { notifyManager } from '@tanstack/preact-query' import { afterEach } from 'vitest' // https://testing-library.com/docs/preact-testing-library/api#cleanup +// Wrap in act so effect cleanups Preact defers on unmount run synchronously afterEach(() => { - cleanupRTL() + act(() => { + cleanupRTL() + }) }) // Wrap notifications with act to make sure Preact knows about Query updates diff --git a/packages/preact-query-persist-client/package.json b/packages/preact-query-persist-client/package.json index 40d63c1f334..09fe66c4deb 100644 --- a/packages/preact-query-persist-client/package.json +++ b/packages/preact-query-persist-client/package.json @@ -69,6 +69,6 @@ }, "peerDependencies": { "@tanstack/preact-query": "workspace:^", - "preact": "^10.0.0" + "preact": "^10.0.0 || ^11.0.0-0" } } diff --git a/packages/preact-query-persist-client/test-setup.ts b/packages/preact-query-persist-client/test-setup.ts index 62f11f2a29d..31f5c884e75 100644 --- a/packages/preact-query-persist-client/test-setup.ts +++ b/packages/preact-query-persist-client/test-setup.ts @@ -4,8 +4,11 @@ import { afterEach } from 'vitest' import { notifyManager } from '@tanstack/preact-query' // https://testing-library.com/docs/preact-testing-library/api#cleanup +// Wrap in act so effect cleanups Preact defers on unmount run synchronously afterEach(() => { - cleanupRTL() + act(() => { + cleanupRTL() + }) }) // Wrap notifications with act to make sure Preact knows about Query updates diff --git a/packages/preact-query/package.json b/packages/preact-query/package.json index c31954e2239..0624802a683 100644 --- a/packages/preact-query/package.json +++ b/packages/preact-query/package.json @@ -75,6 +75,6 @@ "typescript-eslint": "^8.54.0" }, "peerDependencies": { - "preact": "^10.0.0" + "preact": "^10.0.0 || ^11.0.0-0" } } diff --git a/packages/preact-query/src/__tests__/useQuery.test.tsx b/packages/preact-query/src/__tests__/useQuery.test.tsx index 137e8c43936..c77a806c1c9 100644 --- a/packages/preact-query/src/__tests__/useQuery.test.tsx +++ b/packages/preact-query/src/__tests__/useQuery.test.tsx @@ -3966,7 +3966,9 @@ describe('useQuery', () => { rendered.getByText('fetched data') const setTimeoutSpy = vi.spyOn(globalThis.window, 'setTimeout') - rendered.unmount() + act(() => { + rendered.unmount() + }) expect(setTimeoutSpy).not.toHaveBeenCalled() }) @@ -3990,7 +3992,9 @@ describe('useQuery', () => { const setTimeoutSpy = vi.spyOn(globalThis.window, 'setTimeout') - rendered.unmount() + act(() => { + rendered.unmount() + }) expect(setTimeoutSpy).toHaveBeenLastCalledWith( expect.any(Function), diff --git a/packages/preact-query/src/utils.ts b/packages/preact-query/src/utils.ts index 94a449dd18a..85a31aba89c 100644 --- a/packages/preact-query/src/utils.ts +++ b/packages/preact-query/src/utils.ts @@ -67,7 +67,7 @@ export function useSyncExternalStoreWithSelector( selector: (snapshot: TSnapshot) => TSelected, isEqual: (a: TSelected, b: TSelected) => boolean, ): TSelected { - const selectedSnapshotRef = useRef() + const selectedSnapshotRef = useRef(undefined) const getSelectedSnapshot = () => { const snapshot = getSnapshot() diff --git a/packages/preact-query/test-setup.ts b/packages/preact-query/test-setup.ts index 478cb07bdd8..ec9fac062b2 100644 --- a/packages/preact-query/test-setup.ts +++ b/packages/preact-query/test-setup.ts @@ -4,8 +4,11 @@ import { act, cleanup as cleanupRTL } from '@testing-library/preact' import { afterEach } from 'vitest' // https://testing-library.com/docs/preact-testing-library/api#cleanup +// Wrap in act so effect cleanups Preact defers on unmount run synchronously afterEach(() => { - cleanupRTL() + act(() => { + cleanupRTL() + }) }) // Wrap notifications with act to make sure React knows about React Query updates