Uploaded image for project: 'Jira Software Data Center'
  1. Jira Software Data Center
  2. JSWSERVER-25445

Adding custom fields with many select options to Advanced Roadmaps plan makes the whole UI sluggish

    XMLWordPrintable

Details

    Description

      Issue Summary

      Adding custom fields with many select options to Advanced Roadmaps plan makes the whole UI sluggish

      Steps to Reproduce

      1. Create a plan
      2. Create custom fields with a total of 5000+ options
      3. Add fields to the plan

      Expected Results

      UI performance is not degraded, or at worst is only degraded in parts that directly interact with custom fields with thousands of select options (e.g. rendering a filter dropdown).

      Actual Results

      The performance of the entire UI is sluggish, including things like scrolling, managing the timeline, or saving changes to Jira.

      Workaround

      Currently, there is no known workaround for this behavior. A workaround will be added here when available

      Notes

      This issue sounds similar to JPOSERVER-2772, but is different, as it's not related to contexts and impacts UI, and not the backend.

      Root cause

      Advanced Roadmaps use Redux for storing plan data. Custom field's select options are stored there in a single, flat array. Unfortunately, this means that whenever Redux tries to figure out if the application state changed, it has to iterate over the entire array, which adds 10-100ms of delay to most operations. This small delay is enough to make the entire UI feel sluggish, as many operations (like scrolling or editing the timeline) trigger tens or even hundreds of operations per second.

      Attachments

        Issue Links

          Activity

            People

              drauf Daniel Rauf
              drauf Daniel Rauf
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: