finds.dev← search

// the find

surveyjs/survey-library

★ 4,774 · TypeScript · MIT · updated Jun 2026

SurveyJS is an open-source JavaScript form builder library that allows developers to create dynamic forms, multi-step form wizards, and survey applications. It supports React, Angular, and Vue.js (Vue 3), and can also be used in applications built with plain JavaScript.

SurveyJS Form Library is a mature, actively maintained TypeScript library for rendering JSON-schema-driven forms and surveys across React, Angular, Vue 3, and vanilla JS. It handles the full spectrum from simple contact forms to complex multi-page surveys with conditional logic, scoring, and dynamic panels. Aimed at developers who need to embed form functionality in their own apps without giving data to a SaaS provider.

- The JSON schema approach is well-designed: forms are fully serializable, easy to store in a DB, and the same schema renders correctly across all supported frameworks since the core model is framework-independent.

- Test coverage is genuinely impressive — there are separate Playwright e2e suites, accessibility tests (axe-based), and what appears to be thousands of unit tests in survey-core, plus visual regression tests in CI.

- Conditional logic and expression language are first-class features, not bolted on — visibleIf, enableIf, requiredIf, triggers, and calculated values are all part of the schema, which eliminates a lot of custom JS glue code.

- Weekly releases with a maintained CHANGELOG and a public roadmap is a real commitment that shows ongoing commercial backing, reducing the typical open-source abandonment risk.

- The free library is the renderer only; the drag-and-drop form builder (Survey Creator), dashboard, and PDF export are separate packages with their own licensing that gets murky for commercial use — easy to start free and discover the thing you actually need costs money.

- Bundle size is significant. The core plus a framework adapter is not a light dependency; for apps that need one simple form this is overkill, and tree-shaking support across the packages is not obvious.

- The codebase still has legacy Knockout and jQuery support alongside modern framework packages, which creates maintenance surface area and means some internals carry historical baggage (e.g., mixed .js and .ts files in functionalTests).

- Customizing the appearance beyond the built-in themes requires understanding their internal CSS class system, which is fairly opaque and not well abstracted — you end up fighting specificity rather than using clean extension points.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →