Skip to content

fix: admin audit log page has no pagination #273

Description

@nazarli-shabnam

Problem

The audit log page fetches the log with no `limit`/offset parameter:

```ts
const { data } = useAsync(() => api("/audit"), []);
```

The API defaults `limit` to 100 (capped at 500) when none is supplied:

```ts
const limit = Number.isInteger(limitParam) && limitParam > 0 ? Math.min(limitParam, 500) : 100;
```

There is no "load more" control, no offset-based pagination, and no filter by action/admin/date on the page, and no indication in the UI when the returned set has been truncated.

Impact

The audit log exists specifically so admins can investigate "every mutating admin action, newest first." Once an install accumulates more than 100 audit entries, anything older simply becomes invisible with no way to page back to it and no signal that older entries exist — a silent truncation that undermines the log's purpose during an incident investigation.

Location

`app/admin/audit/page.tsx:19-20`, `app/api/admin/audit/route.ts:12-13`

Suggested fix

Add offset/cursor-based "load more" pagination to the audit page (the API already supports `limit`, so add an `offset`/`before` cursor param), and show a hint when the page's row count equals the requested limit (implying more rows may exist).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    To triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions