Formulario dinámico en Svelte

Crea un formulario dinámico basado en un esquema en Svelte sin backend. Renderiza los inputs desde un array de campos con {#each}, así puedes añadir o reordenar campos editando datos. Envía el POST una sola vez a Formpaste. Copia el componente y añade tu clave de acceso.

Como construirlo

  1. Crea un formulario en tu panel de Formpaste y copia su clave de acceso.
  2. Copia el componente basado en esquema de abajo y edita el array de campos según tu formulario.
  3. Reemplaza YOUR_ACCESS_KEY_HERE con tu clave de acceso y despliega.

Prompt para tu agente de programación con IA

Add a Formpaste dynamic form to my Svelte app. Use a single-file component that renders inputs from a fields array with {#each}, binds each with bind:value into a data object, and POSTs once as application/x-www-form-urlencoded (URLSearchParams) to https://api.formpaste.com/submit with a hidden access_key. The fields should come from a schema, not hardcoded markup.

O conecta el servidor MCP de Formpaste con Claude Code, Codex, Cursor, Claude Desktop, VS Code o cualquier cliente mcp-remote. Ver la guía de configuración.

Puntos claves de Svelte

Un formulario de contacto en Svelte es un componente de un solo archivo con bind:value en los campos y un manejador on:submit|preventDefault que hace POST a Formpaste. No hay backend ni una API propia. Coloca el fetch en el componente y ya está.

Es un componente de un solo archivo

El formulario vive en un componente .svelte con un bloque <script>. Vincula los campos con bind:value o lee un FormData del elemento form al enviar, y luego haz POST al endpoint de Formpaste. No se requiere store ni librería para un formulario sencillo.

Sin una API propia

No haces proxy a través de tu propio servidor. El componente hace POST directamente al endpoint de Formpaste, lo que elimina un mailer y un almacén de envíos que de otra forma tendrías que construir.

Maneja la respuesta con una variable de estado reactiva

El endpoint devuelve JSON (success, message, id). Espera el fetch y asigna una variable de estado reactiva para mostrar tu propio estado de éxito o error, o configura una URL de redirección en el dashboard y evita el manejo del lado del cliente.

Svelte 4 o Svelte 5, ambas funcionan

Los ejemplos usan un bloque <script> con una variable status normal, que funciona en cualquier versión de Svelte. En Svelte 5 puedes usar runes como $state en su lugar, pero el mismo fetch y el mismo POST son todo lo que Formpaste necesita.

Que debes acertar

Los campos vienen de un esquema, no del markup

Un formulario dinámico renderiza sus campos a partir de un array de definiciones de campo, así que agregas o reordenas campos editando datos, no JSX ni markup de plantilla. El mismo componente maneja cualquier conjunto de campos.

Un solo envío para cualquier estructura

Sin importar cuántos campos tenga el esquema, el formulario envía una única vez a Formpaste como un solo envío. Mantén el input oculto access_key en el payload y los nombres de campo con sentido para que tu bandeja de entrada sea legible.

Mantén los nombres de campo estables

El nombre del campo es lo que aparece en tu bandeja de entrada y en las exportaciones, así que nombra cada entrada del esquema con claridad (name, email, message) aunque cambies las etiquetas o el orden. Formpaste guarda cualquier nombre que envíes.

Cómo funciona

Tres pasos simples para que los envíos de formularios lleguen a tu bandeja de entrada.
Crea tu formulario, apunta la URL de action al endpoint de Formpaste y añade tu clave de acceso.

1

Crea tu formulario

Regístrate, verifica tu correo y crea una clave de acceso en tu panel.

2

Copia el código

Pega el fragmento de arriba en tu proyecto. Elige CSS o Tailwind para que combine con tu sitio.

<script lang="ts">
  const ENDPOINT = "https://api.formpaste.com/submit";

  const fields = [
    { name: "name", type: "text", label: "Name" },
    { name: "email", type: "email", label: "Email" },
    { name: "message", type: "textarea", label: "Message" },
  ];

  let data: Record<string, string> = Object.fromEntries(
    fields.map((f) => [f.name, ""])
  );

  async function submit() {
    const body = new URLSearchParams({ access_key: "YOUR_ACCESS_KEY_HERE", ...data });
    await fetch(ENDPOINT, { method: "POST", body });
  }
</script>

<form on:submit|preventDefault={submit}>
  {#each fields as f}
    <label>
      {f.label}
      {#if f.type === "textarea"}
        <textarea bind:value={data[f.name]} />
      {:else}
        <input type={f.type} bind:value={data[f.name]} />
      {/if}
    </label>
  {/each}
  <button type="submit">Send</button>
</form>
3

Añade tu clave de acceso

Reemplaza el marcador por tu clave de acceso para empezar a recibir envíos.

<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">

Formulario dinámico en Svelte FAQ

Pega un formulario. Recibe envíos.

Al instante, sin configurar ningún backend, servidor ni base de datos. 250 envíos/mes gratis, sin tarjeta de crédito.

Otros formularios de Svelte