How to preserve validation on required relational fields after removing the relation
I understand you're seeing an issue where a required reference field still validates as valid after you remove the relation. Let me help clarify what's happening here.
What's Actually Occurring
When you "remove" a reference in Sanity Studio, you might be seeing one of these scenarios:
- The reference field is being set to
nullorundefined- In this case, therequired()validation should catch it and show an error - An empty reference object structure remains - This is less common but could happen in certain edge cases
The Expected Behavior
According to the reference type documentation, a valid reference must have both:
_type: 'reference'_ref: '<document-id>'
The built-in required() validation should prevent publishing when a required reference field is empty or missing.
Troubleshooting Steps
First, let's verify what's actually in your document when you "remove" the reference:
Check the document data: Open your browser's developer console and inspect what value the field actually contains when you think it's removed. You can do this by looking at the document state in Sanity Studio.
Verify your schema: Make sure your reference field is properly configured:
{
name: 'myReference',
type: 'reference',
to: [{type: 'targetType'}],
validation: (rule) => rule.required()
}If the Issue Persists
If you're genuinely seeing validation pass with a missing required reference, you can add explicit custom validation as a workaround:
{
name: 'myReference',
type: 'reference',
to: [{type: 'targetType'}],
validation: (rule) => rule.required().custom((value) => {
// Explicitly check for a valid reference
if (!value?._ref) {
return 'This reference is required'
}
return true
})
}This custom validation explicitly checks that the _ref property exists, which contains the actual document ID.
Important Context
Keep in mind that validation in Sanity Studio is client-side only. This means:
- Validation can be bypassed through direct API mutations
- You should implement server-side validation for production systems
- Edge cases in the UI could potentially affect validation behavior
If you're consistently able to reproduce this issue with specific steps, I'd recommend reporting it on the Sanity GitHub repository with details about your schema configuration and the exact steps to reproduce, as this would help the team investigate whether there's a genuine bug in the validation system.
Show original thread4 replies
Sanity β Build the way you think, not the way your CMS thinks
Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.