RFC: UI Modification for Forge Custom Fields
RFCs are a way for Atlassian to share what we’re working on with our valued developer community. It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.
Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
Project Summary
We are proposing to enable UI Modifications (UIM) for Forge Custom Fields (FCF) (jira:customField and jira:customFieldType modules) in Jira Cloud. This will allow apps to programmatically modify the appearance and behavior of Forge Custom Fields in Issue View, Global Issue Create, and Issue Transition screens. Our goal is to unlock new extensibility scenarios for partners, enabling richer, more dynamic field experiences for end users.
-
Publish: 16 January, 2026
-
Discuss: 30 January, 2026
-
Resolve: 20 February, 2026
Problem
Forge Custom Fields are a powerful way for apps to introduce new field types and custom data into Jira issues. However, until now, partners have had limited ability to programmatically modify the UI of these fields after creation. This restricts use cases such as:
-
Dynamically hiding/showing fields based on context
-
Changing field names/descriptions on the fly
-
Setting field values programmatically in response to other changes
-
Making fields read-only or required based on business logic
Without UI Modifications, partners must rely on static field definitions, limiting the flexibility and interactivity of their solutions.
Proposed Solution
We propose to support UI Modifications for Forge Custom Fields, allowing apps to:
-
Set or get the field’s name, description, visibility, value, and read-only/required state at runtime
-
Listen for changes to field values and react accordingly
-
Apply these modifications in Issue View, Global Issue Create, and Issue Transition screens
Planned API Changes
To enable UI Modifications for Forge Custom Fields, we plan to introduce new APIs and update existing ones. The following changes are proposed:
1. New/Updated APIs for Field Data Access
-
A new API (e.g., customFieldApi.getFieldData()) will be introduced for Forge Custom Fields to read and react to field values that are set by UI Modifications.
-
This will replace the current pattern of using view.getContext() for field value access, as the latter is not reactive to UI Modifications. Please note that the view.getContext() method remains available with no changes. We are planning to add a new API for apps onboarding their Forge Custom Fields to UI Modifications.
2. Manifest Changes
- App developers will need to add a new flag (e.g., isUIModificationsEnabled: true) to their Forge Custom Field or Custom Field Type module in manifest.yml to opt-in to UI Modifications support.
3. UI Modifications API
- We plan to extend the existing uiModificationsApi to support Forge Custom Fields, enabling methods such as setName, setDescription, setVisible, setValue, setReadOnly, and setRequired for supported field types.
- Existing UI Modification APIs can be found here - https://developer.atlassian.com/platform/forge/apis-reference/jira-api-bridge/uiModifications/.
Example: Proposed App Code Changes
Before (current pattern):
import React, { useEffect, useState } from 'react';
import { view } from '@forge/bridge';
export function MyCustomFieldComponent() {
const [fieldValue, setFieldValue] = useState();
useEffect(() => {
view.getContext().then((context) => {
setFieldValue(context.extension.fieldValue);
});
}, []);
return (
<div>
<p>Current field value: {String(fieldValue)}</p>
</div>
);
}
After (proposed pattern):
import React, { useEffect, useState } from 'react';
import { customFieldApi } from '@forge/jira-bridge';
export function MyCustomFieldComponent() {
const [fieldValue, setFieldValue] = useState();
useEffect(() => {
// Subscribe to field data updates (initial value + subsequent changes)
customFieldApi.getFieldData(({ fieldValue }) => {
setFieldValue(fieldValue);
});
}, []);
return (
<div>
<p>Current field value: {String(fieldValue)}</p>
</div>
);
}
Note - The view.getContext() method remains available with no changes. We are planning to add a new method for apps onboarding their Forge Custom Fields to UI Modifications.
Manifest change:
modules:
jira:customField:
- key: my-custom-field
name: My Field Name
type: string
isUIModificationsEnabled: true
# ...other config
User Experience
-
End users will see Forge Custom Fields update dynamically in response to app logic, without page reloads.
-
Apps can tailor field behavior and appearance of Forge Custom Fields to the context of the issue, project, or user.
Developer Experience
-
Simple API for reading and writing field data, and for listening to changes.
-
No need for workarounds or static field definitions—field UI can be fully dynamic.
-
Clear migration path: update your manifest and field view code to adopt the new APIs.
Open Questions & Asks
While we would appreciate any reactions you have to this RFC, we’re especially interested in learning more about:
-
Which Forge Custom Field types would you most like to see supported for UI Modifications?
-
Are there additional UI modification APIs or capabilities you would like to see?
-
Do you have concerns about the proposed API or developer experience?
-
Are there scenarios where you would want to restrict or audit UI modifications?
-
Would you be interested in 1:1 conversations to discuss your use cases in more detail?
How to Give Feedback
-
Comment directly on this RFC thread.
-
Share your use cases, concerns, and suggestions to help shape the future of Forge Custom Field extensibility.
Disclaimer: RFCs are a way for Atlassian to share what we’re working on with our valued developer community. It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.