Skip to content

fix: default virtual fields to readOnly in admin UI#16016

Merged
DanRibbens merged 1 commit intopayloadcms:mainfrom
jhb-dev:fix/virtual-fields-default-readonly
Apr 9, 2026
Merged

fix: default virtual fields to readOnly in admin UI#16016
DanRibbens merged 1 commit intopayloadcms:mainfrom
jhb-dev:fix/virtual-fields-default-readonly

Conversation

@jhb-dev
Copy link
Copy Markdown
Contributor

@jhb-dev jhb-dev commented Mar 20, 2026

What?

Virtual fields (virtual: true or virtual: "path") now default to admin.readOnly: true during field sanitization.

Why?

Virtual fields are populated server-side and not persisted from user input. Without readOnly, users can type into them but edits are silently discarded on save — confusing UX with no indication the field is virtual.

How?

In sanitize.ts, after initializing field.admin, set readOnly: true for virtual fields unless the user has explicitly set readOnly: false.

Fixes #16013
Related #16012


DanRibbens
DanRibbens previously approved these changes Mar 25, 2026
@PatrikKozak PatrikKozak force-pushed the fix/virtual-fields-default-readonly branch from cc87e04 to e4e2f43 Compare April 9, 2026 16:45
@DanRibbens DanRibbens merged commit 72396f6 into payloadcms:main Apr 9, 2026
163 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

🚀 This is included in version v3.83.0

milamer pushed a commit to milamer/payload that referenced this pull request Apr 20, 2026
### What?

Virtual fields (`virtual: true` or `virtual: "path"`) now default to
`admin.readOnly: true` during field sanitization.

### Why?

Virtual fields are populated server-side and not persisted from user
input. Without `readOnly`, users can type into them but edits are
silently discarded on save — confusing UX with no indication the field
is virtual.

### How?

In `sanitize.ts`, after initializing `field.admin`, set `readOnly: true`
for virtual fields unless the user has explicitly set `readOnly: false`.

Fixes payloadcms#16013
Related payloadcms#16012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Virtual fields are editable in admin UI despite values being discarded

4 participants