From c2b68bbbe22695e874a6a9c92f6cae54ee804059 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 20 Mar 2025 09:17:15 +0100 Subject: [PATCH 1/2] fix(react-sdk): reset loading state when context updates --- packages/react-sdk/src/index.tsx | 2 ++ packages/react-sdk/test/usage.test.tsx | 48 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/packages/react-sdk/src/index.tsx b/packages/react-sdk/src/index.tsx index 55cbb8c9..45f9e207 100644 --- a/packages/react-sdk/src/index.tsx +++ b/packages/react-sdk/src/index.tsx @@ -202,6 +202,8 @@ export function BucketProvider({ void clientRef.current.stop(); } + setFeaturesLoading(true); + const client = newBucketClient({ ...config, user, diff --git a/packages/react-sdk/test/usage.test.tsx b/packages/react-sdk/test/usage.test.tsx index 3bf999f2..85e4d709 100644 --- a/packages/react-sdk/test/usage.test.tsx +++ b/packages/react-sdk/test/usage.test.tsx @@ -231,6 +231,54 @@ describe("", () => { expect(initialize).toHaveBeenCalledOnce(); expect(BucketClient.prototype.stop).not.toHaveBeenCalledOnce(); }); + + test("resets loading state when context changes", async () => { + const { queryByTestId, rerender } = render( + getProvider({ + loadingComponent: Loading..., + }), + ); + + // Loading component should be visible initially + expect(queryByTestId("loading")).not.toBeNull(); + + // Wait for initial loading to complete + await waitFor(() => { + expect(queryByTestId("loading")).toBeNull(); + }); + + // Change user context + rerender( + getProvider({ + loadingComponent: Loading..., + user: { ...user, id: "new-user-id" }, + }), + ); + + // Loading should appear again + expect(queryByTestId("loading")).not.toBeNull(); + + // Wait for loading to complete again + await waitFor(() => { + expect(queryByTestId("loading")).toBeNull(); + }); + + // Change company context + rerender( + getProvider({ + loadingComponent: Loading..., + company: { ...company, id: "new-company-id" }, + }), + ); + + // Loading should appear again + expect(queryByTestId("loading")).not.toBeNull(); + + // Wait for loading to complete again + await waitFor(() => { + expect(queryByTestId("loading")).toBeNull(); + }); + }); }); describe("useFeature", () => { From 1db11c87778900007928edb9f972757e3ce5ba55 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 20 Mar 2025 09:18:38 +0100 Subject: [PATCH 2/2] bump react-sdk version --- packages/react-sdk/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-sdk/package.json b/packages/react-sdk/package.json index 9cb7d03b..44743f0d 100644 --- a/packages/react-sdk/package.json +++ b/packages/react-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bucketco/react-sdk", - "version": "3.1.3", + "version": "3.1.4", "license": "MIT", "repository": { "type": "git",