useSignUp
The useSignUp hook provides methods for user registration with support for email verification, phone verification, and profile completion.
Return Value
Whether a sign-up operation is in progress
Object containing all sign-up methods
The current state of the sign-up flow
Show Discards the current sign-up attempt
Examples
import { useSignUp } from "@wacht/tanstack-router";
function EmailPasswordForm() {
const { signUp, loading } = useSignUp();
const handleSubmit = async (data: SignUpParams) => {
await signUp.create(data);
};
return <form onSubmit={handleSubmit}>
{/* Form fields */}
</form>;
}
import { useSignUp } from "@wacht/tanstack-router";
function EmailOtpFlow() {
const { signUp, loading, signupAttempt } = useSignUp();
const handleSubmit = async (email: string, password: string) => {
await signUp.create({ email, password });
};
const sendOtp = async () => {
await signUp.prepareVerification({ strategy: "email_otp" });
};
const verifyOtp = async (verificationCode: string) => {
await signUp.completeVerification(verificationCode);
};
return (
<>
{!signupAttempt && (
<form onSubmit={() => handleSubmit(email, password)}>
{/* Initial form */}
</form>
)}
{signupAttempt && (
<form onSubmit={() => verifyOtp(code)}>
{/* OTP verification */}
<button type="button" onClick={sendOtp}>Resend Code</button>
</form>
)}
</>
);
}
import { useSignUp } from "@wacht/tanstack-router";
function InviteFlow() {
const { signUp } = useSignUp();
const [inviteToken] = useState("token_from_url");
useEffect(() => {
signUp.validateDeploymentInvitation(inviteToken).then((result) => {
if (result.valid) {
// Pre-fill form
setFormData({
email: result.email,
first_name: result.first_name,
last_name: result.last_name,
});
}
});
}, []);
const handleSignUp = async (data: SignUpParams) => {
await signUp.create({
...data,
invite_token: inviteToken,
});
};
return <form onSubmit={handleSignUp}>{/* Form */}</form>;
}