SurveyJS Form Library is a production-grade, multi-framework JavaScript library for creating, rendering, and managing dynamic forms and surveys entirely in the browser. The core package (`survey-core`) provides a comprehensive model layer including serialization via decorators (`Serializer`), a custom expression engine for conditional logic and validation, a static analysis linter for survey JSON definitions, input masking, drag-and-drop, theming (CSS variables with adapters for Bootstrap/MUI/shadcn), and even a real-time collaboration plugin with presence and value sync. UI packages deliver identical rendering across React, Angular, Vue 3, and vanilla JS (Knockout/jQuery). The architecture is a monorepo: the core is framework-agnostic, while UI packages bind to their respective component models. Data flows from JSON definition → deserialization into model → user interaction → validation → result output (also JSON). The test suite is extensive (unit, E2E, accessibility, visual regression) and the library is actively maintained with weekly releases.
FormKit is a form-building framework for Vue and React, organized as a monorepo of 15+ packages. The architecture is a core (framework-agnostic) node tree that manages form state, validation, schema rendering, and plugins, with separate packages for framework bindings (Vue, React, Nuxt), inputs, validation rules, internationalization (30+ locales), icons, themes (CSS, Tailwind, UnoCSS), addons (multi-step, floating labels, localStorage), a CLI for scaffolding and theme generation, and Zod integration. It uses a schema system (JSON-serializable) to define form layouts and conditional rendering, and a plugin/feature pattern for extensibility. The repository demonstrates high engineering quality: extensive test coverage (unit, type, e2e memory leak tests), well-structured abstractions (observers, message stores, composables), and cross-framework consistency. However, there are minor inconsistencies (license declared as UNLICENSED despite README claiming MIT, incomplete translations in some locales, deprecated packages like @formkit/tailwindcss, and potential brittleness in remote API dependencies in the CLI). Overall, it's a production-grade form solution with solid reusability of its core patterns.