Skip to main content

Dynamic Forms in Jira: Show, Hide & Require Fields by Context

Formify - Dynamic Fields for Jira - the complete guide to dynamic forms

A dynamic form in Jira is one whose fields react to context — they show, hide, become required, or go read-only depending on the issue type and what the user has already entered. Native Jira field configuration is static, so most teams reach for scripts. This guide shows how dynamic forms actually work in Jira Cloud, what native configuration can and cannot do, and how to build context-aware forms without ScriptRunner.

TL;DR

Native Jira field configuration is static — a field is shown, hidden, or required the same way for every issue of a type, with no reaction to other field values. Dynamic forms add rules: if Issue Type is Bug, show Root Cause; if Priority is Highest, require an Approver. You can approximate this with ScriptRunner Behaviours (code) or build it no-code with Formify. Jump to building dynamic forms without ScriptRunner.

What are dynamic forms in Jira?

A dynamic form is a Jira issue form whose fields change based on context — the issue type, the project, or the value of another field. Instead of one fixed layout, the form adapts as the user fills it in: irrelevant fields disappear, conditionally important fields become required, and reference fields can be locked read-only.

Four rule types cover almost every dynamic-form need:

  • Show / hide — reveal or remove a field based on issue type or another field's value, to keep the form short and relevant.
  • Require conditionally — make a field mandatory only when it actually matters, instead of forcing it on every issue.
  • Read-only — display a value but prevent edits when a condition holds, useful for automation-fed or role-reserved fields.
  • Limit options — filter a dropdown's choices by context so people only see the values that are valid right now.

The Formify configuration panel for a field, with the dynamic-form rule types as tabs — Visibility, Required, Value, Read-only, Description, Name, and Validation.

The Formify field configuration panel — each tab is a dynamic-form rule type.

Why Jira's native field configuration isn't enough

Jira does have a built-in mechanism: field configuration schemes. Per issue type, you can hide a field or mark it required. For coarse differences — Bugs need a different layout than Stories — this is genuinely useful, and you should keep using it.

Where it stops:

  • No reaction to field values. You can require Approver on every Change, but not "only when Priority is Highest".
  • Static per issue type. The layout is fixed the moment the issue type is chosen; it can't adapt as the user types.
  • No read-only-by-context. A field is editable, or it's on a view screen — there is no "show but lock" based on a condition.
  • No transition-level shaping. Workflow validators fire too late (on submit) and can't change the form a user sees.
CapabilityNative field configurationDynamic forms
Show / hide by issue typeYesYes
Show / hide by field valueNoYes
Conditionally requiredNoYes
Read-only by contextNoYes
Limit dropdown options by contextNoYes

Native configuration sets the baseline layout. Dynamic forms add the if this, then that layer on top.

Show or hide fields by issue type or field value

The most common dynamic-form rule keeps the form clean by hiding fields that don't apply. Hide Story Points on Bugs; reveal Root Cause only when Issue Type is Bug; show a Vendor field only when Category is "Third-party".

With a no-code app you define a condition (Issue Type equals Bug, or Category equals Third-party) and a Show or Hide action on the target field. The rule runs live on the create and edit screens, so the field appears and disappears as the user changes the trigger. The full walkthrough lives in how to show or hide fields by issue type.

The rule builder with a condition (Issue Type = Bug) and a Show action on the Root Cause field — one condition, one action, no code.

A show/hide rule: one condition, one action — no code.

Make fields required conditionally

Forcing a field to be required for every issue trains people to type junk just to get past it. Dynamic forms make a field required only when it matters: require Resolution Notes only when Status moves to Done, or require an Approver only when Priority is Highest.

Two patterns cover it:

  • Required on the form — the field must be filled before the issue can be saved, but only when the condition holds. See conditional required fields.
  • Required on a transition — enforce data entry at a specific workflow step without writing a workflow validator. See requiring fields on transitions.

The result is cleaner data where you need it and less friction where you don't.

Read-only fields and limiting options by context

