Skip to content

Introduction

FormX is a headless dynamic form engine for complex business applications. It describes business forms with JSON, executes state, linkage, validation, and remote resources in an independent core engine, then renders framework-neutral view models through replaceable UI skins.

It is not just a renderer for a few input fields. FormX is designed for forms with many fields, nested structures, dynamic arrays, remote options, async validation, and schema-driven product workflows.

What FormX solves

ProblemTraditional approachFormX approach
Repeated fieldsHandwrite form items per pageDescribe reusable fields with schema
Scattered linkageWatchers and event callbacksCentralize linkage with shortcuts and rulesV2
Remote optionsRequests hidden inside componentsRegister resources once and bind them by key
Dynamic arraysHandwrite add/remove/path/error logicUse field-group and scoped rules
UI lock-inLogic tied to one UI libraryKeep logic in Core and render through skins
Hard to governBusiness rules hidden in codeStore, review, generate, and replay JSON DSL

Strengths

Headless Core
@formxjs/core runs without Vue, React, or Element Plus. It can be used in browsers, Node.js, designers, tests, and preview tools.

Unified Rules
Shortcuts such as showWhen, requiredWhen, compute, and optionsFrom compile into the same rule pipeline as rulesV2.

Nested Business Models
FormX supports objects, dynamic arrays, nested arrays, $self, $parent, $root, and pattern paths. It is not limited to flat forms.

Resource Runtime
Remote options, cascades, async validation, and business queries can be managed by ResourceManager with declarative params and runtime refresh.

Replaceable Skins
The current Vue + Element Plus skin proves the model, while Core and UI Core stay reusable for other renderers.

Runtime model

txt
schema.json
  -> @formxjs/core
     compile shortcuts, execute rules, own values/state/resources/validation
  -> @formxjs/ui-core
     build FormView / FieldView / FieldGroupView
  -> @formxjs/vue-ep or another skin
     render into Vue, Element Plus, or a future UI stack

When to use it

FormX fits:

  • Admin CRUD dialogs and drawers.
  • Policy configuration, connection configuration, approval workflows, and permission matrices.
  • Low-code or configuration platforms that store form schema on the server.
  • Designers that need preview, validation, export, and replay.
  • Products that want one rule runtime with multiple UI skins.

For a very small static form with no reuse, no linkage, and no schema requirement, a native UI library form may be enough.