---
url: "https://vueda.dev/v3/reference/changelog/client.md"
title: "Client"
---

# Client Changelog

Integrator-facing changes for the `@arrai-innovations/vueda` npm package.

Use this page for changes that affect client package consumers: public Vue components, composables, routes, stores, theme behavior, build integration, dependency expectations, and migration notes.

<!-- towncrier release notes start -->

## Unreleased

### Breaking Changes

#### Forms and validation

- **Action confirmation views laid out as pages** ([#578](https://github.com/arrai-innovations/vueda/issues/578)):
    - `ViewAction`, `ViewExecuteTransition`, `ViewActivate`, `ViewDeactivate`, and `ViewDestroy` now place the confirm button in the sticky action bar under the page title and their content in the page gutter, as `ViewRead` and `ViewUpdate` do, and the confirm button names the action instead of reading "Yes, continue". `ActionForm` and `ModelActionForm` gain a `page` prop for this layout, and selected-record chips show formatted names without primary keys.
      _Overrides of the removed `ViewDestroy.card` and `ViewDestroy.body` theme keys no longer apply; restyle the destroy page through the `ModelActionForm` and `ActionForm` keys instead._

### Features

#### Forms and validation

- **Record name heading on read and update views** ([#574](https://github.com/arrai-innovations/vueda/issues/574)):
    - `ViewRead`, `ViewUpdate`, and `DetailView` now show a heading above the fields that names the record by its formatted name, and they request `formatted_name` when the view's field lists leave it out. The `record-name` slot and the `recordName` and `recordNameSkeleton` theme keys customize the heading. A serializer that shows `formatted_name` as a visible field now shows the name twice, and `style={"hidden": True}` on that field removes the field row.

#### History

- **`ViewHistoryList` shows workflow state changes** ([#527](https://github.com/arrai-innovations/vueda/issues/527)):
    - An event with `relation: "state"` reads "Workflow state" in the Model cell, and its `changes` show the old and new state. The cell carries `data-relation="state"` for theming.


## v3.0.0-beta.1 (2026-10-21)

This is the first public beta of the VUEDA v3 client. It builds list, detail, form, action, and workflow screens from the metadata that the VUEDA server publishes. A project on client v2.0.4 upgrades with [Upgrade from VUEDA v2](/v3/guides/upgrade-from-v2.md), which also covers the matching server upgrade.

### Installation and Requirements

Install the beta from the public npm registry by its `beta` tag:

```bash
pnpm add @arrai-innovations/vueda@beta
```

The client requires:

- Node 22 or later.
- Vue 3.5, Vue Router 4.5, and Pinia 3.
- The peer dependencies in `package.json`, including `@arrai-innovations/reactive-helpers` 25, `@vueuse/core` 14, and `@arrai-innovations/vue-sonner` 2.0.11.
- Tailwind CSS 4 with `@tailwindcss/vite` for the default theme.
- A v3 VUEDA server. The client reads metadata shapes that only the v3 server sends.

[Client Plugin Prerequisites](/v3/guides/client-plugin-prerequisites.md) lists the setup that the application performs before it mounts.

### Capabilities

- **Controls and theme.** VUEDA ships its own controls, built on Reka UI, and a default theme of Tailwind classes and CSS tokens. You can restyle one instance, one component, a family of components, or the whole brand. [Theming and Customization](/v3/core-concepts/theming-and-customization.md) describes the four scopes.
- **Icons.** Components resolve icons through a registry. A Font Awesome Free preset fills it. [Register the Icons](/v3/guides/client-plugin-prerequisites.md#register-the-icons) shows the setup.
- **Layout.** The application layout owns the page title, page actions, and sticky bars, and views contribute to them. [Place the Page Title and Page Actions](/v3/guides/place-page-title-and-actions.md) shows the setup.
- **Lists.** List views sort by several fields through chips and keep the sort in the URL. They filter through chips with typed inputs, open scoped lists, and link rows to detail views. Columns render by field type and can show server column totals. [Configure `list`/`read`/`create`/`update` Views](/v3/guides/configure-crud-views.md) covers the options.
- **Forms.** Forms confirm server warnings before a write, upload files at any depth of a nested form, and render read-only values formatted by field type. A read-only file field shows a link to the stored file, and a user can clear an optional file field. [Require Confirmation Before a Write](/v3/guides/require-write-confirmation.md) covers the confirmation step.
- **Routing.** `makeCRUDRoutes` opens a route for each workflow transition by its code, rechecks access when the signed-in user changes, and honors the `routeActions` allowlist. [Routing and View Resolution Model](/v3/core-concepts/routing-and-view-resolution-model.md) describes the guard chain.
- **Auth views.** Default sign-in, forgot-password, reset-password, and reauthentication views cover two-factor sign-in and code-based reauthentication. [Build Auth Views](/v3/guides/build-auth-views.md) shows the routes that they expect. `AuthForm` keeps its reauthentication and sign-in redirects. Pass its `onSubmissionErrorHandler` prop to handle its other submission errors, as [Build a Form for a Signed-In Operation](/v3/guides/build-auth-views.md#build-a-form-for-a-signed-in-operation) describes.
- **User changes.** Stores clear metadata, configuration, choices, and workflow data when the signed-in user changes. [When the Signed-In User Changes](/v3/core-concepts/reactive-data-flow.md#when-the-signed-in-user-changes) lists what clears.
- **Build integration.** `vuedaViteConfig()` sets up the `@vueda` alias and deduplicates peer packages. When you pass your `src` directory as its `@` alias, it also finds convention-named action views.

### Known Limitations

- `useVersion().newClientAvailable` stays false unless the project defines `VITE_PACKAGE_VERSION` itself, because `vuedaViteConfig()` does not define it ([#300](https://github.com/arrai-innovations/vueda/issues/300)).
- Relation selects built on `WidgetModel` load only the first 200 options and have no search. List filter dropdowns have the same limit ([#381](https://github.com/arrai-innovations/vueda/issues/381)). `WidgetCombobox`, the default relation widget, searches the list endpoint and does not have this limit.
- A form does not report fields that failed to render. A user can submit a form with a field that they never saw ([#197](https://github.com/arrai-innovations/vueda/issues/197)).
- The client uses fixed query parameter names. A server that renames `o`, `s`, the page parameters, or `ct` needs a matching client change ([#301](https://github.com/arrai-innovations/vueda/issues/301)).
- A built-in theme module that loads after the application calls `setClassMerger` replaces the application's class merger ([#467](https://github.com/arrai-innovations/vueda/issues/467)).
- The design review of the default theme is incomplete, so default styles may change between betas ([#248](https://github.com/arrai-innovations/vueda/issues/248)).

## Public Baseline

VUEDA client versions before v3.0.0-beta.1 were private releases or prereleases. This page starts the public history at v3.0.0-beta.1.