Two more dynamic behaviours round out a context-aware form:

  • Read-only fields. Show a value but prevent edits when a condition holds — useful for fields populated by automation or reserved for a specific role. Native Jira has no per-context read-only state; a dynamic form can lock a field exactly when you want it locked.
  • Limit dropdown options. Instead of one long list, show only the choices that are valid for the current context — filter Components, Priority, or a custom select by issue type or by another field's value. See how to limit dropdown options.

Both reduce the two biggest sources of dirty data: edits that shouldn't happen, and choices that shouldn't be available.

Building dynamic forms without ScriptRunner

For years the answer to "dynamic forms in Jira" was ScriptRunner Behaviours — powerful, but you write and maintain Groovy, and every rule is code that a Jira admin has to own.

The no-code path gives you the same four rule types — show/hide, conditionally required, read-only, limit options — through a configuration UI instead of scripts. You pick a condition and an action; there is nothing to deploy and nothing to debug at runtime.

ApproachSetupReacts to field valuesMaintenance
Native field configurationConfig UINoLow (but limited)
ScriptRunner BehavioursGroovy codeYesCode ownership
Formify (no-code)Config UIYesNo code

For the full decision framework — when each approach makes sense and the hidden costs of each — see native vs ScriptRunner vs no-code apps.

How to build a dynamic-form rule, step by step

Here is the whole loop, from install to a working rule, using a no-code rule builder.

1

Install Formify from the Marketplace

Add Formify - Dynamic Fields for Jira from the Atlassian Marketplace. It installs as a Jira Cloud app — no scripts, no external setup.

2

Choose the field to control

Open the configuration and pick the field whose behaviour should change — for example Root Cause or Approver.

3

Choose the action

Pick Show, Hide, Make Required, Read-only, or Limit Options for the controlled field.

4

Define the condition

Set the trigger: Issue Type equals Bug, Priority equals Highest, or any other field's value.

The condition builder selecting a field and value — define when the rule fires.

The condition builder — define when the rule fires.
5

Test on a real issue

Open an issue that matches the condition and confirm the form reacts as configured — the field appears, becomes required, or locks as expected.

Build dynamic forms in Jira without scripts

Free trial of Formify — show, hide, require, and lock fields by context with a no-code rule builder.

Start free trial on Marketplace

FAQ

What are dynamic forms in Jira?

Dynamic forms are Jira issue forms whose fields react to context. A field can show, hide, become required, go read-only, or limit its options based on the issue type or the value of another field — instead of staying the same for every issue.

Does Jira have dynamic forms natively?

Only partly. Native field configuration schemes let you show, hide, or require a field per issue type, but they can't react to another field's value, can't make a field read-only by context, and can't change the form as the user types. For those you need ScriptRunner or a no-code app like Formify.

How do I show or hide a field based on another field in Jira?

Define a condition on the trigger field (for example Category equals Third-party) and attach a Show or Hide action to the target field. Native Jira can't do this on field value; a no-code rule builder runs it live on the create and edit screens.

Can I make a Jira field required only sometimes?

Yes. A conditionally required rule makes a field mandatory only when a condition holds — such as requiring an Approver only when Priority is Highest — and leaves it optional otherwise, so people aren't forced to fill fields that don't apply.

How do I make a Jira field read-only?

Native Jira has no per-context read-only state. A dynamic form can lock a field when a condition is true — for example a value set by automation that users should see but not edit — and leave it editable the rest of the time.

Can I build dynamic forms without ScriptRunner?

Yes. A no-code app such as Formify provides the same rule types — show/hide, conditionally required, read-only, limit options — through a configuration UI, so there is no Groovy to write or maintain.

What is the difference between field configuration and dynamic forms?

Field configuration is static and set per issue type. Dynamic forms add conditional logic on top: rules that react to field values, apply read-only by context, and reshape the form as the user fills it in.

Do dynamic forms work on the issue create and edit screens?

Yes. The rules run live wherever the user edits the issue, so fields appear, hide, lock, or become required as the trigger value changes — on both the create and edit experiences.

Make your Jira forms react to context

Formify adds show, hide, require, read-only, and limit-options rules to any field — no code. Free trial on the Atlassian Marketplace.

Start free trial on Marketplace