Progressive Disclosure
Progressive disclosure is a design pattern where forms start simple and reveal additional fields only when relevant. This keeps forms clean and focused while capturing all necessary data.
Formify enables progressive disclosure by showing or hiding fields based on user selections, issue context, or user permissions.
Show field only shows; it never hides. A field on the screen is visible until a rule hides it, and a rule does nothing while its conditions aren't met. To show a field only when it's relevant, hide it in every other case:
- Hide field with the opposite condition (the usual way): to show Root Cause for High and Critical bugs, hide it when Priority not equals High AND Priority not equals Critical. An empty field also matches "not equals", so the field stays hidden until a value is picked.
- A Hide field rule with no conditions, plus a Show field rule below it on the field's Visibility tab, when the condition has no opposite, such as "contains" or "contains any of" (there is no "does not contain"). Give both rules the same Work type selection: rules with the same work types run from top to bottom, so the Show field rule wins whenever its condition is met. Move up and Move down in a rule's menu change the order. Rules with different work type selections appear together on the tab, but there is no guaranteed order between them.
The field must be on the screen: a rule can't show a field that the screen doesn't include.
Why Progressive Disclosure Matters
The Problem
Long, cluttered forms overwhelm users and lead to incomplete or incorrect data.
Users face dozens of fields they don't need, making it hard to focus on what matters.
The Solution
Show fields only when they're needed. Users see a focused form that adapts to their choices.
Forms become intelligent guides instead of overwhelming questionnaires.
Benefits:
- Faster completion - Users aren't distracted by irrelevant fields. They complete forms quicker with fewer decision points.
- Better data quality - Users fill fields when they understand the context. Right information at the right time.
- Reduced errors - Fewer fields mean fewer opportunities for mistakes. Simpler forms = fewer errors.
- Improved experience - Adaptive forms feel intelligent and helpful. Users appreciate forms that respond to their needs.
Basic Pattern: Hide Field Until It's Relevant
The simplest progressive disclosure rule hides a field whenever the condition that makes it relevant isn't true.
Example 1: Root Cause for High-Priority Bugs
Requirement: Show Root Cause field only for high-priority bugs
Rule Configuration:
- Screen: Global Issue Create
- Target Field: Root Cause
- Scope: Bug
- Conditions (joined with AND):
- Priority not equals High
- Priority not equals Critical
- Action: Hide field
Priority has no "is one of" operator, so the rule lists the two priorities that keep the field visible, each with "not equals".
User Experience:
- User creates Bug with Priority = Low → Root Cause hidden
- User changes Priority to High → Root Cause appears instantly
- Form stays clean for routine bugs while capturing analysis for critical issues
Result: 80% of bugs (low/medium priority) see a simpler form. 20% of critical bugs are asked for a root cause analysis.
Issue Type-Specific Fields
Different issue types need different data. Progressive disclosure ensures each type shows only relevant fields.
Example 2: Bug-Specific Fields
Requirement: Show "Steps to Reproduce" only for Bug issues
Rule Configuration:
- Screen: Global Issue Create
- Target Field: Steps to Reproduce
- Scope: Every work type except Bug (for example Story, Task)
- Condition: (none - applies to all work items of those types)
- Action: Hide field
Alternative: If the field should show for Bugs AND Incidents, leave Incident out of the scope too.
User Experience:
- Bug issues → Steps to Reproduce visible
- Story/Task issues → Steps to Reproduce hidden
Multi-Condition Progressive Disclosure
Combine multiple conditions to show fields in very specific contexts.
Example 3: Executive Contact for Critical Production Incidents
Requirement: Show Executive Contact field for critical incidents in production, but only to non-leadership users
Rule Configuration:
- Screen: Global Issue Create
- Target Field: Executive Contact
- Scope: Incident
- Conditions (joined with OR):
- Priority not equals Critical
- Environment (select list) not equals Production
- Current user is in group "Leadership"
- Action: Hide field
Why it works:
- Opposite conditions joined with OR: The field is hidden as soon as one requirement isn't met: the priority isn't Critical, the environment isn't Production, or the user is in Leadership. It shows only when all three requirements hold.
- Priority + Environment: Targets critical production incidents specifically
- User group: Leadership already knows who to contact; field only shows to team members who need guidance
User Experience:
- Regular team member creating critical production incident → Executive Contact appears
- Leadership creating same incident → Field stays hidden (they don't need it)
Cascading Disclosure
Show fields in sequence as users provide information, creating a guided workflow.
Example 4: Budget Fields for High-Cost Features
Requirement:
- Show "Cost Band" when Feature issue type selected
- Show "Budget Code" and "Finance Approval" when Cost Band is "Over 10,000"
Conditions compare values; they don't check whether a number is above a threshold (see Operators by Field Type). Put the ranges into a select list, here Cost Band with the options "Under 10,000" and "Over 10,000", and build the conditions on it.
Rule 1: Hide Cost Band for Other Work Types
- Screen: Global Issue Create
- Target Field: Cost Band (select list)
- Scope: Every work type except Feature
- Action: Hide field
Result: Cost Band shows only when the Feature issue type is selected
Rule 2: Hide Budget Code Below the Threshold
- Screen: Global Issue Create
- Target Field: Budget Code
- Scope: All work types
- Condition: Cost Band not equals Over 10,000
- Action: Hide field
Result: Budget Code shows once the user picks the "Over 10,000" band
Rule 3: Hide Finance Approval Below the Threshold
- Screen: Global Issue Create
- Target Field: Finance Approval
- Scope: All work types
- Condition: Cost Band not equals Over 10,000
- Action: Hide field
Result: Finance Approval shows once the user picks the "Over 10,000" band
An empty Cost Band also matches "not equals", so the budget fields stay hidden until the user picks a band. They stay hidden on other work types too, where Cost Band is hidden and empty.
User Experience Flow:
- Low-Cost Feature
- High-Cost Feature
- User selects Issue Type = Feature
- Cost Band appears; the budget fields stay hidden while no band is picked
- User picks Under 10,000
- Budget fields stay hidden
Result: Simple form for routine features.
- User selects Issue Type = Feature
- Cost Band appears
- User picks Over 10,000
- Budget Code and Finance Approval appear instantly
- User completes budget approval process
Result: Proper financial governance for expensive features.
Progressive revelation guides users through exactly what they need. No overwhelming forms, no missing critical approvals.
Practical Use Cases
Real-world examples organized by team type:
- Software Development
- Customer Support
- Project Management
Area-Specific Fields
Show "API Endpoint" field only for Backend Bug issues:
- Scope: Bug
- Condition: Area (select list) not equals Backend
- Action: Hide API Endpoint field
Result: Backend developers see relevant debugging information without cluttering forms for frontend work.
Show "UI Screenshot" field only for Frontend Bug issues:
- Scope: Bug
- Condition: Area not equals Frontend
- Action: Hide UI Screenshot field
Result: Frontend bugs automatically prompt for visual evidence, while backend bugs don't show irrelevant screenshot fields.
Impact: Developers get context-appropriate forms that match their workflow. Backend bugs focus on logs and endpoints; frontend bugs focus on visuals.
Tier-Based Field Visibility
Show "Customer Tier" field for Customer Request issues:
- Scope: Every work type except Customer Request
- Action: Hide Customer Tier field
Result: Support requests automatically include customer tier information.
Show "SLA Deadline" when Customer Tier is Premium or Enterprise:
- Scope: Customer Request
- Conditions (joined with AND):
- Customer Tier (select list) not equals Premium
- Customer Tier not equals Enterprise
- Action: Hide SLA Deadline field
Result: Premium and Enterprise support requests automatically display SLA deadlines, ensuring timely response. Standard tier requests remain simple.
Workflow: The person logging the request selects the customer tier → SLA field appears instantly → They know the exact deadline → Customer expectations are met.
Release Management Fields
Show "Release Note" when a bug fix reaches customers:
- Scope: Bug
- Condition: Customer-facing (radio buttons) not equals Yes
- Action: Hide Release Note field
Result: Only fixes that customers will notice require a release note. Internal bugs without release impact stay simple.
Show "Breaking Change Impact" when the release note contains "breaking":
"Contains" has no opposite, so this takes two rules on the Visibility tab of Breaking Change Impact, with the same work type (Bug), in this order:
- Rule 1: Scope Bug, no conditions, Action: Hide Breaking Change Impact field
- Rule 2 (below Rule 1): Scope Bug, Condition: Release Note contains "breaking", Action: Show Breaking Change Impact field
Result: Breaking changes trigger additional impact documentation, ensuring proper communication planning. The impact field appears once the user leaves the Release Note field.
Release Note is a single-line text field here: paragraph fields can't be used in conditions. The comparison ignores case, so "Breaking" matches too.
Cascading disclosure: Customer-facing fix → Release note appears → Mention "breaking" → Impact assessment appears → Complete documentation ensured.
Common Patterns
Type-Specific Fields - Show fields relevant to specific issue types
- Example: Scope = every work type except Bug, Action: Hide "Steps to Reproduce"
- When to use: Different issue types need different data
Value-Triggered Fields - Show fields when another field has a specific value
- Example: Conditions = Priority not equals High AND Priority not equals Critical, Action: Hide "Root Cause"
- When to use: Collect additional details for high-impact items
Role-Based Disclosure - Show fields only to the users who work with them
- Example: Condition = Current user is not in group "Finance", Action: Hide "Budget Information"
- When to use: Keep other teams' fields off a user's form (see Role-Based Visibility)
Status-Based Disclosure - Show fields relevant to workflow stage
- Example: Issue View rule, Condition = Issue is not in status In Review, Action: Hide "Review Comments"
- When to use: Adapt forms to workflow stages
Hide, Then Show - For conditions with no opposite, such as "contains"
- Example: Rule 1 with no conditions, Action: Hide "Breaking Change Impact"; Rule 2 below it, Condition = Release Note contains "breaking", Action: Show "Breaking Change Impact". Both rules have the same work types: the order on the tab decides only between rules with the same Work type selection
- When to use: Labels, multi-select lists, checkboxes and text conditions that use "contains" or "contains any of"
Related Patterns
- Dynamic Required Fields - Combine progressive disclosure with conditional validation - show and require fields based on context
- Field Locking on Transitions - Lock fields during status transitions to prevent changes at critical workflow moments
- Pre-filling Values - Show fields and auto-populate them with smart values
- Role-Based Visibility - Show different fields to different users based on who's creating the issue
Next Steps
Choose your path to implementing progressive disclosure:
- Create Your First Rule - Step-by-step guide to creating your first progressive disclosure rule
- Master Conditions - Deep dive into field-based, context-based, and user-based conditions
- Explore All Actions - Learn about all 7 action types beyond show/hide
Ready to implement? Start with a simple show/hide rule and expand from there. Most teams begin with type-specific fields or value-triggered disclosure.