Passwordless login smoother than a backcountry ski run on Loveland Pass
Quick email input
Instant delivery
One-tap access
That's the magic
// In your login component
const handleMagicLogin = async (email) => {
const result = await api.post('/auth/magic-link', {
email,
redirect_url: window.location.origin + '/dashboard'
});
showMessage("Check your email for a magic link!");
};// Our SDK handles link validation automatically
import { MagicLinkHandler } from '@23blocks/auth-sdk';
// In your app startup
MagicLinkHandler.setup({
onSuccess: (user) => {
// User is logged in, redirect to app
navigate('/dashboard');
},
onError: (error) => {
// Handle expired/invalid links
showError("Link expired. Please try again.");
}
});// Advanced magic link options
const customLink = await auth.createMagicLink({
email: user.email,
template: "custom-login-email",
metadata: {
login_source: "mobile_app",
feature_access: "premium"
},
restrictions: {
device_type: "mobile",
max_uses: 1,
expires_in: "10m"
}
});<h1>{{ '{' + '{' }}company_name{{ '}' + '}' }} Magic Link</h1>
<p>Hi {{ '{' + '{' }}user_name{{ '}' + '}' }},</p>
<p>Click below to access your account:</p>
<a href="{{ '{' + '{' }}magic_link{{ '}' + '}' }}" class="magic-button">
Access My Account
</a>
<p>This link expires in {{ '{' + '{' }}expires_in{{ '}' + '}' }} minutes.</p>// Track everything that matters
const analytics = await auth.getMagicLinkAnalytics();
// {
// sent: 1547,
// clicked: 1398, // 90.4% click rate
// successful: 1362, // 97.4% success rate
// expired: 23,
// suspicious: 2
// }Stop losing users to password fatigue. Start delighting them with one-click access that just works.
P.S. We named our magic link system "Powder Pass" – both get you instant access to what you want without the usual hassle. Unlike lift tickets, our magic links never get lost in your jacket pocket.
P.P.S. We've delivered over 50 million magic links. That's more than the number of "Free Tibet" stickers on Subarus in Boulder. (Okay, maybe not quite that many.)
Get product updates, engineering posts, and new block announcements delivered to your inbox.