~2KB
Zero runtime dependencies. Ships in under 2KB minified and gzipped. react-hook-form is ~25KB. Your users will notice.
import { useRapidForm } from 'rapid-form';
export function ContactForm() { const { refValidation, errors, values } = useRapidForm();
return ( <form ref={(ref) => refValidation(ref)}> <input name="email" type="email" required placeholder="you@example.com" /> {errors.email?.isInvalid && ( <span>{errors.email.message}</span> )}
<input name="name" required placeholder="Your name" /> {errors.name?.isInvalid && <span>{errors.name.message}</span>}
<button type="submit">Send</button> </form> );}That’s the whole thing. No schema. No register(). No Controller. Just native HTML.
~2KB
Zero runtime dependencies. Ships in under 2KB minified and gzipped. react-hook-form is ~25KB. Your users will notice.
Native HTML
Any element with name + required is automatically validated. No register(). No Controller. No wrappers.
No re-renders
Validation is event-driven, not controlled. Your form doesn’t re-render on every keystroke. It stays fast.
Any field type
input, select, textarea, checkbox — all supported out of the box. If the browser knows it, Rapid Form handles it.