Skip to content
Forms, switch product

Installation

GolemUI is a blazing fast JavaScript library for building dynamic forms from JSON files. It provides a free set of UI widgets with support for React, Angular, Lit, Vue, and Vanilla JS.

New to GolemUI? GolemUI in five claims explains the design decisions behind it, each with working code.

This guide walks you from an empty directory to a rendered form in five steps.

  1. Use Vite (or your favourite scaffolder) to create a fresh project for your framework. For example, with Vite:

    Terminal window
    npm create vite@latest my-form -- --template react-ts
    cd my-form && npm install
  2. Install @golemui/core, @golemui/gui-shared, and the .

    Terminal window
    npm i @golemui/core @golemui/gui-shared @golemui/react @golemui/gui-react @golemui/gui-components --save

    @golemui/gui-components is listed because the next step imports its stylesheet, and package managers stricter than npm (pnpm, Yarn Plug’n’Play) only resolve packages your project declares. The adapter pulls in @golemui/gui-validators as a peer dependency, and you won’t import from it directly.

  3. Load the CSS file directly in your HTML or import it in your Sass/CSS file.

    @import '@golemui/gui-components/index.css';
  4. The easiest way to define a form is through the Programmatic API, using an array of gui.* shortcuts. Alternatively, the same form can be defined using the JSON API if you prefer.

    import { gui } from '@golemui/gui-shared';
    import { GuiForm } from '@golemui/gui-react';
    const formDef = [gui.inputs.textInput('username')];
    const formData = { username: 'golemui' };
    const config = { formDef, data: formData };
    export function FormPage() {
    return (
    <div>
    <GuiForm config={config} />
    </div>
    );
    }

    Create a JSON file with your form definition and pass it to the form component:

    {
    "form": [
    { "kind": "input", "type": "textinput", "path": "username" }
    ]
    }

    Then load and render it in your framework. See the Integration section for framework-specific setup.

  5. Run your dev server and you’ll see your form rendered in the browser.

Want the form in the HTML before any JavaScript runs? GolemUI ships a starter for each meta-framework it was verified with: Next.js for React, Analog for Angular, Astro for Lit, and Nuxt for Vue. Each one renders the same five-field signup form on the server, with conditional fields, cascading options and a custom item renderer.

Terminal window
npx degit golemui/golemui/templates/nextjs my-app
cd my-app && npm install && npm start

Next.js 15 with the App Router, React 19. Node.js 18.18 or newer. Or open it in StackBlitz.

View the page source once the app runs: the form markup arrives without JavaScript. Then read the Server-Side Rendering Overview for the rules every host shares (preloading the widgets, formName, what the server sends) and the guide for your host: Next.js, Analog, Astro or Nuxt. Server-side rendering requires GolemUI 1.5.0 or newer.

Ready for something more substantial? Walk through the Rent a Car form tutorial, where you’ll build a real, multi-field form with conditional logic, custom item renderers, async data loading, and form submission.

For framework-specific configuration (React, Angular, Lit, Vue), see the Integration section. For server-side rendering (Next.js, Analog, Astro, Nuxt, or your own Node server), see Server-Side Rendering.