When there is an error in a required field we render this:
<label for=":r0:-input">First name</label>
<input id=":r0:-input" type="text" value="" name="firstName" aria-required="true" aria-invalid="true" aria-errormessage=":r0:-error">
<p id=":r0:-error" class="micro text-feedback-red flex items-center mt-4" role="alert">This field is required</p>
But I can't seem to get VoiceOver (Chrome, Mac) to read that error message, not automatically at least and I tried some VO+Shift+h key combination but that didn't work.
aria-describedbyfor error messages is still standing. See Usable and Accessible Form Validation on WebAIM