Build JSON Forms and Surveys
in Vue.js

SurveyJS for Vue.js is a set of client-side JavaScript libraries for building a custom form and survey management system inside your Vue.js application.

SurveyJS Form Library

Use Form Library to render dynamic forms and surveys from JSON schemas in your Vue.js application. It supports multi-page forms, conditional logic, validation, calculated values, file upload, matrices, dynamic panels, progress bars, and custom question types.
  • Multi-step forms / form wizard
  • Conditional logic
  • Dynamic panels / repeatable sections
  • Auto-populated fields
  • Custom validation
  • Calculated values
  • Save and restore incomplete forms
<template>
  <Survey :survey="survey" />
</template>

<script>
import "survey-core/survey-core.min.css";
import { Model } from "survey-core";
import { Survey } from 'survey-vue-ui;

const surveyJson = { ... };

export default {
  components: {
    Survey
  },
  data() {
    const survey = new Model(surveyJson);
    survey.onComplete.add((sender, options) => {
        // Store data in your data storage
        console.log(
            JSON.stringify(sender.data, null, 3));
    });
    return {
      survey
    }
  },
}
</script>

SurveyJS Survey Creator

Survey Creator is a drag-and-drop form builder for Vue.js applications. Embed it in your app to let users create and edit forms visually, while your application stores and manages the generated JSON schema.
  • White-label UI
  • Customizable Toolbox & Settings Panel
  • UI Preset Editor
  • Theme Editor
  • Custom question types
  • Multi-user form editing
  • Localization / translations
<template>
  <div id="surveyCreator" />
</template>

<script>
import { SurveyCreator } from "survey-creator-knockout";
import "survey-core/survey-core.min.css";
import "survey-creator-core/survey-creator-core.min.css";

const creatorOptions = {
  autoSaveEnabled: true
};

export default {
  name: "survey-creator",
  mounted() {
    const creator = new SurveyCreator(creatorOptions);
    creator.render("surveyCreator");
  }
};
</script>

SurveyJS Dashboard

Use Dashboard to visualize survey results with charts, tables, and custom visualizers.
  • Survey results analysis
  • Live response updates
  • Response filtering and sorting
  • Custom visualizers
  • Export responses
  • Pivot chart
  • Table view
const surveyJson = {
  // ...
};

const survey = new Survey.Model(json);
const allQuestions = survey.getAllQuestions();
const node = document.getElementById("survey-dashboard");

fetch("https://www.example.com/survey-results/")
  .then(response => response.json())
  .then(data => {
    const vizPanel = new SurveyAnalytics.VisualizationPanel(
      allQuestions,
      data
    );
    vizPanel.render(node);
});

SurveyJS PDF Generator

Use PDF Generator to create printable, editable, or read-only PDF forms from the same SurveyJS JSON schema.
  • Export web forms to PDF
  • Generate completed response records
  • Fill existing PDF forms
  • Create read-only PDF documents
  • Apply custom fonts
  • Configure PDF page size, orientation, and margins
  • Customize PDF themes and layouts
import { SurveyPDF } from "survey-pdf";

function prepareSurveyPDF() {
  const surveyPDF = new SurveyPDF(json);
  surveyPDF.data = survey.data;
  return surveyPDF;
}
function savePdfAsFile() {
  const surveyPDF = prepareSurveyPDF();
  surveyPDF.save("surveyAsFile.pdf");
}
function savePdfAsBlob() {
  const surveyPDF = prepareSurveyPDF();
  surveyPDF
    .raw("bloburl")
    .then(function (bloburl) {
      const a = document.createElement("a");
      a.href = bloburl;
      a.download = "surveyAsBlob.pdf";
      document.body.appendChild(a);
      a.click();
    });
}
function previewPdf() {
  const surveyPDF = prepareSurveyPDF();
  const oldFrame = document.getElementById("pdf-preview-frame");
  if (oldFrame)
    oldFrame.parentNode.removeChild(oldFrame);
  surveyPDF
    .raw("dataurlstring")
    .then(function (dataurl) {
      const pdfEmbed = document.createElement("embed");
      pdfEmbed.setAttribute("id", "pdf-preview-frame");
      pdfEmbed.setAttribute("type", "application/pdf");
      pdfEmbed.setAttribute("style", "width:100%");
      pdfEmbed.setAttribute("height", 200);
      pdfEmbed.setAttribute("src", dataurl);
      const previewDiv = document.getElementById("pdf-preview");
      previewDiv.appendChild(pdfEmbed);
  });
}
Survey Creator creates the JSON schema. Form Library renders that schema as an interactive form. Submitted responses are saved to your database. Dashboard reads the schema and responses to display results. PDF Generator uses the same schema and response data to create PDF forms.

Survey Management System Examples

SurveyJS UI libraries let you build a full-cycle survey management system inside your Vue.js application. Users can design forms, publish surveys, submit and review responses, and export completed data to PDF without leaving your app. The same architecture is available for React, Angular, jQuery, and Vanilla JavaScript.

View examples of such systems for the most popular backend frameworks and CMS.

Node.js

Learn how to integrate SurveyJS components with a Node.js server.

ASP.NET Core

View a demo example of how SurveyJS works with an ASP.NET Core backend.

PHP

Configure client-server interaction of SurveyJS components with a PHP backend.

WordPress

Embed SurveyJS Form Library and Survey Creator in your site using a WordPress plugin.

Domain Model

Generate forms for domain models and edit them in Survey Creator.

Node.js + PostgreSQL

Save forms and user responses in a PostgreSQL database on a Node.js server.

Node.js + MongoDB

Integrate SurveyJS components with a Node.js server that uses a MongoDB database.

Python

Configure client-server interaction of SurveyJS components with a Python backend.

To learn more about how SurveyJS libraries interact with your backend, see the following help topic: Integrate SurveyJS Libraries with Backend

Frequently Asked Questions

Still Got Questions?

Check our FAQ or Contact Us

Your cookie settings

We use cookies to make your browsing experience more convenient and personal. Some cookies are essential, while others help us analyse traffic. Your personal data and cookies may be used for ad personalization. By clicking “Accept All”, you consent to the use of all cookies as described in our Terms of Use and Privacy Statement. You can manage your preferences in “Cookie settings.”

Your renewal subscription expires soon.

Since the license is perpetual, you will still have permanent access to the product versions released within the first 12 month of the original purchase date.

If you wish to continue receiving technical support from our Help Desk specialists and maintain access to the latest product updates, make sure to renew your subscription by clicking the "Renew" button below.

Your renewal subscription has expired.

Since the license is perpetual, you will still have permanent access to the product versions released within the first 12 month of the original purchase date.

If you wish to continue receiving technical support from our Help Desk specialists and maintain access to the latest product updates, make sure to renew your subscription by clicking the "Renew" button below.