> ## Documentation Index
> Fetch the complete documentation index at: https://archie.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Data Viewer

> The Data tab is a spreadsheet-like editor for the records inside a table. Browse, edit, filter, sort, and customize columns.

The Data Viewer is a spreadsheet-like interface for the rows in a table. Open any table in the Data Model and click the **Data** tab to switch from schema design to record editing. It's where you add seed data during development, eyeball the contents of a table, or fix a bad row by hand.

Schema-level validations apply here too — uniqueness, mandatory fields, type constraints, and enum values are enforced just like they are through the GraphQL or REST API.

## Adding a row

<Steps>
  <Step title="Click + Add row">
    The button sits in the top-left of the toolbar. A form opens with all the table's fields.
  </Step>

  <Step title="Fill in the fields">
    Required fields are marked. Validation runs as you go — uniqueness, type, and constraint errors appear inline.
  </Step>

  <Step title="Click Add Row">
    The row is inserted and appears in the grid immediately.
  </Step>
</Steps>

<img src="https://mintcdn.com/archie-e998dbf6/LbS-QJnKq49swD_q/features/backend/data-model/data-viewer-add-row-form.png?fit=max&auto=format&n=LbS-QJnKq49swD_q&q=85&s=9b6adc53d4e8acce6cc3b714e24e1295" alt="Add row form in Data Viewer" width="1870" height="1026" data-path="features/backend/data-model/data-viewer-add-row-form.png" />

## Editing a row

Click any row in the grid to open the edit form, update the fields, and click **Update Row**. As with adding a row, schema validations run before the change is saved.

<img src="https://mintcdn.com/archie-e998dbf6/LbS-QJnKq49swD_q/features/backend/data-model/data-viewer-edit-record-form.png?fit=max&auto=format&n=LbS-QJnKq49swD_q&q=85&s=9b9c40e87f94e46a7cf04b5698b78aad" alt="Edit record form in Data Viewer" width="1870" height="1026" data-path="features/backend/data-model/data-viewer-edit-record-form.png" />

## Deleting a row

Right-click the row you want to delete and choose **Delete Row** from the context menu. Confirm in the dialog that appears.

<img src="https://mintcdn.com/archie-e998dbf6/LbS-QJnKq49swD_q/features/backend/data-model/data-viewer-delete-row.png?fit=max&auto=format&n=LbS-QJnKq49swD_q&q=85&s=fe071be6c67d1653c9f892c08c627f68" alt="Delete row confirmation in Data Viewer" width="1870" height="1026" data-path="features/backend/data-model/data-viewer-delete-row.png" />

<Warning>
  Deleting a row is permanent. There is no undo from the Data Viewer.
</Warning>

## Filtering

Click the **Filter** icon (funnel) in the toolbar to add filters. You can stack multiple filters — for example, "is\_active = true AND created\_at > 2025-01-01". The grid updates as you add and remove filters.

<img src="https://mintcdn.com/archie-e998dbf6/LbS-QJnKq49swD_q/features/backend/data-model/data-viewer-filter-records.png?fit=max&auto=format&n=LbS-QJnKq49swD_q&q=85&s=cd649b047f3cba5a9ff7deef1f832527" alt="Filter records in Data Viewer" width="1870" height="1026" data-path="features/backend/data-model/data-viewer-filter-records.png" />

The Data Viewer's filter UI doesn't span related tables. For filters that need joins, use the [GraphQL API Explorer](/features/backend/graphql-api-explorer/overview) or the [SQL Playground](/features/backend/sql-playground).

## Sorting

Click the sort icon (up/down arrows) in the toolbar to add sort attributes. You can sort on multiple columns; the order in which you add them determines the priority.

<img src="https://mintcdn.com/archie-e998dbf6/LbS-QJnKq49swD_q/features/backend/data-model/data-viewer-sort-records.png?fit=max&auto=format&n=LbS-QJnKq49swD_q&q=85&s=fb35f939de07e1c23c06994a039ffab6" alt="Sort records in Data Viewer" width="1870" height="1025" data-path="features/backend/data-model/data-viewer-sort-records.png" />

## Showing and hiding columns

Click **View** in the toolbar to toggle which columns are visible in the grid. Audit columns — `id`, `created_at`, `created_by`, `updated_at`, `updated_by` — are hidden by default. Use **Show all** to bring them back, or **Reset** to return to the default view.

<img src="https://mintcdn.com/archie-e998dbf6/LbS-QJnKq49swD_q/features/backend/data-model/data-viewer-column-visibility.png?fit=max&auto=format&n=LbS-QJnKq49swD_q&q=85&s=9a1467c07e48cc51fe7c534dfedbf722" alt="Column visibility toggle in Data Viewer" width="1870" height="1026" data-path="features/backend/data-model/data-viewer-column-visibility.png" />

The current column selection also drives **what gets exported** when you run a CSV export — see [Exporting data](/features/backend/data-model/exporting-data).

## Importing and exporting

The Data Viewer toolbar has dedicated controls for moving data in and out via CSV:

* [Importing data](/features/backend/data-model/importing-data) — upload a CSV, map columns, validate against the schema.
* [Exporting data](/features/backend/data-model/exporting-data) — download the current filtered view as CSV.

## Permissions

Whether a user can read, add, edit, or delete rows — and whether specific fields are visible to them — is governed by [Role-Based Access](/features/backend/app-services/role-based-access). The Data Viewer respects those rules: a field hidden from your role is hidden in the grid; a delete action you don't have permission for is unavailable.

## FAQ

<AccordionGroup>
  <Accordion title="Why are id, created_at, and created_by hidden by default?">
    They're audit columns the platform manages automatically. Hiding them by default keeps the grid focused on the fields you're likely to edit. Toggle them on from the **View** dropdown when you need them.
  </Accordion>

  <Accordion title="Can I filter by a field on a related table?">
    Not from the Data Viewer's filter UI. Use the [GraphQL API Explorer](/features/backend/graphql-api-explorer/overview) or the [SQL Playground](/features/backend/sql-playground) for filters that span tables.
  </Accordion>

  <Accordion title="What happens if my edit violates a uniqueness constraint?">
    The save fails and an inline error tells you which constraint was violated. The row stays in edit mode so you can fix the value.
  </Accordion>

  <Accordion title="Is the Data Viewer safe to use against production?">
    Edits go through the same validations as the API, but anything you delete is gone. Use environments to keep production isolated — see [Environments](/features/backend/environments/overview).
  </Accordion>

  <Accordion title="Can I bulk-edit rows from the Data Viewer?">
    The Data Viewer edits one row at a time. For bulk updates, use a custom function or the SQL Playground.
  </Accordion>
</AccordionGroup>
