Ваша форма не является перенос... Заметка
DEV Community на русском

Ваша форма не является переносимой, если она содержит обратные вызовы.

По-настоящему переносимая форма требует большего, чем просто сериализация JSON; ее валидация, условия и логика отправки также должны быть переносимыми. Стандартные библиотеки форм часто встраивают поведение в колбэки, делая их непереносимыми и непригодными для генерации на стороне сервера или использования в нескольких приложениях. Попытки сериализовать колбэки как исходный код или изобретать компактные DSL представляют значительные риски безопасности и обслуживания. Вместо этого поведение должно быть представлено декларативно через сериализуемое дерево выражений. Этот подход позволяет создавать инспектируемые, версионируемые и независимо валидируемые структуры данных. Хотя "сырые" деревья выражений многословны, типизированный API для создания, такой как TypeScript-билдеры, может абстрагировать эту сложность, генерируя канонический JSON-контракт. Этот контракт служит универсальным источником истины, позволяя различным фронтендам и бэкендам последовательно интерпретировать и валидировать формы. Важно отметить, что позиционные коллекции требуют осторожного обращения, чтобы избежать незаметного изменения идентификатора данных при отправке. Переносимые системы форм также должны использовать надежные меры валидации и безопасности для безопасной обработки недоверенного ввода, предотвращая такие проблемы, как катастрофический откат или неверные конфигурации. Этот архитектурный подход, исследованный Modyra, переносит сложность из отдельных приложений в общую инфраструктуру. Он направлен на обеспечение идентичного смысла в различных средах выполнения, а не обязательно идентичного рендеринга. Основная задача заключается в определении того, сколько поведения может быть закодировано как переносимые данные, не делая контракт чрезмерно сложным.