Are you in the loop? Keep up with the latest by making sure you're subscribed to Community Announcements. Just click Watch and select Articles.

Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Earn badges and make progress

You're on your way to the next level! Join the Kudos program to earn points and save your progress.

Deleted user Avatar
Deleted user

Level 1: Seed

25 / 150 points

Next: Root


1 badge earned


Participate in fun challenges

Challenges come and go, but your rewards stay with you. Do more to earn more!


Gift kudos to your peers

What goes around comes around! Share the love by gifting kudos to your peers.


Rise up in the ranks

Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!


Faster Table of Contents for Confluence Cloud!

A few months ago, the Confluence Cloud Performance team announced how Server Side Rendering was the big first step. Since then, we’ve been working on multiple projects that expand SSR, and today we’re announcing our first big improvement has rolled to all customers: Table of Contents macro.

What was the old version?

Table of Contents (TOC) was slow and the macro would “eventually” be painted on the page. It was using older code that depended on multiple network calls and asynchronous rendering. The way it was built, it actually couldn’t start rendering until all the headings on the page were rendered.

What is the new version?

The new version of Table of contents is fast! We built the macro using information directly from the ADF (Atlassian Document Format). This allows for synchronous (ie. no waiting) rendering of the page. In other words, this is a huge UX improvement as the Table of Contents will now appear on the page immediately along with other SSR delivered content!

The benefits can be seen in this example video, with old on the left and new on the right.



Increase in macro speed



Issues with the old version

From a user perspective, the old version of TOC had two main issues: it was too slow and it made page content on the page shift (measured with Cumulative Layout Shift).

From an engineering perspective, the implementation of the old TOC had a few flaws. Our previous implementation relied on jQuery to traverse through the DOM (Document Object Model) for potential matches. Then, again using jQuery, the rendered results were injected into the DOM. In testing, we found that it was impossible to consistently inject the same results - in certain situations, the TOC would render unpredictably on each page load.


After numerous architectural discussions with team leads, it became clear that using ADF to build the server side rendered Table of contents was the only way to eliminate flakiness and CLS.

This is a fundamental change in the way Table of Contents is rendered, all the way from the source data to rendering method. But for almost all cases, it will look and behave exactly the same. There are a few very corner cases of TOC which might now appear different from before, but from our testing they are very rare, and some are now “Working Properly” instead of the old one which could have been considered buggy. In any case, if the behavior is different and a problem, please contact us!

What’s next?

We’re actively working to improve the performance of many additional macros in the next quarter. We started with TOC as it was the most common, and will continue to work on improving other popular macros. We’re always looking for user feedback, the more specific the better. Let us know what you think of this change!



Log in or Sign up to comment
Dave Liao
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
Jul 01, 2021

@Karl Wong - Appreciate the update! And who doesn't like performance updates? Especially with Confluence. 💜

Definitely a good idea to focus on the most-used macros - I assume your team is also looking at the poorest-performing macros as a priority, too?

Karl Wong
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
Jul 01, 2021

@Dave Liao Yes! We're starting to SSR many more macros - including the poorest-performing ones. Are there some in particular you are referring to?

Like Dave Liao likes this
Dave Liao
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
Jul 02, 2021

@Karl Wong - nope, just sanity-checking your team's approach 😅

Like Dennis Lu likes this
AUG Leaders

Atlassian Community Events