CheckDisposable Emailcheckdisposable.email
Guides · 24 stacks covered

Block disposable email in your stack.

Each guide has a single drop-in code snippet, plus notes on the gotchas specific to that stack (where to put the API key, fail-open vs fail-closed, how the error reaches the UI).

NextAuth.js (Auth.js)

TypeScript

NextAuth's `signIn` callback runs before Auth.js writes the account. Return `false` (or a redirect URL) and the signup is refused.

Read the guide →

WorkOS

TypeScript

Hook the `user.created` webhook from WorkOS. Verify the disposable status, then delete the user if needed. AuthKit doesn't expose a synchronous pre-creation hook, so this is the supported pattern.

Read the guide →

Remix

TypeScript

Add the check inside your signup `action`. Remix's nested error UI surfaces it cleanly via `useActionData()` without extra plumbing.

Read the guide →

Nuxt 3

TypeScript

Use a server route under `server/api/`. Nuxt 3 runs on Nitro — `useRuntimeConfig` exposes server-only env vars to the handler.

Read the guide →

SvelteKit

TypeScript

Add the check inside a `+page.server.ts` action. SvelteKit forms post directly to actions, so this is the natural place — no separate API route needed.

Read the guide →

Astro

TypeScript

Astro's server endpoints (with SSR or hybrid output) work like Express handlers. Add the check in the POST handler for your signup form.

Read the guide →

Express.js

JavaScript

Add the check as middleware on your signup route. Works with Passport, custom auth, or any stack — no library required.

Read the guide →

Fastify

TypeScript

Use a preHandler hook on your signup route. Fastify's built-in schema validation makes the email-shape check explicit; the disposable check goes right after.

Read the guide →

Don’t see your stack? Point your AI at us.

Paste this single prompt into Claude Code, Cursor, Codex, Aider, or Copilot:

Read https://checkdisposable.email/integrate.md and follow the
instructions on that page.

The integrate.md page is written in the second person for an LLM. It tells the AI what to ask you for, what code to add, and what rules to follow.