Framework Examples

Integrate Static Forms with your favorite framework

Choose Your Framework

Basic React component with form handling:

import { useState } from 'react';

export default function ContactForm() {
  const [status, setStatus] = useState('');

  const handleSubmit = async (e) => {
    e.preventDefault();
    const form = e.target;
    const data = new FormData(form);

    try {
      const response = await fetch('https://api.staticforms.xyz/submit', {
        method: 'POST',
        body: data
      });

      if (response.ok) {
        setStatus('Message sent successfully!');
        form.reset();
      } else {
        setStatus('Error sending message.');
      }
    } catch (error) {
      setStatus('Error sending message.');
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="hidden" name="apiKey" value="YOUR_API_KEY" />
      
      <input
        type="text"
        name="name"
        placeholder="Your Name"
        required
      />
      
      <input
        type="email"
        name="email"
        placeholder="Your Email"
        required
      />
      
      <textarea
        name="message"
        placeholder="Your Message"
        required
      />
      
      <button type="submit">Send Message</button>
      
      {status && <p>{status}</p>}
    </form>
  );
}

AJAX Implementation

Submit forms without page reload using vanilla JavaScript:

<form id="contactForm">
  <input type="hidden" name="apiKey" value="YOUR_API_KEY" />
  
  <input type="text" name="name" placeholder="Name" required />
  <input type="email" name="email" placeholder="Email" required />
  <textarea name="message" placeholder="Message" required></textarea>
  
  <button type="submit">Send Message</button>
  <div id="status"></div>
</form>

<script>
document.getElementById('contactForm').addEventListener('submit', async (e) => {
  e.preventDefault();
  
  const form = e.target;
  const formData = new FormData(form);
  const statusDiv = document.getElementById('status');
  
  try {
    const response = await fetch('https://api.staticforms.xyz/submit', {
      method: 'POST',
      body: formData
    });
    
    const result = await response.json();
    
    if (result.success) {
      statusDiv.textContent = 'Message sent successfully!';
      statusDiv.style.color = 'green';
      form.reset();
    } else {
      statusDiv.textContent = 'Failed to send message.';
      statusDiv.style.color = 'red';
    }
  } catch (error) {
    statusDiv.textContent = 'An error occurred.';
    statusDiv.style.color = 'red';
  }
});
</script>

More Examples

Check out our blog for detailed guides on integrating with specific frameworks: