"ALWAYS use when writing code importing \"@formkit/core\". Consult for debugging, best practices, or modifying @formkit/core, formkit/core, formkit core, formkit."
Resources
1Install
npx skillscat add harlan-zw/vue-ecosystem-skills/formkit-core-skilld Install via the SkillsCat registry.
formkit/formkit @formkit/core
Version: 1.7.2 (Dec 2025)
Deps: @formkit/utils@^1.7.2
Tags: perf: 1.0.0-beta.13-c578106 (Nov 2022), dev: 1.7.1-dev.3466e73 (Dec 2025), latest: 1.7.2 (Dec 2025), next: 1.7.2-next.296355 (Dec 2025)
References: Docs — API reference, guides • GitHub Issues — bugs, workarounds, edge cases • GitHub Discussions — Q&A, patterns, recipes • Releases — changelog, breaking changes, new APIs
API Changes
This section documents version-specific API changes — prioritize recent major/minor releases.
NEW:
useFormKitContext()— v1.6.0, access parent context with optional effect callback sourceNEW:
useFormKitContextById()— v1.6.0, access any context by its explicit id sourceNEW:
useFormKitNodeById()— v1.6.0, access any node by its explicit id sourceNEW:
stopWatch()— v1.6.0, de-registers receipts from thewatchRegistryfunction sourceNEW:
libraryprop — v1.6.0, adds additional components to the input schema for sections-schema sourceNEW:
createInput— v1.5.0, third argumentsectionsSchemaallows extending default sections sourceNEW:
didMount/mounted— v1.5.0, context property and node event to detect DOM mounting sourceNEW:
changeLocale()— v1.5.0, globally change locale for all forms across multiple APIs sourceNEW:
date_after_node— v1.7.0, compare date against another field; alsodate_before_nodesourceNEW:
passingstate — v1.6.3,context.state.passingindicates if input satisfies validation rules sourceNEW:
minAutoHeight— v1.7.0, prop for auto-height textarea addon to respect CSS min-height sourceBREAKING:
@formkit/vue— v1.6.0, Vue is now a peer dependency to avoid multiple instance issues sourceDEPRECATED: Genesis CSS theme — v1.5.0, marked as legacy; use Tailwind themes instead source
NEW:
mergeStrategy(experimental) — v1.6.1, syncs two nodes of same name in same parent (experimental) source
Also changed: getNode<T>() generic v1.6.0 · Boolean props shorthand v1.5.0 · summaryHeader i18n v1.7.0 · node.children reactivity v1.5.0 · FormKitTypeDefinition inference v1.6.0 · themes peer deps removed v1.7.1
Best Practices
Read resolved configuration and prop data from
node.propsrather thannode.config— explicit props and parent configurations are automatically merged into the props object sourceSynchronize multiple inputs with the same name at the same level using the
mergeStrategyconfig option — prevents value conflicts when identical names are required by template structure sourceUse
node.input(value)instead of direct assignment tonode.value— ensures the tree's state is tracked and triggers the asynchronous settlement process sourceAwait
node.settledbefore programmatically reading form values or submitting — guarantees all asynchronous input commits and side effects are complete sourceAppend
.deepto event names innode.on()to capture events bubbling from descendants — allows parent nodes or plugins to respond to subtree lifecycle changes sourceLeverage
node.ledgerto create reactive, tree-wide counters for messages — efficiently sums message states (like errors or visibility) across complex form structures sourceTraverse the node tree using
node.at()with special tokens like$root,$parent, and$self— provides a robust way to access relative nodes without hardcoding absolute paths sourceOpt out of
defaultConfigin production to enable tree-shaking for unused rules, inputs, and locales — significantly reduces bundle size by manually registering only required features sourceRegister middleware via
node.hookwithin plugins to intercept core operations — enables reusable logic for transforming props, values, or error messages across multiple forms sourceAlways remove event listeners using the "receipt" returned by
node.on()vianode.off(receipt)— prevents memory leaks and redundant execution in long-lived or dynamic form contexts source