Platforms / Vite

Contact form for Vite — no backend required

Vite’s dev server is not a production mail backend.

Setup

  1. Create a FormHeron form.
  2. Point the form action at FormHeron.
  3. Allow localhost during development.
  4. Build and deploy static assets.

Working example

index.html
<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.

Related platforms