Home / Blocks / Application / Verification Pages
6 blocks in this section

Shadcn Two-Factor and Verification Pages

Complete verification workflows for codes, links, passkeys, patient phones and insurance identity, including cooldown, lockout and recovery states.

Jump to a verification page block

6 blocks in this collection

Free Pro

  1. Verify 1 Free
  2. Verify 2 Pro
  3. Verify 3 Pro
  4. Verify 4 Pro
  5. Verify 5 Pro
  6. Verify 6 Pro

How it works

Three steps to working code

Install a block and the files land in your repository. Nothing calls back to us.

  1. terminal

    $ npx shadcn@latest add @shadcnstore/verify-1

    ✓ Checking registry

    ✓ Installing dependencies

    01

    Run one command

    Every preview above prints its own. The CLI writes the block and the components it needs into your project.

    Installation docs
  2. your project 3 files added

    components/

    ├─ ui/

    ├─ button.tsx

    └─ navigation-menu.tsx

    └─ verify-1.tsx

    02

    Get real files

    React, TypeScript and Tailwind v4, with no framework imports. Next.js, Vite, Remix and Astro all work.

  3. verify-1.tsx

    <Menu.Trigger

    - asChild

    + render={<button />}

    />

    03

    Edit it as your own

    Built on Base UI, not Radix, so keyboard and focus behaviour come from the primitive.

Blocks that hold state already carry the use client directive the Next.js App Router needs.

Guide

Verification screens, and the failure paths that matter#

Verification is where an account flow proves who somebody is, and it is almost entirely made of edge cases. A wrong code, an expired link, a cancelled biometric prompt, a browser with no passkey support, a phone that never receives the message. These six are built around those.

The six verification blocks#

  • Verify 1: two-factor code entry with a resend cooldown, backup codes and lockout. Free.
  • Verify 2: email verification covering the check-inbox, verified and expired states.
  • Verify 3: passkey sign-in with a biometric ring, a magic-link fallback and an unsupported-browser layout.
  • Verify 4: phone verification end to end, with country entry, a draining cooldown ring, a voice fallback and lockout.
  • Verify 5: document capture with an extraction reveal, confidence flags, eligibility results and actionable rejections.
  • Verify 6: a split-screen identity check with the code entry beside the thing it protects.

Two-factor code entry#

Verify 1 covers the whole screen: a segmented input that accepts a paste of the full code, a resend control with a visible cooldown rather than a silently ignored click, backup codes as a route out, and an attempt-based lockout that names the backup option instead of leaving somebody stuck at a dead end.

Passkeys, and the fallbacks that matter more#

Verify 3 handles the passkey path, but the valuable part is what happens when it does not work: a neutral cancellation state rather than an error, a magic link and an authenticator as alternatives, and a designed layout for browsers with no support. Passkey availability is still uneven, so a screen without fallbacks locks out a real share of users.

Phone verification#

Verify 4 covers country-aware formatting, one-time-code autofill, a cooldown you can see draining, a voice call fallback for anybody whose network drops the message, and lockout after repeated attempts. The voice fallback is the one usually skipped and the one that rescues the accounts you would otherwise lose entirely.

Masked addresses and what to reveal#

The email screens show a masked address, keeping enough to confirm you used the right one without printing it in full on a screen somebody else might be reading. It is a single value you already have from the token check, so there is no reason to render more than that.

Verification emails sit unread, so the expired state is the screen people actually reach. Verify 2 designs it and offers a fresh link from the same page rather than sending somebody back to the start. Every one of these states, including the failures, is announced through a live region so a screen reader user learns the code was wrong at the same moment everyone else does.

Where verification sits#

Between the signup form and the login form, and as the second factor on a returning sign-in. It shares its layout language with password recovery, so an account flow keeps one design from first visit to recovery, and lands inside the app shell once identity is settled.

FAQ

Verification Pages questions, answered

What people ask before choosing a block from this collection.

Verify 1 covers code entry with a visible resend cooldown, backup codes and an attempt-based lockout that names the backup route instead of leaving the user stuck. It is free.
Verify 2 covers the whole flow: the check-your-inbox screen with a masked address, the verified confirmation, and the expired link with recovery from the same page. The expired state is the one people actually reach, so it is designed rather than generic.
Verify 3 is a passkey screen with a remembered identity, a neutral cancellation state, magic-link and authenticator fallbacks, and a designed unsupported-browser path. The fallbacks matter more than the happy path, because passkey support is still uneven.
To confirm you used the right address without printing it in full on a screen someone else might be looking at. It is a single value you usually already have from the token check.
Between the signup form and the login form, and they share a layout language with password recovery so an account flow never changes design mid-way.

Documentation

The components behind these blocks

How to install, customise and combine the shadcn/ui components this collection is built from.

Free & Premium Templates

Launch Faster with Complete Templates

Love these blocks? Get our free dashboard and landing page templates with 30+ pre-built pages and all the components you need. Premium templates with advanced features launching soon at $69.

Free Templates Now
30+ Pages Included
Premium Coming Soon