Platforms / Vite
Contact form for Vite — no backend required
Vite’s dev server is not a production mail backend.
Setup
- Create a FormHeron form.
- Point the form action at FormHeron.
- Allow localhost during development.
- Build and deploy static assets.
Working example
<form action="https://formheron.com/f/YOUR_KEY" method="POST">
<label>
Email
<input type="email" name="email" required />
</label>
<label>
Message
<textarea name="message" required></textarea>
</label>
<!-- honeypot: off-screen, not type=hidden -->
<input type="text" name="_hp" tabindex="-1" autocomplete="off"
aria-hidden="true" style="position:absolute;left:-9999px" />
<button type="submit">Send</button>
</form>Common problems
Proxy in vite.config
Not required for FormHeron — the browser posts cross-origin.
Env keys
Only put public form keys and Turnstile site keys in VITE_* vars — never secrets.
Multi-page apps
Reuse one form key or create one form per funnel.
FAQ
How do I add a contact form to a Vite app?
Use a form action URL pointing at FormHeron.
React + Vite?
See the React platform page — same endpoint.
Rate limits?
Per-IP, per-form, and per-account atomic limits protect you under bot floods.