Product Team Talk Time w/ Jira Cloud Ecosystem

The Jira Cloud Ecosystem team is excited to share a project that they have underway with the developer community. Join @JakubMierzewski, @ImranParvez, and @MichalMichalczuk on 2021-08-04T11:00:00Z to hear about the Jira issue adjustments - incoming Jira UI extension point.

Issue adjustments will allow developers to control how selected Jira fields behave on the UI:

  • set Field values
  • define whether Field is required / optional / read only
  • set Field visibility
  • change Field label

@JakubMierzewski and the team will share how they foresee issue adjustments extension point working.

This event will be a great time to ask questions and provide feedback based on how you might make use of the new extension point.

RSVP here:

11 Likes

Can Atlassian share some pre-reading for us on the topic?

3 Likes

Pre-reading? It sounds like we don’t have anything to share.

Bentley’s understanding of the topic for context building? Sure! If I get something wrong I expect @MichalMichalczuk and @JakubMierzewski to correct me :sweat_smile:

The new extension point is intended to allow Connect apps to alter Fields in a way similar to what P2 apps are able to do. Specifically, we want to be able to allow an app to change the user-facing display values of Fields and also change some of the way they behave. For example, image you have two teams that work on the same project: Design and Development. Your design team likes to refer to Priority as 🚥 Urgency and the Development team doesn’t actually use that field. With the new extension point, you’d be able to have the name of the Field display differently for users of the Design team and set the field visibility such that it doesn’t show for a member of the Development team at all.

As for the actual API/implementation, I’ll leave that to the talk time. I think that is something that is still fairly early in the works and feedback is very much appreciated.

Here is the Ecosystem roadmap card, for reference: Trello

2 Likes

@bentley can you please share the recording of the meeting?

3 Likes

We didn’t record it but I’m working with the team to put together a summary of the mock-ups and diagrams and info that was shared to post on here

1 Like

Issue Adjustments are intended to reproduce on cloud some functionality that is currently available on server – the ability to change the way issues appear dynamically.

As mentioned above, the new extension point is intended to allow Connect apps to alter Fields in a way similar to what P2 apps are able to do. Specifically, we want to be able to allow an app to change the user-facing display values of Fields and also change some of the way they behave.

Architecture

This would be a new module that would need to be declared in the applications descriptor/manifest. Each app would define the projects and issue types each adjustment can apply to:

At the point in time that an issue is going to be shown and it should be “adjusted”, Atlassian would reach out to the app and ask for a response with the given context and allows the app to respond with adjustments. Currently, the lifecycle hooks that are being considered are onInit and onChange. Here is a diagram of how the interaction would work:

Here is a rough look at the API: issue-adjustments.pdf (38.8 KB)

API & Code

Here is an example of it in action:

issueAdjustments.onInit(({ getFieldById }) => { // register init handler
  const summary = getFieldById(‘summary’); // get info about the field
  if(!summary.isHidden()){
    summary.setDescription(‘This field is required’).setRequired(true); // adjust the issue's description
  }
});

Getters

The following getters would be available:

getId: (void) => $PropertyType<Field, 'fieldId'>,
getName: (void) => $PropertyType<Field, ‘fieldName'>,
isHidden: (void) => $PropertyType<Field, 'isHidden'>,
isEditable: (void) => $PropertyType<Field, ‘isEditable'>,
isRequired: (void) => $PropertyType<Field, ‘isRequired'>,
getDefaultValue: (void) => $PropertyType<Field, 'defaultValue'>,
getDescription: (void) => $PropertyType<Field, 'description'>,

Setters

The following setters would be available:

setName: (value: $PropertyType<Field, 'fieldName'>) => FieldAPI, 
setHidden: (value: $PropertyType<Field, 'isHidden'>) => FieldAPI, 
setEditable: (value: $PropertyType<Field, 'isEditable'>) => FieldAPI, 
setRequired: (value: $PropertyType<Field, 'isRequired'>) => FieldAPI, 
setDefaultValue: (value: $PropertyType<Field, 'defaultValue'>) => FieldAPI,
setDescription: (value: $PropertyType<Field, 'description'>) => FieldAPI,

Timeline

The following guidelines are very rough:

Alpha release FY22 Q2, ~ Nov. 2021
Public release FY22 Q3, ~ Jan. 2022
Forge and Fields+ FY22 Q3

We plan to have an Early Access Program once we’re ready to bring on Alpha testers!

Key notes

  • In the first public version will support new create issue view (Connect-only).
  • Forge support is next and further improvements will be Forge-only. Future improvements could include: pages Issue view, transition screen, and JSM will be probably only in Forge.
  • Issue adjustments work only on UI level no support for Rest API
  • We assume that users will intentionally agree to wait for issue adjustments execution in order to get value from Issue adjustments

Constraints

  • Extension points: We will support only new Global Issue Create , which is currently rolling out.
  • Issue adjustment execution: UI by default will be updated only after whole lifecycle hook callback execute properly. This will reduce “jumping” UI, and add more predictability to execution.
  • Performance: Issue adjustment will have time constraint on execution per lifecycle hook ( onInit and onChange might have different limits)
  • Update UI will be triggered only after successful lifecycle hook execution

Performance

Since Issue Adjustments will bring extra time during mounting view - especially the initial load, we have to be super aware of performance of our solution. Also - we are on critical path when adding interactions on initialisation of Create Issue View or Issue View.

6 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.