# Next.js (App Router) For `app/`-directory Next.js projects. The widget needs to run on the client, so the page or component must be `"use client"`. ```tsx title="app/signup/page.tsx" "use client"; import Script from "next/script"; import { useEffect, useState } from "react"; declare global { interface Window { onTurnstileSuccess?: (token: string) => void; } } export default function SignupPage() { const [token, setToken] = useState(""); useEffect(() => { window.onTurnstileSuccess = (t: string) => setToken(t); }, []); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); const res = await fetch("https://YOUR_WORKER_URL/", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ token }), }); const data = await res.json(); if (data.success) { // proceed } } return ( <>