Capability

Forms that calculate

Weighted scores, pass/fail outcomes, formatted outputs — defined in plain language, computed in real time. No backend code required.

Get Started

Free to start

Weighted Scores

Combine numeric inputs with multipliers and bonuses into a single computed score. FEEL expressions handle the math.

Boolean Outcomes

Pass/fail, eligible/ineligible, engaged/disengaged — computed from thresholds and conditions across multiple fields.

Formatted Outputs

Display computed values with decimal precision, currency formatting, or percentage notation. Built into the spec.

How it works

Describe your calculations in plain language. Get a working form with computed fields.

You describe it

Formidable

Describe the form you want to build, including any calculations or scoring logic.

Create an employee satisfaction survey. Include name, department, experience level, job role, a satisfaction score from 1-10, years at company, and whether they'd recommend the company. Add a computed engagement score: multiply satisfaction by 10, add 15 if they'd recommend. Show an engaged status when score is 7+ and they'd recommend.

Press Enter to send

You get this

The generated form with computed fields

Same form, different outcomes

The engagement score and status update in real time as the user fills out the form.

Alice — Engaged

Form result showing an engaged employee with high score
Engaged: trueScore: 105

Hiro — Not Engaged

Form result showing a not engaged employee with low score
Engaged: falseScore: 55

The computed field spec

forma.json
{
  "computed": {
    "engaged": {
      "label": "Engaged",
      "display": true,
      "expression": "satisfactionScore >= 7 and wouldRecommend = true"
    },
    "engagementScore": {
      "label": "Engagement Score",
      "format": "decimal(0)",
      "display": true,
      "expression": "(satisfactionScore * 10) + (if wouldRecommend = true then 15 else 0)"
    }
  }
}

Headless by design

Fetch the spec, render your own UI, validate server-side. One API for everything.

Request
curl https://api.formidable.software/f/satisfaction-survey \
  -H "Authorization: Bearer sk_live_..."

Response

{
  "meta": {
    "id": "employee-satisfaction-survey",
    "title": "Employee Satisfaction Survey"
  },
  "fields": { ... },
  "computed": {
    "engaged": {
      "expression": "satisfactionScore >= 7 and wouldRecommend = true"
    },
    "engagementScore": {
      "expression": "(satisfactionScore * 10) + ..."
    }
  }
}
Render with ReactYour UI
SatisfactionSurvey.tsx
import { FormRenderer } from "@fogpipe/forma-react";
import type { ComponentMap } from "@fogpipe/forma-react";

const components: ComponentMap = {
  text: TextInput,
  select: SelectField,
  integer: SliderField,
  boolean: Checkbox,
};

function SatisfactionSurvey({ spec }) {
  return (
    <FormRenderer
      spec={spec}
      components={components}
      onSubmit={(data) => {
        // Computed values included automatically
        console.log(data);
      }}
    />
  );
}
Preview

Employee Satisfaction Survey

Alice Chen
Engineering
9

Computed

Engagement Score

105

Engaged
Submit

Why not just code it?

You could. But every formula change becomes a deploy, and every deploy is a risk.

Step
Traditional
Formidable
Define a scoring formula
Write backend logic + unit tests
One FEEL expression in the spec
Show computed value in the form
State management + useEffect
Set "display": true
Change the formula
Code change + PR + deploy
Edit in Formidable, publish instantly
Validate server-side
Duplicate logic in API layer
Single POST to /evaluate
Format the output
Intl.NumberFormat in frontend code
"format": "decimal(0)"
Add a new computed field
Schema migration + code + deploy
Add to computed block, publish
Audit who changed what
Build logging yourself
Built-in version history

Frequently asked questions

What expressions can computed fields use?

Computed fields use FEEL (Friendly Enough Expression Language), a DMN standard. You can use arithmetic operators, comparison operators, boolean logic (and/or/not), conditional expressions (if-then-else), and built-in functions like string(), decimal(), and round().

Can a computed field reference another computed field?

Yes. Computed fields can reference other computed fields in their expressions. The engine resolves dependencies automatically, so you can build layered calculations where one field depends on another.

Are computed fields evaluated on the client or server?

Both. The forma-react renderer evaluates computed fields in real time on the client for instant feedback. The same expressions are evaluated server-side when you POST to the /evaluate endpoint, ensuring consistent results.

Do I need to write any code to use computed fields?

No. Describe what you want to calculate in plain language and Formidable generates the FEEL expressions. If you use the forma-react renderer, computed values display automatically. If you build custom UI, you can evaluate expressions via the API.

Build a form that calculates

Create an employee satisfaction survey with a computed engagement score based on satisfaction rating and recommendation status

Get Started

Free to start · No credit card required