I have an application that has many reports. Those reports includes thousands of rows with dozens of columns (too much data). My customers sometimes need to export this data to a .csv file, just to play with it in excel or maybe import it to a Power BI.

As expected, this process takes too long, sometimes they have a time out error.

Which is a good way to afford this UX problem?

My idea is to send an email (asynchronously) with the generated file(s) and even send a notification through the app.

I'm open to any suggestion.


6 Answers 6


@pvergne i like your suggestion. For users who still want and see real time progress, a progress indicator could work.

check out how we transfer does it.

enter image description here

  • I cannot know how much this would take because the SQL query can take minutes...
    – pvergne
    Apr 20, 2020 at 16:06

There are a ton of negative issues that go with downloading big files and there's no reason for you to take them on.

Upload the file to an outside service that's handles file downloads and simply provide your users with a link.

Show users the size of the file and a simple explanation. Most users have a basic understanding of file size and data usage. You can let users choose where the file goes and have it go to multiple places.

  • In my idea, that link will be sent in the email, so the user can download the report. It may have an expiration time, and some authentication needed.
    – pvergne
    Apr 20, 2020 at 16:08
  • Yeah, but the link is going to your site, you're hosting and handling the file download. Why build a file downloading system? Think of all the effort needed to create it and all the future effort to maintain it and do user support. What's the payoff?
    – moot
    Apr 21, 2020 at 18:42

You have to find ways to enhance the user's experience in the situation. Long waiting time for download surely ain't one of them. The user should be free to choose what they want to do. A better experience would be having some 'friend' who could warn them of the consequences of such large downloads.

I would suggest that on-click of the download button, show the user a modal with some message similar to

The current download size is _____ GB with an estimated time of _____ hours to download.

To continue with the download, click download.

To modifying your download content, please go back and select only the files which you need (using the filters or some other way).

This way:

  1. You warn the user of long waiting time due to download, which can save the user a lot of time if opted for.
  2. It gives the user the freedom to choose their way ahead
  3. You don't deny the user action; rather you show an empathetic view to help them.

Hope this answer helps !

  • In order to know how much time this would take and even the size, I need to calculate it, and this may take too long.
    – pvergne
    Apr 20, 2020 at 16:07
  • You don't have to be exact in terms of hours. It could be approximation that would be sufficient for the user to understand that it's going to take long. e.g. "an estimated time of 2+ hours (or >2hours) to download" would communicate more about the longer ETA of the task than "an estimated time of 2 hours 30 minutes to download". Hope it makes sense !
    – Ay_An
    Apr 20, 2020 at 17:06

Your email/notification idea is probably close to the right idea. I'd imagine we're not just talking about the time downloading the file but also server-side time spent actually importing the data (that seems most likely for timeout errors). Offering scheduled reports vs. reporting on demand can set user expectations as well removing your timeout issues.

What about doing some user research on what they actually need in the report? I'm sure you'd find out they don't need everything, then you could create a custom query of the data, schedule a daily/weekly report and the user will never even have to ask. Simply getting the report you need, in your email when you start your day every morning is a much better UX.


For regular-sized downloads, give the user a choice:

  • Wait for the download in real-time (with a progress bar and cancel button)
  • Your idea - send an email with a link when the download is ready.

For extremely large downloads, enforce the email link/notification.


If it's too huge, sending an email with the results may be the best way so users won't have to wait, instead of doing other tasks.

May be a good idea as well to not freezing the screen during the export.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.