You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a field has admin.condition defined, it appears in the Edit dropdown inside the bulk edit drawer — but after selecting it, the field is not rendered. No error or warning is shown. From the user's perspective, bulk edit simply doesn't work for that field.
There is a partial workaround on the user side: if the field that the condition depends on is also selected in the bulk edit drawer, siblingData gets populated and the condition evaluates correctly. However, this forces the user to always edit the dependent field together — which is poor UX — and may cause unintended side effects by updating a field that the user didn't intend to change.
Video showcasing this issue
Kapture.2026-04-21.at.20.39.37.mp4
Root cause
EditManyDrawerContent initializes DocumentInfoProvider with initialData: {}, so when getFormState builds the form state, siblingData is always {}.
In iterateFields.ts, the condition is evaluated as:
Since siblingData is {}, any condition that checks sibling field values evaluates to false → passesCondition = false → the field is not rendered.
reduceFieldOptions (which populates the FieldSelect dropdown) does not check admin.condition, so the field still appears in the dropdown — making the issue invisible until you actually try to use it.
Workarounds
It is technically possible to work around this for individual fields by explicitly handling the undefined case:
...requires handling undefined for every operand separately, in a way that passes in bulk edit but doesn't break normal form behavior. The result is obscure code that leaks an internal implementation detail (siblingData = {} in bulk edit) into application-level field definitions — something developers shouldn't need to know about.
Expected behavior
admin.condition has no meaningful value in bulk edit context — there is no single document, so sibling field values don't exist. Conditions should be skipped entirely when building form state for bulk edit.
The minimal fix would be to pass skipConditionChecks: true in both getFormState calls inside EditManyDrawerContent (onChange and onFieldSelect). This would require:
Exposing skipConditionChecks in BuildFormStateArgs (packages/payload/src/admin/forms/Form.ts)
Passing it through buildFormState → iterateFields
Setting it in both getFormState calls in packages/ui/src/elements/EditMany/DrawerContent.tsx
Describe the Bug
When a field has
admin.conditiondefined, it appears in the Edit dropdown inside the bulk edit drawer — but after selecting it, the field is not rendered. No error or warning is shown. From the user's perspective, bulk edit simply doesn't work for that field.There is a partial workaround on the user side: if the field that the condition depends on is also selected in the bulk edit drawer, siblingData gets populated and the condition evaluates correctly. However, this forces the user to always edit the dependent field together — which is poor UX — and may cause unintended side effects by updating a field that the user didn't intend to change.
Video showcasing this issue
Kapture.2026-04-21.at.20.39.37.mp4
Root cause
EditManyDrawerContentinitializesDocumentInfoProviderwithinitialData: {}, so whengetFormStatebuilds the form state,siblingDatais always{}.In
iterateFields.ts, the condition is evaluated as:Since
siblingDatais{}, any condition that checks sibling field values evaluates tofalse→passesCondition = false→ the field is not rendered.reduceFieldOptions(which populates the FieldSelect dropdown) does not checkadmin.condition, so the field still appears in the dropdown — making the issue invisible until you actually try to use it.Workarounds
It is technically possible to work around this for individual fields by explicitly handling the
undefinedcase:For a required select/type field:
Works because
typeis always explicitly set in real documents, so!siblingData?.typeis only evertruein the bulk edit context.For a boolean/checkbox field:
Works because
!(undefined === false)→truein bulk edit, while still correctly evaluatingfalsewhenisEnabledis explicitly unchecked.These workarounds become increasingly fragile as conditions grow in complexity. A condition combining multiple fields:
...requires handling
undefinedfor every operand separately, in a way that passes in bulk edit but doesn't break normal form behavior. The result is obscure code that leaks an internal implementation detail (siblingData = {}in bulk edit) into application-level field definitions — something developers shouldn't need to know about.Expected behavior
admin.conditionhas no meaningful value in bulk edit context — there is no single document, so sibling field values don't exist. Conditions should be skipped entirely when building form state for bulk edit.The minimal fix would be to pass
skipConditionChecks: truein bothgetFormStatecalls insideEditManyDrawerContent(onChangeandonFieldSelect). This would require:skipConditionChecksinBuildFormStateArgs(packages/payload/src/admin/forms/Form.ts)buildFormState→iterateFieldsgetFormStatecalls inpackages/ui/src/elements/EditMany/DrawerContent.tsxLink to the code that reproduces this issue
https://github.com/VeiaG/payload-3-reproductions/tree/bulk-edit-condition-repro
Reproduction Steps
bulk-edit-condition-reprobranch)bulk-edit-condition.Which area(s) are affected?
area: core, area: ui
Environment Info