---
url: "https://vueda.dev/v3/reference/api/vue/ViewHistoryList.md"
title: "ViewHistoryList"
---

# ViewHistoryList

## Overview

Paginated list view showing the history of one model instance as the actions that produced it.
Each action groups the events it wrote, and each event lists its field changes with old and new
values, in a table or card layout.

Theme entry: [ViewHistoryList](/v3/reference/theming/keys/ViewHistoryList.md)

## Props

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="prop-iconOverride">iconOverride</span> | `Object` |  | `null` | A partial icon registry (`{ [componentName]: { [iconName]: { component, props } } }`) merged with inherited and default icon entries; scopes icon overrides to this component and its descendants. |
| <span id="prop-themeOverride">themeOverride</span> | `Object` |  | `null` | A partial ThemeObject keyed by component name, merged over this component's theme and provided to descendants. |
| <span id="prop-app">app</span> | `string` | yes |  | Django app label that owns the model. |
| <span id="prop-model">model</span> | `string` | yes |  | Django model name used to resolve API endpoints and configuration. |
| <span id="prop-pk">pk</span> | `string` | yes |  | Primary key of the instance whose history is displayed. |
| <span id="prop-tableBreakpoint">tableBreakpoint</span> | `string` |  | `"lg"` | Tailwind breakpoint at which the layout switches from card to table view. |
| <span id="prop-hideMetaStrip">hideMetaStrip</span> | `boolean` |  | `false` | When true, hides the meta strip + layout toggle row above the grid. |
| <span id="prop-fields">fields</span> | `array` |  | `["recorded_at", "actor", "kind", "label", "model", "type", "field", "old", "new"]` | Ordered list of column names to display. The history response defines the set: `recorded_at`, `actor`, `kind`, `label`, `model`, `relation`, `type`, `field`, `old`, and `new`. `field` is a table-only column; the card layout stacks each event's changes inside `old` and `new`. |
| <span id="prop-pageSizeOptions">pageSizeOptions</span> | `array` |  | `[...DEFAULT_PAGE_SIZE_OPTIONS]` | Rows-per-page options offered by the pagination footer; the final `"all"` entry loads every history page at once. |
| <span id="prop-defaultPageSize">defaultPageSize</span> | `number\|string` |  | `DEFAULT_PAGE_SIZE` | Initial rows-per-page (a number, or `"all"`). |
| <span id="prop-showTotalRecordNum">showTotalRecordNum</span> | `boolean` |  | `true` | When true, displays the total number of actions in the pagination bar. |

## Slots

| Name | Scoped | Description |
| --- | --- | --- |
| `meta` | yes |  |
| `rows-per-page` | yes |  |
| `before-list` |  |  |
| `empty` |  | empty Replaces the dedicated history empty-state body. Receives no slot props. |
| `meta-strip` | yes | meta-strip Replaces the meta filter + layout-toggle strip above the grid. Receives `{ isTable, layoutOverride, setLayoutOverride }` so consumer overrides can drive the layout state. |
| `meta-filters` |  | meta-filters Renders the filter chip row inside the meta strip. Empty by default; bind from consumer state. Receives no slot props. |
| `field(recorded_at)` | yes |  |
| `field(actor)` | yes |  |
| `field(kind)` | yes |  |
| `field(model)` | yes |  |
| `field(type)` | yes |  |
| `` `field(${side})` `` | yes |  |

[Full slot reference](/v3/reference/api/vue/ViewHistoryList/slots.md)

## Source

`client/lib/views/ViewHistoryList.vue`
