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);