As we migrate more customers and apps onto Atlassian’s platform, we’re putting a strong focus on improving both the actual and the perceived performance of all apps. A big part of that is making pages feel stable and predictable to end users as they load.
One of the most impactful levers we’ve found is setting a default viewport size for UI elements that support it. When an element has a known size before it loads, the rest of the page doesn’t jump around as much. This directly reduces cumulative layout shift (CLS) and makes the experience feel smoother for users.
What we’re asking from you:
We’re encouraging developers to start setting viewportSize (or equivalent sizing settings) in their app for any supported UI surfaces. Over time, this will become a requirement, but we want to work with you to get there in a way that respects your apps’ constraints and complexity.
In the coming months, you’ll see:
-
Warnings and lint rules to help you catch missing viewport settings early
- e.g. “Macro
<extensionKey>does not define aviewportSize.”
- e.g. “Macro
-
Updated guidance, examples, and best practices
-
Platform-side sizing solutions to better support dynamic and complex layouts
Specifically, we’ve identified a couple of surfaces where this problem is particularly visible today:
-
macrosin Confluence, especially iframe-based macros without a defined height -
jira:issuePanelin Jira, where panels load after the issue view and can cause noticeable shifting
Where possible, please set a default viewport size for these modules.
Where we need your help!
We understand that not all macros and UI modules can use a fixed, developer preset size. Some genuinely need to adapt to dynamic content, and we want to get an understanding of these scenarios to evolve our solution.
Here’s where we’d love your stories and ideas:
-
What kinds of dynamic content do your macros display?
-
How do you (or your users) currently handle resizing, overflow, or unpredictable content?
-
Are there technical or UX blockers you’ve run into with sizing macros in Confluence?
-
After the initial load, what would the expected experience be for your macros?
-
Would a user driven macro resizing be suitable? (e.g. interactive resize handles to allow users to determine the size of the macro content while editing a page)
-
Re-enabling dynamic sizing after a user interacts with the macro (e.g. clicks a button within the macro)
-
Developer-defined overflow behaviour (hidden/scroll/click-to-expand)
-
We’re committed to working with you to find solutions that improve performance. Thank you for helping us shape the future of performance at Atlassian!
