<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/the-best-loading-states-are-no-loading-states-master-dev-blog-2h6kclfur" -->

---
title: The Best Loading States Are No Loading States –...
description: Jenna Smith argues that instead of designing better loading states, developers should improve preload strategies until loading states become unnecessary. She...
canonical: https://daily.dev/posts/the-best-loading-states-are-no-loading-states-master-dev-blog-2h6kclfur
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: The Best Loading States Are No Loading States – Master.dev Blog | daily.dev
og:description: Jenna Smith argues that instead of designing better loading states, developers should improve preload strategies until loading states become unnecessary. She...
og:url: https://daily.dev/posts/the-best-loading-states-are-no-loading-states-master-dev-blog-2h6kclfur
og:image: https://api.daily.dev/og/posts/2H6kcLfur.png
og:image:alt: The Best Loading States Are No Loading States – Master.dev Blog
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# The Best Loading States Are No Loading States – Master.dev Blog

**[Frontend Masters](https://daily.dev/sources/frontendmasters)** · 1 min read · 23 upvotes · 7 comments

## Summary

Jenna Smith argues that instead of designing better loading states, developers should improve preload strategies until loading states become unnecessary. She advocates for moving loading to the app level via route transitions and data preloading, rather than handling it at the component level — achieving a feel closer to traditional websites while retaining SPA benefits.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://master.dev/blog/the-best-loading-states-are-no-loading-states>

## Questions this post answers

### How can I avoid showing loading spinners in a single-page app?

Instead of designing another loading indicator, improve the preload strategy so the loading issue disappears entirely. Route transitions and preloading data get SPAs closer to loading everything at once, similar to a traditional page load, while still keeping the SPA architecture. This shifts loading concerns from the component level up to the app level.

_daily.dev surfaces frontend UX practices like preloading for developers refining SPA loading behavior._

## Community discussion

Top comments from developers on daily.dev.

**@ax\_prashant** · 1 upvotes

> ![GIF](https://static.klipy.com/ii/4493325008d34b7bf8cd6813cd5c1619/52/65/sZKdvfQ49vIZ.gif)

**@mistervaibhav** · 0 upvotes

> no shit sherlock

**@lauramoss** · 0 upvotes

> ![GIF](https://static.klipy.com/ii/a15b48460c436e1e92c85ffc680932cc/fa/6c/VXA8l8p9.gif)

**@lorinreyes** · 0 upvotes

> Haha, it is the exact reversing process what we have done so far.
>
>
> We have invented SPAs for letting the users move to the next page without being frozen only watching the blank screen and being able to do nothing.
>
>
> We cannot avoid the loading time totally, and the key of argument is where to put the loading time.
>
> And I think it totally depends on preference of developers or end-users.

**@gaburayondev** · 0 upvotes

> Agree with moving loading to the app level via route transitions — it's the difference between a page feeling like it's "waiting" vs. feeling like it's "navigating," even though technically something is still loading either way. The tricky part is data preloading requires knowing what the next route needs before the user commits to it, which usually means either hover-triggered prefetch or accepting some wasted requests. Curious how far this scales past simple route-to-route nav once you've got deeply nested, conditionally-fetched data.

## Similar posts on daily.dev

- [What is a Single-Page Application \(SPA\)](https://daily.dev/posts/what-is-a-single-page-application-spa--ntjkrmuyz) · Larablog · 1 upvotes · 0 comments
- [What Your Loading Screen Actually Reveals About Your Entire Product](https://daily.dev/posts/what-your-loading-screen-actually-reveals-about-your-entire-product-cq1f9dkrg) · Medium · 6 upvotes · 2 comments
- [Reduce the JS Workload with No- or Lo-JS options – Master.dev Blog](https://daily.dev/posts/reduce-the-js-workload-with-no--or-lo-js-options-master-dev-blog-nnidtwjps) · Frontend Masters · 6 upvotes · 0 comments
- [Web Performance 2025: The Shift from Optimization to Prediction](https://daily.dev/posts/web-performance-2025-the-shift-from-optimization-to-prediction-emdlyovyv) · Web Performance Calendar · 0 upvotes · 0 comments

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#react](https://daily.dev/tags/react), [#ux](https://daily.dev/tags/ux)

[View this post on daily.dev](https://daily.dev/posts/the-best-loading-states-are-no-loading-states-master-dev-blog-2h6kclfur)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"The Best Loading States Are No Loading States – Master.dev Blog","url":"https://daily.dev/posts/the-best-loading-states-are-no-loading-states-master-dev-blog-2h6kclfur","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/the-best-loading-states-are-no-loading-states-master-dev-blog-2h6kclfur"},"datePublished":"2026-07-28T22:51:23.970Z","dateModified":"2026-09-13T18:29:21.989Z","description":"Jenna Smith argues that instead of designing better loading states, developers should improve preload strategies until loading states become unnecessary. She...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/82a9b14a12a1e33eb279cdd3cfaa52cd?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/82a9b14a12a1e33eb279cdd3cfaa52cd?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Frontend Masters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Frontend Masters","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/d34dd87208f24090bfb0917307fcf89f","url":"https://daily.dev/sources/frontendmasters"},"commentCount":7,"discussionUrl":"https://daily.dev/posts/the-best-loading-states-are-no-loading-states-master-dev-blog-2h6kclfur","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":23},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":7}],"keywords":"webdev,react,ux","timeRequired":"PT1M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Frontend Masters","item":"https://daily.dev/sources/frontendmasters"},{"@type":"ListItem","position":3,"name":"The Best Loading States Are No Loading States – Master.dev Blog"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/the-best-loading-states-are-no-loading-states-master-dev-blog-2h6kclfur","comment":[{"@type":"Comment","text":"","datePublished":"2026-07-29T06:27:25.035Z","url":"https://daily.dev/posts/2H6kcLfur#c-FjHmV6Pod","author":{"@type":"Person","name":"Prashant Rijal","url":"https://daily.dev/ax_prashant","image":"https://media.daily.dev/image/upload/s--X33L4424--/f_auto/v1739440974/avatars/avatar_S5xYEu8jXmb2cDEBSs7Mn"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}},{"@type":"Comment","text":"no shit sherlock","datePublished":"2026-07-29T12:54:19.372Z","url":"https://daily.dev/posts/2H6kcLfur#c-hCXErBfWg","author":{"@type":"Person","name":"Vaibhav Singh","url":"https://daily.dev/mistervaibhav","image":"https://avatars.githubusercontent.com/u/41189028?v=4"}},{"@type":"Comment","text":"","datePublished":"2026-07-29T11:47:29.884Z","url":"https://daily.dev/posts/2H6kcLfur#c-THsBlsClO","author":{"@type":"Person","name":"Laura Moss","url":"https://daily.dev/lauramoss","image":"https://media.daily.dev/image/upload/s--ILA7G36z--/f_auto/v1780041334/avatars/avatar_4TSk50CCsSpOp4p8ftPwn?_a=BAMAMiWQ0"}},{"@type":"Comment","text":"Haha, it is the exact reversing process what we have done so far.\nWe have invented SPAs for letting the users move to the next page without being frozen only watching the blank screen and being able to do nothing.\nWe cannot avoid the loading time totally, and the key of argument is where to put the loading time.\nAnd I think it totally depends on preference of developers or end-users.","datePublished":"2026-07-30T04:40:29.470Z","url":"https://daily.dev/posts/2H6kcLfur#c-nMy9G4zHw","author":{"@type":"Person","name":"Lorin Reyes","url":"https://daily.dev/lorinreyes","image":"https://media.daily.dev/image/upload/s--iUqTXLqI--/f_auto/v1785636774/avatars/avatar_sjwvePDvHVHLi0ZolZR6k?_a=BAMAMicg0"}},{"@type":"Comment","text":"Agree with moving loading to the app level via route transitions — it’s the difference between a page feeling like it’s “waiting” vs. feeling like it’s “navigating,” even though technically something is still loading either way. The tricky part is data preloading requires knowing what the next route needs before the user commits to it, which usually means either hover-triggered prefetch or accepting some wasted requests. Curious how far this scales past simple route-to-route nav once you’ve got deeply nested, conditionally-fetched data.","datePublished":"2026-07-31T06:46:06.357Z","url":"https://daily.dev/posts/2H6kcLfur#c-2VuAW9CeM","author":{"@type":"Person","name":"Gabu Rayon Dev","url":"https://daily.dev/gaburayondev","image":"https://media.daily.dev/image/upload/s--5hPC52y_--/f_auto/v1773412842/avatars/avatar_8fkdziGASnSSBES6c4Ml9?_a=BAMAMiiu0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/the-best-loading-states-are-no-loading-states-master-dev-blog-2h6kclfur#faq","mainEntity":[{"@type":"Question","name":"How can I avoid showing loading spinners in a single-page app?","acceptedAnswer":{"@type":"Answer","text":"Instead of designing another loading indicator, improve the preload strategy so the loading issue disappears entirely. Route transitions and preloading data get SPAs closer to loading everything at once, similar to a traditional page load, while still keeping the SPA architecture. This shifts loading concerns from the component level up to the app level. daily.dev surfaces frontend UX practices like preloading for developers refining SPA loading behavior."}}]}
```

