Unless the load times are extreme, I recommend the first method because it gives the user feedback on the operation. Besides, the second method raises some usability questions. How does the user know when the data is loaded? If the user is interacting with the page while the load is going on, then s/he might forget about the load, or think it was unimportant anyway. Asynchronous interaction can be great, but it doesn't seem to buy much in your case. You said your load times are quick and your UI seems to be "linear". Asynchronous interaction makes more sense in scenarios where there are a series of operations that can run in parallel and whose outputs go to different areas (think of a dashboard). Then, widgets are updated as the data becomes available and and you have a natural compromise with variable load times. If you are considering modifying your UI so it's more dashboard-like, then the 2nd method makes more sense.