
Verino
Reliable OTP inputs for any framework from a single core
5 followers
Reliable OTP inputs for any framework from a single core
5 followers
Verino is the only OTP input built on a framework-agnostic state machine with an event system. A zero-dependency core powers six adapters: React, Vue, Svelte, Alpine, Vanilla JS, and Web Components, without reimplementing any logic. It ships with a built-in countdown timer, resend system, masked PIN mode, and support for the Web OTP API for automatic Android SMS retrieval. You also get full programmatic control through setError, setSuccess, setDisabled, reset, and resend.









Hey Product Hunt — Olawale here, the creator of Verino.
I built Verino after running into the same frustration across multiple projects: most OTP libraries only give you the input slots and nothing else. You still have to build the countdown timer, resend cooldown, verification lock, error state, and masked PIN display from scratch every single time.
Verino ships all of that as first-class features. And because the entire input logic runs on a pure TypeScript state machine with zero dependencies, it works identically across React, Vue, Svelte, Alpine, Vanilla JS, and Web Components, all powered by the same core.
A few things I'm especially proud of:
→ Minimal setup: a complete OTP input with just a few lines of code
→ Built-in Web OTP API: Android Chrome automatically detects and autofills incoming SMS codes
→ Race-safe onComplete: a guard ensures it never double-fires, even when slots are re-filled
→ Password manager guard: cleanly handles overlays from LastPass, 1Password, Bitwarden, and others
→ 1230 unit tests + Playwright E2E across Chrome, Firefox, Safari, and Mobile Chrome
→ Typed event system: every state change emits a discriminated union (COMPLETE, INVALID_CHAR, RESET, BLUR, and more), so you always know exactly what happened
This is the library I wish existed when I first started building authentication flows.
npmjs.com/org/verino • verino.vercel.app • github.com/boastack/verino