How to enable
- Removes the password field from sign-up.
- Wires up the magic-link flow using built-in auth.
- Sets up the email template (default: simple branded message with the link).
How it works
1
User enters email
On the sign-in page.
2
vly sends a one-time link
Token expires in 15 minutes. Email goes via your configured provider (Resend by default).
3
User clicks the link
Opens your app, authenticates, signs them in.
4
Session created
Same long-lived session as password auth.
Tradeoffs
✅ No passwords to forget
Eliminates the password-reset support burden.
✅ No leaked credentials
A leaked database can’t expose passwords that don’t exist.
✅ Smoother sign-up
Lower friction — one field instead of two; no password requirements to remember.
❌ Requires email access
Users without a working email can’t sign in.
❌ Slightly slower
Round-trip via email; ~5–30 seconds to receive.
❌ Email security matters
Compromised email = compromised account. Same as password reset, but every sign-in.
Customizing the email
The default template is short and branded. To customize:magicLink template under Workspace settings → Auth → Email templates.
Related
Built-in auth
The full auth system.
OAuth providers
Google / GitHub / etc. as alternatives.
Resend integration
The default email sender.
