Talkin’ bout a Revolution…

Hello, I trust you’re all ok,

There’s something stressing me about Tableau. It might not be the most obvious but I’ll have a go at describing it anyway.

See I demo Tableau Server all the time. Like daily. To some pretty senior people that I really want to impress. These demos often involve clicking around the server views to show some of the user content. Trouble is some of my user content isn’t that great. It can be badly designed and slow to load – that’s a separate issue that my team is working on.

So I click on the view and then, there it is…..


Spin, spin, spin. Will it be 2 seconds or 20? Will it even load at all? The room falls quiet as all eyes settle on the spinning circle. The audience is almost hypnotised. The tension grows, until the view pops into life (or occasionally doesn’t). It’s the moment I dread as I know everyone is staring at the circle, waiting. Seems like it makes 5 seconds feel like 50.

So here are my issues with this.

  • Positioning – The spinner is bang in the middle of the screen, you can’t avoid it. It grabs your attention and also the attention of the room. Everyone starts watching it whether they want to or not.
  • Information – The spinner doesn’t give any indication of the progress of the operation. I’m not sure how it can, given the nature of the underlying queries but it’s still a problem.
  • Inconsistency – Often the spin rate slows slightly just prior to completion. But sometimes it speeds up again. So I think it’s about to complete, then it carries on. I know it’s just an animated gif but it still seems to occur occasionally.
  • Errors – I’ve had occasions when the connection is lost with the server for whatever reason, but the circle keeps going. That’s very misleading.

I think everyone accepts that applications which perform loading operations will generally have some sort of indicator. But I think the spinning circle can be improved.


Users blamed the system


Users blamed the app

The psychology of waiting is certainly an interesting subject. This post refers to a study conducted by Facebook that seems to suggest the type of indicator used can affect how the user perceives the problem. Admittedly the post doesn’t provide an accurate source for this but I thought it interesting nonetheless.


Screen Shot 2015-01-09 at 22.57.05

There are many recommendations to making the waiting game feel less of a drag

There’s plenty of chat on how to make that waiting game feel less of a drag to users. This post from has a number of suggestions such as

  • Use backwards moving ribbings
  • Increase number of pulsations
  • Accelerate progress, avoid pauses

Also take a look at this article by Chris Harrison. The associated video shows the theory in action and there’s a detailed study of the theories available.


I wonder how much thought Tableau have given the format and positioning of the spinning circle as well as the science of perceived performance as opposed to actual performance. I think the consensus is that a progress bar is the best option but I know that won’t happen as Tableau can’t easily know the duration of a query. However, there are plenty of recommendations out there that may be worth considering. Why not make use of every trick in the book to make users feel they’re getting a faster experience?

There has been some chat on the Tableau forums about this (thanks @johncmunoz). It seems such an insignificant component but why not add as much polish to the tool as possible? Anyway, I’m no expert on this so maybe someone who knows the subject can supply more info.

Until then I’ll just think of appropriate 90’s synth-pop as the circle spins.

Regards, Paul

9 thoughts on “Talkin’ bout a Revolution…

  1. Paul, I liked the insight of this post. I have experienced this dreadful feeling several times! As a programmer, I always used progress bars for operations that took longer to complete.

    You know a post is going to be really good when the Beatles start singing in your brain before you start reading! I will use that trick in my future writing.

    • I don’t see how they can do a progress bar. How can Tableau tell the expected duration of a query? Unless they can think of a cool solution. I’m more wondering if the spinning circle has ever had any thought or development as to how it can be made more effective. I’d guess that it’s a relic from the first server release that never got looked at again. Anyone know?

      • As a programmer you can;t predict the time its going to take for a bit of code to work, but you do know how many steps/functions you intend to do for each operation. So you can do a step x out of step y calculation to create a progress bar.
        Anything is better than a spinner that you have no idea is stuck or actually doing something.

      • It could do some basic estimation using historic times to complete the query. It could even then use some language such, “This make take a few moments…” and even, “Sorry, this is taking longer than expected.” On the backend if it tracked performance metrics around the queries it could even let developers know when there’s a problem.

  2. We work around this by caching the images of the dashboards then swapping out the image with the dashboard once it renders. See the Facebook TC14 talk for a demo and go to for more details.

  3. perhaps the spinner could be replaced with something more akin to what you see in Dedktop when a view or dashboard is taking a long time to render? Maybe not as detailed as ‘Computing quick filters for sheet X’ but it could be along the lines of ‘Rendering element 6 of 14’ ?

  4. Hi Paul, excellent post on an overlooked but very important component of Tableau.

    I’d say the spiny circle is one of the most frustrating things for some of my clients. We spend quite a bit of time trying to make our vizs fast, but we are limited by cores and we have some vizs that take 30-40 seconds to load. It’s always a little nerve wracking (for us and for them) when our clients tap their fingers with impatience as our views load.

    I have some tips (you probably already do this, but maybe your readers don’t) for how I try to mitigate load time during presentations, and a comment regarding something you wrote. First, tips.

    When I’m getting ready to present something, I will either reboot Tab server before the presentation or present on my test box. This practice came from experience when I went to present to a group of folks only to find out that my server had maxed out its 32GB of RAM and I was forced to reboot in front of the group.

    By rebooting or presenting on a test box, I ensure the fastest response possible from Tableau. I may also switch from a live connection to an extract if the live connection is ‘slow’. I make sure that I pull up the vizs a few times before the presentation so I have a sense for how long they’ll take to display during the presentation (best to multiply your initial time by 2x to account for Murphy’s law). By knowing the load time of the viz before hand, I can prepare myself to fill that time with talk before the viz loads.

    You wrote “I think the consensus is that a progress bar is the best option but I know that won’t happen as Tableau can’t easily know the duration of a query” Tableau keeps track of all queries fired against the DB and how long each response takes to get back, yes? If that’s the case, then there should be history of how long each one took. So, after the first time a query is fired, theoretically, you could start modelling how long each subsequent query will take. Over time, I would think the margin of error on the prediction would tighten up, and, viola, data for a progress bar. I realize that I’m vastly oversimplifying the work involved in getting a ‘real’ progress bar, but it does seem doable. And hey, the idea for a progress bar is now up to 19 votes! So thanks for that.

    With all the performance improvements under the hood with Tab 9, maybe this all goes away ;>

  5. Hi Paul,

    Just a quick note to point to Russell Christopher’s work. He demos some interesting pieces that are related to this conversation under the title “You Did What” with Tableau:

    None of his tricks address the crux of what you’re looking for. But, they’re never-the-less quite interesting. With the Launcher: Modal vis, he has moved the spinner into a nicer location and improved the look & feel of the experience. With the two Auto-refresh vis’s, he has built a circular progress bar (though, the much disliked spinner still appears first, while the vis itself is loading).


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s