Skeleton loader
A skeleton is a graphical placeholder, reserving physical space in the page for content in cases where a service or action may be slow to resolve. A skeleton can be considered as an alternative to the progress spinner in many situations.
- Skin
- Marko
- React

We use motion with skeleton loaders to convey that a page is not stalled and that data is still being retrieved. This movement can help reduce user uncertainty. We refer to the motion aspect of the skeleton as the “shimmer”. Please note the shimmer is primarily used on native mobile screens. This is because large, animated shapes on web pages can be visually jarring—undermining the notion of perceived speed. Skeletons should only be used for loads that take 500ms or longer.
While it is desirable for skeletons to naturally be replaced with content from left to right and top to bottom, that is not always the case for in-order streaming. Content fades in from 0-100% opacity with a ~17ms gap between assets to create a pleasant, fluid motion. In-order streaming should be used and may vary slightly between pages, but the end result should always feel natural and polished.
Across native, pages may require additional requests that extend the duration of the page load. The skeleton with the shimmer effect is used across the native experience to mask load times and reduce visual latency. Please note, the following examples are for visual reference and may not actually require skeleton loaders in product.