novalidate: когда HTML5-валидация мешает UX
Клиентские подсказки vs единый ответ сервера.
`<form novalidate>` отключает нативные всплывающие сообщения — оставляя `:valid`/`:invalid` для стилей, если ошибки показываете кастомным блоком под полем.
На checkout с серверной проверкой остатков SKU нативная валидация всё равно не заменит API.
- novalidate — MDN — Атрибут form.
- Client-side validation — MDN — Constraint validation API.
Гибрид
Оставляйте `required` и `pattern` для доступности, но перехватывайте `submit` и вызывайте `reportValidity()` только когда нужно.