From fb8737bc15fcdde5e677b19a68885a3c12d4b515 Mon Sep 17 00:00:00 2001 From: Sourav Jaiswal Date: Wed, 28 Jan 2026 23:01:50 +0530 Subject: [PATCH] Fix infinite re-render --- ...ix-infinite-rerender_2026-01-28-17-30.json | 10 +++++++++ .../ManageVersions/ManageVersions.tsx | 21 +++++++------------ 2 files changed, 17 insertions(+), 14 deletions(-) create mode 100644 common/changes/@itwin/manage-versions-react/sj-fix-infinite-rerender_2026-01-28-17-30.json diff --git a/common/changes/@itwin/manage-versions-react/sj-fix-infinite-rerender_2026-01-28-17-30.json b/common/changes/@itwin/manage-versions-react/sj-fix-infinite-rerender_2026-01-28-17-30.json new file mode 100644 index 00000000..c7c57450 --- /dev/null +++ b/common/changes/@itwin/manage-versions-react/sj-fix-infinite-rerender_2026-01-28-17-30.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@itwin/manage-versions-react", + "comment": "Fix infinite rerender edge case", + "type": "patch" + } + ], + "packageName": "@itwin/manage-versions-react" +} \ No newline at end of file diff --git a/packages/modules/manage-versions/src/components/ManageVersions/ManageVersions.tsx b/packages/modules/manage-versions/src/components/ManageVersions/ManageVersions.tsx index c4b9091a..d70c50a1 100644 --- a/packages/modules/manage-versions/src/components/ManageVersions/ManageVersions.tsx +++ b/packages/modules/manage-versions/src/components/ManageVersions/ManageVersions.tsx @@ -455,26 +455,19 @@ const ManageVersionsComponent = (props: ManageVersionsProps) => { React.useEffect(() => { const loadUsers = async () => { - if (!hasMoreUsersRef.current) { - return; - } - + hasMoreUsersRef.current = false; if (!usersRef.current) { - hasMoreUsersRef.current = false; await getUsers(); } else { - const hasMissingUsers = - versionsTableData?.some((td) => !td.version.createdBy) || - changesets?.some((cs) => !cs.createdBy); - - if (hasMissingUsers) { - hasMoreUsersRef.current = false; - await getUsers(Object.keys(usersRef.current).length); - } + await getUsers(Object.keys(usersRef.current).length); } }; - if (!usersRef.current || versionsTableData || changesets) { + const hasMissingUsers = + versionsTableData?.some((td) => !td.version.createdBy) || + changesets?.some((cs) => !cs.createdBy); + + if (!usersRef.current || (hasMissingUsers && hasMoreUsersRef.current)) { loadUsers() .then(() => { const updatedVersionsTableData = versionsTableData?.map((td) => {