From fe7c7513448adc6703911849c7593a73e54c4de1 Mon Sep 17 00:00:00 2001 From: Johan Persson Date: Tue, 18 Nov 2025 17:35:58 +0100 Subject: [PATCH] fix(ui): prioritize providedRowCount in useTable hook Changed the row count calculation in the useTable hook to prioritize the providedRowCount prop over data.length. This ensures accurate row count values in server-side pagination scenarios where the total number of rows differs from the current page's data length. Signed-off-by: Johan Persson --- .changeset/spicy-teeth-study.md | 5 +++++ packages/ui/src/components/Table/hooks/useTable.ts | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/spicy-teeth-study.md diff --git a/.changeset/spicy-teeth-study.md b/.changeset/spicy-teeth-study.md new file mode 100644 index 0000000000..03cc8a5440 --- /dev/null +++ b/.changeset/spicy-teeth-study.md @@ -0,0 +1,5 @@ +--- +'@backstage/ui': patch +--- + +Fixed `useTable` hook to prioritize `providedRowCount` over data length for accurate row count in server-side pagination scenarios. diff --git a/packages/ui/src/components/Table/hooks/useTable.ts b/packages/ui/src/components/Table/hooks/useTable.ts index 2759fcde41..cd1ddd5c9c 100644 --- a/packages/ui/src/components/Table/hooks/useTable.ts +++ b/packages/ui/src/components/Table/hooks/useTable.ts @@ -50,8 +50,8 @@ export function useTable( const isControlled = controlledOffset !== undefined || controlledPageSize !== undefined; - // Calculate row count from data or use provided value - const rowCount = data?.length ?? providedRowCount ?? 0; + // Use providedRowCount if passed, otherwise fallback to data length + const rowCount = providedRowCount ?? data?.length ?? 0; // Internal state for uncontrolled mode const [internalOffset, setInternalOffset] = useState(defaultOffset);