Skip to content
tezvyn:

How would you show system status during a multi-megabyte file upload?

Source: nngroup.comMediumHow cards are made

How would you show system status during a multi-megabyte file upload?

Tests turning Nielsen's heuristic into concrete frontend patterns for uncertain waits. Cover granular progress like percent and bytes, distinct states for upload versus processing, time estimates, and error recovery.

What's really being asked

This question tests whether you can operationalize a foundational UX heuristic into production-ready frontend architecture. Interviewers want to see that you understand visibility of system status is not merely a visual design concern but a technical requirement involving state management, network awareness, and error handling. Specifically, they are looking for your ability to reduce the gulf of evaluation for users who cannot see backend progress, preventing duplicate submissions and abandoned sessions during long-running tasks.

The full answer

A strong answer hits four things in order. First, granular real-time feedback such as a determinate progress bar showing percentage complete, megabytes uploaded versus total size, and throughput speed like two megabytes per second. Second, explicit state machine labels that distinguish between preparing, uploading, processing, and completed so the user knows exactly which phase is active. Third, time estimation including an optimistic but realistic countdown or range such as about thirty seconds remaining that updates dynamically based on actual transfer speed rather than a static guess. Fourth, resilient error handling that surfaces specific failures like network timeout or server rejection with actionable recovery paths including resume, retry, or cancel without losing already-uploaded chunks.

The mistakes people make

The biggest red flag is suggesting an indeterminate spinner or a disabled submit button with no data for a process lasting more than a few seconds. Another weak pattern is showing only a toast notification on completion while leaving the user in the dark during the upload itself. Some candidates also conflate upload progress with overall completion, forgetting that the server may need additional processing time after the bytes arrive, which leaves users staring at a finished progress bar wondering why the file is not yet usable.

What usually comes next

Interviewers often push deeper by asking how you would handle progress tracking if the backend does not natively support it, which should lead to chunked uploads with XMLHttpRequest or the Fetch API reporting per-chunk progress. They may ask how to prevent users from closing the browser tab accidentally, which should trigger a beforeunload warning and optionally background the upload using a service worker. Another common pivot is accessibility, such as how you would communicate changing progress to screen readers via ARIA live regions without overwhelming the user with constant announcements.

A concrete example

Imagine a ten megabyte video upload. On selection, the UI immediately shows a progress bar at zero percent and a state label reading preparing upload. As the file streams, the bar advances in one percent increments, the label switches to uploading, and a subtitle shows three point two of ten megabytes at one point one megabytes per second with about eight seconds left. If the connection drops at sixty percent, the state changes to waiting for network with a retry now button that resumes from the last successful chunk rather than restarting. On completion, the label shifts to processing video and then to done, at which point the progress bar is replaced by a thumbnail preview and a success message.

Interview question

During a 10 MB video upload that requires server processing after transfer, which frontend approach most effectively prevents abandoned sessions and duplicate submissions?

  • a.A determinate progress bar with percentage and bytes transferred, explicit phase labels for uploading and processing, dynamic time estimates, and chunked error recovery offering retry or resumeCorrect
  • b.An indeterminate spinner on the submit button and a success toast once the server responds
  • c.Displaying a static 'about 30 seconds remaining' message and using a browser alert if the connection drops
  • d.Disabling the submit button during transfer and showing a progress bar that completes when the last byte leaves the browser
Why?

Option A is correct because it combines granular progress, distinct phase labels, dynamic time estimates, and resilient error handling to close the gulf of evaluation. Option D is tempting because it shows a progress bar and prevents duplicate clicks, but it wrongly conflates the network transfer with overall completion and hides server-side processing from the user.

Just read this? Test yourself on what you have been reading.

Read the original → nngroup.com

You just looked this up. Could you explain it out loud?

That is the part interviews actually test. Tezvyn takes questions like this one and gives you what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.

The iPhone app is on the way

We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.

Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.

Get it on Google PlayiPhone app coming soon

We are hiring for this. Open roles that interview on frontend — each one lists the topics its interview covers.

See open roles