Юзер заполняет форму, кликает submit, форма отправляется на сервер, сервер думает. На время размышлений хочется показать юзеру "форма обрабатывается". В типичном случае показываем крутящийся лоадер.
И вот так делать не надо.
В подавляющем большинстве случаев форма обрабатывается мгновенно (<1s) и лоадер будет лишь только неприятным морганием, особенно если он полноэкранный и закрывает форму. Пользователь не успеет понять, что моргнуло и почему, но у него возникнет ощущение утраты контроля — самое неприятное ощущение, какое только может создать UI.
Лоадер надо показывать спустя некоторое время после сабмита, если данные не подгрузились.
Спустя какое? Это можно узнать вот так:
const startedAt = Date.now();
await submitAndProcessForm();
const diffMs = Date.now() - startedAt;
fetch('https://my.company/analytics/reportFormTime/?t=' + diffMs);
Или просто выставить его в две секунды.