API Reference
Complete API reference for all Form Guardian packages.
Packages
Form Guardian consists of three main packages, each designed for specific use cases:
@form-guardian/dom
Universal DOM-based form autosave. Works with any framework or vanilla HTML forms.
- Use when: You need framework-agnostic autosave
- Perfect for: Vanilla JS, Vue, Angular, Svelte, or any DOM-based forms
- Key features: Automatic field detection, security filters, TTL support
@form-guardian/react
React hooks and components for form autosave. Built on top of @form-guardian/dom.
- Use when: Building React applications
- Perfect for: React Hook Form, Formik, controlled/uncontrolled forms
- Key features: React hooks API, draft status tracking, controlled component support
@form-guardian/core
Headless core for draft management. Framework-agnostic storage operations.
- Use when: You need low-level draft management
- Perfect for: Custom implementations, SSR, mobile apps
- Key features: Direct storage access, custom backends, minimal overhead
Quick Links
- 📖 Getting Started - Quick setup guide
- 🍳 Cookbook - Advanced recipes and patterns
- ✅ Best Practices - Tips and pitfalls to avoid
- 📊 Analytics Events - Event tracking guide
- ⚙️ Batching - Performance optimization
- 📈 Draft Status - Real-time status tracking
Common Types
FormAutosaveOptions
Configuration options shared across packages.
interface FormAutosaveOptions<T> {
debounceMs?: number;
includeOrigin?: boolean;
storagePrefix?: string;
autoRestore?: boolean;
ttl?: number | { days?: number; hours?: number; minutes?: number };
blacklist?: string[];
whitelist?: string[];
onBeforeSave?: (values: T) => void | Promise<void>;
onAfterSave?: (values: T) => void | Promise<void>;
onBeforeRestore?: (values: T) => void | Promise<void>;
onAfterRestore?: (values: T) => void | Promise<void>;
onDraftExpired?: (draftId: string) => void | Promise<void>;
batchSaveInterval?: number;
}
DraftData<T>
Draft data structure used in storage.
interface DraftData<T> {
values: T;
updatedAt: number;
formId?: string;
origin?: string;
ttl?: number | { days?: number; hours?: number; minutes?: number };
}
DraftMeta
Draft metadata information.
interface DraftMeta {
updatedAt: number;
formId?: string;
origin?: string;
ttl?: number | { days?: number; hours?: number; minutes?: number };
}