A React contact form is easy until it needs to be changed by someone who does

not ship the frontend.

Then the project needs a schema, an editor, server validation, spam controls,

submission storage and a place to review what arrived. That work usually ends

up split between a custom Strapi content type, a controller, an admin page and