{"abstract":[{"text":"The best content-loading experience finishes before people become aware of it.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/com.apple.documentation\/documentation\/technologies","doc:\/\/com.apple.HIG\/design\/human-interface-guidelines","doc:\/\/com.apple.HIG\/design\/Human-Interface-Guidelines\/patterns"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/com.apple.HIG\/design\/Human-Interface-Guidelines\/loading"},"kind":"article","legalNotices":{"copyright":"Copyright &copy; 2026 Apple Inc. All rights reserved.","privacyPolicy":"https:\/\/www.apple.com\/privacy\/privacy-policy","termsOfUse":"https:\/\/www.apple.com\/legal\/internet-services\/terms\/site.html"},"metadata":{"availableLanguages":["en-US","zh-CN","ja-JP","ko-KR"],"customMetadata":{"alert-date":"2025-06-09","alert-text":"Revised guidance for storing downloads to reflect downloading large assets in the background.","supported-platforms":"ios,ipados,macos,tvos,visionos,watchos"},"images":[{"identifier":"loading.svg","type":"icon"},{"identifier":"patterns-loading-thumbnail.png","type":"card"}],"role":"article","title":"Loading"},"primaryContentSections":[{"content":[{"inlineContent":[{"identifier":"patterns-loading-intro.png","type":"image"}],"type":"paragraph"},{"inlineContent":[{"text":"If your app or game loads assets, levels, or other content, design the behavior so it doesn’t disrupt or negatively impact the user experience.","type":"text"}],"type":"paragraph"},{"anchor":"Best-practices","level":2,"text":"Best practices","type":"heading"},{"inlineContent":[{"inlineContent":[{"text":"Show something as soon as possible.","type":"text"}],"type":"strong"},{"text":" If you make people wait for loading to complete before displaying anything, they can interpret the lack of content as a problem with your app or game. Instead, consider showing placeholder text, graphics, or animations as content loads, replacing these elements as content becomes available.","type":"text"}],"type":"paragraph"},{"inlineContent":[{"inlineContent":[{"text":"Let people do other things in your app or game while they wait for content to load.","type":"text"}],"type":"strong"},{"text":" Loading content in the background helps give people access to other actions. For example, a game could load content in the background while players learn about the next level or view an in-game menu. For developer guidance, see ","type":"text"},{"identifier":"doc:\/\/com.apple.documentation\/documentation\/GameKit\/improving-the-player-experience-for-games-with-large-downloads","isActive":true,"type":"reference"},{"text":".","type":"text"}],"type":"paragraph"},{"inlineContent":[{"inlineContent":[{"text":"If loading takes an unavoidably long time, give people something interesting to view while they wait.","type":"text"}],"type":"strong"},{"text":" For example, you might provide gameplay hints, display tips, or introduce people to new features. Gauge the remaining loading time as accurately as possible to help you avoid giving people too little time to enjoy your placeholder content or having so much time that you need to repeat it.","type":"text"}],"type":"paragraph"},{"inlineContent":[{"inlineContent":[{"text":"Improve installation and launch time by downloading large assets in the background.","type":"text"}],"type":"strong"},{"text":" Consider using the ","type":"text"},{"identifier":"doc:\/\/com.apple.documentation\/documentation\/BackgroundAssets","isActive":true,"type":"reference"},{"text":" framework to schedule asset downloads — like game level packs, 3D character models, and textures — to occur immediately after installation, during updates, or at other nondisruptive times.","type":"text"}],"type":"paragraph"},{"anchor":"Showing-progress","level":2,"text":"Showing progress","type":"heading"},{"inlineContent":[{"inlineContent":[{"text":"Clearly communicate that content is loading and how long it might take to complete.","type":"text"}],"type":"strong"},{"text":" Ideally, content displays instantly, but for situations where loading takes more than a moment or two, you can use system-provided components — called ","type":"text"},{"inlineContent":[{"text":"progress indicators","type":"text"}],"type":"emphasis"},{"text":" — to show that loading is ongoing. In general, you use a ","type":"text"},{"inlineContent":[{"text":"determinate","type":"text"}],"type":"emphasis"},{"text":" progress indicator when you know how long loading will take, and you use an ","type":"text"},{"inlineContent":[{"text":"indeterminate","type":"text"}],"type":"emphasis"},{"text":" progress indicator when you don’t. For guidance, see ","type":"text"},{"identifier":"doc:\/\/com.apple.HIG\/design\/Human-Interface-Guidelines\/progress-indicators","isActive":true,"type":"reference"},{"text":".","type":"text"}],"type":"paragraph"},{"inlineContent":[{"inlineContent":[{"text":"For games, consider creating a custom loading view.","type":"text"}],"type":"strong"},{"text":" Standard progress indicators work well in most apps, but can sometimes feel out of place in a game. Consider designing a more engaging experience by using custom animations and elements that match the style of your game.","type":"text"}],"type":"paragraph"},{"anchor":"Platform-considerations","level":2,"text":"Platform considerations","type":"heading"},{"inlineContent":[{"inlineContent":[{"text":"No additional considerations for iOS, iPadOS, macOS, tvOS, or visionOS.","type":"text"}],"type":"emphasis"}],"type":"paragraph"},{"anchor":"watchOS","level":3,"text":"watchOS","type":"heading"},{"inlineContent":[{"inlineContent":[{"text":"As much as possible, avoid showing a loading indicator in your watchOS experience.","type":"text"}],"type":"strong"},{"text":" People expect quick interactions with their Apple Watch, so aim to display content immediately. In situations where content needs a second or two to load, it’s better to display a loading indicator than a blank screen.","type":"text"}],"type":"paragraph"},{"anchor":"Resources","level":2,"text":"Resources","type":"heading"},{"anchor":"Related","level":4,"text":"Related","type":"heading"},{"inlineContent":[{"identifier":"doc:\/\/com.apple.HIG\/design\/Human-Interface-Guidelines\/launching","isActive":true,"type":"reference"}],"type":"paragraph"},{"inlineContent":[{"identifier":"doc:\/\/com.apple.HIG\/design\/Human-Interface-Guidelines\/progress-indicators","isActive":true,"type":"reference"}],"type":"paragraph"},{"anchor":"Developer-documentation","level":4,"text":"Developer documentation","type":"heading"},{"inlineContent":[{"identifier":"doc:\/\/com.apple.documentation\/documentation\/BackgroundAssets","isActive":true,"type":"reference"}],"type":"paragraph"},{"anchor":"Videos","level":4,"text":"Videos","type":"heading"},{"items":["doc:\/\/com.apple.documentation\/videos\/play\/wwdc2025\/325"],"style":"compactGrid","type":"links"},{"anchor":"Change-log","level":2,"text":"Change log","type":"heading"},{"header":"row","rows":[[[{"inlineContent":[{"text":"Date","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"text":"Changes","type":"text"}],"type":"paragraph"}]],[[{"inlineContent":[{"text":"June 9, 2025","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"text":"Revised guidance for storing downloads to reflect downloading large assets in the background.","type":"text"}],"type":"paragraph"}]],[[{"inlineContent":[{"text":"June 10, 2024","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"text":"Added guidelines for showing progress and storing downloads, and enhanced guidance for games.","type":"text"}],"type":"paragraph"}]]],"type":"table"}],"kind":"content"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"topicSectionsStyle":"compactGrid","references":{"A51258F3-769A-4301-BE75-0DDE23322569":{"alt":null,"identifier":"A51258F3-769A-4301-BE75-0DDE23322569","type":"image","variants":[{"traits":["1x"],"url":"https:\/\/devimages-cdn.apple.com\/wwdc-services\/images\/3055294D-836B-4513-B7B0-0BC5666246B0\/A51258F3-769A-4301-BE75-0DDE23322569\/9860_wide_250x141_1x.jpg"},{"traits":["2x"],"url":"https:\/\/devimages-cdn.apple.com\/wwdc-services\/images\/3055294D-836B-4513-B7B0-0BC5666246B0\/A51258F3-769A-4301-BE75-0DDE23322569\/9860_wide_250x141_2x.jpg"},{"traits":["3x"],"url":"https:\/\/devimages-cdn.apple.com\/wwdc-services\/images\/3055294D-836B-4513-B7B0-0BC5666246B0\/A51258F3-769A-4301-BE75-0DDE23322569\/9860_wide_250x141_3x.jpg"}]},"components-progress-indicators-thumbnail.png":{"alt":"A stylized representation of a spinning indeterminate activity indicator above a progress bar. The image is tinted red to subtly reflect the red in the original six-color Apple logo.","identifier":"components-progress-indicators-thumbnail.png","type":"image","variants":[{"traits":["2x","light"],"url":"\/images\/com.apple.HIG\/components-progress-indicators-thumbnail@2x.png"},{"traits":["2x","dark"],"url":"\/images\/com.apple.HIG\/components-progress-indicators-thumbnail~dark@2x.png"}]},"doc://com.apple.HIG/design/Human-Interface-Guidelines/launching":{"abstract":[{"text":"A streamlined launch experience helps people start using your app or game immediately.","type":"text"}],"identifier":"doc:\/\/com.apple.HIG\/design\/Human-Interface-Guidelines\/launching","images":[{"identifier":"launching.svg","type":"icon"},{"identifier":"patterns-launching-thumbnail.png","type":"card"}],"kind":"article","role":"article","title":"Launching","type":"topic","url":"\/design\/human-interface-guidelines\/launching"},"doc://com.apple.HIG/design/Human-Interface-Guidelines/patterns":{"abstract":[{"text":"Get design guidance for supporting common user actions, tasks, and experiences.","type":"text"}],"identifier":"doc:\/\/com.apple.HIG\/design\/Human-Interface-Guidelines\/patterns","images":[{"identifier":"overview.svg","type":"icon"},{"identifier":"patterns.png","type":"card"}],"kind":"article","role":"collectionGroup","title":"Patterns","type":"topic","url":"\/design\/human-interface-guidelines\/patterns"},"doc://com.apple.HIG/design/Human-Interface-Guidelines/progress-indicators":{"abstract":[{"text":"Progress indicators let people know that your app isn’t stalled while it loads content or performs lengthy operations.","type":"text"}],"identifier":"doc:\/\/com.apple.HIG\/design\/Human-Interface-Guidelines\/progress-indicators","images":[{"identifier":"components-progress-indicators-thumbnail.png","type":"card"}],"kind":"article","role":"article","title":"Progress indicators","type":"topic","url":"\/design\/human-interface-guidelines\/progress-indicators"},"doc://com.apple.HIG/design/human-interface-guidelines":{"abstract":[{"text":"The HIG contains guidance and best practices that can help you design a","type":"text"},{"text":" ","type":"text"},{"text":"great experience for any Apple platform.","type":"text"}],"identifier":"doc:\/\/com.apple.HIG\/design\/human-interface-guidelines","images":[{"identifier":"human-interface-guidelines-page-image-card.png","type":"card"}],"kind":"article","role":"collection","title":"Human Interface Guidelines","type":"topic","url":"\/design\/human-interface-guidelines"},"doc://com.apple.documentation/documentation/BackgroundAssets":{"abstract":[{"text":"Improve or eliminate the time people wait while your app downloads assets.","type":"text"}],"identifier":"doc:\/\/com.apple.documentation\/documentation\/BackgroundAssets","kind":"symbol","role":"collection","title":"Background Assets","type":"topic","url":"\/documentation\/backgroundassets"},"doc://com.apple.documentation/documentation/GameKit/improving-the-player-experience-for-games-with-large-downloads":{"abstract":[{"text":"Provide ample content in your base installation and then use on-demand resources and the Background Assets API to handle additional content.","type":"text"}],"identifier":"doc:\/\/com.apple.documentation\/documentation\/GameKit\/improving-the-player-experience-for-games-with-large-downloads","kind":"article","role":"article","title":"Improving the player experience for games with large downloads","type":"topic","url":"\/documentation\/gamekit\/improving-the-player-experience-for-games-with-large-downloads"},"doc://com.apple.documentation/documentation/technologies":{"abstract":[],"identifier":"doc:\/\/com.apple.documentation\/documentation\/technologies","kind":"technologies","role":"overview","title":"Technologies","type":"topic","url":"\/documentation\/technologies"},"doc://com.apple.documentation/videos/play/wwdc2025/325":{"abstract":[{"text":"Building on Background Assets, this session will introduce the new capability to download asset packs of content for games and other applications. Learn how Apple can host these asset packs for you or how to manage self-hosting options. We’ll delve into the native API integration and the corresponding App Store implementations, providing you with the tools to enhance your app’s content delivery and user experience.\n","type":"text"}],"identifier":"doc:\/\/com.apple.documentation\/videos\/play\/wwdc2025\/325","images":[{"identifier":"A51258F3-769A-4301-BE75-0DDE23322569","type":"card"}],"kind":"article","role":"article","title":"Discover Apple-Hosted Background Assets","type":"topic","url":"https:\/\/developer.apple.com\/videos\/play\/wwdc2025\/325"},"human-interface-guidelines-page-image-card.png":{"alt":"An illustration of several Liquid Glass components such as toggles, sliders, and buttons, atop a neutral background. The transparent components cast shadows on the background and allow their colored elements, like a blue slider track and a green toggle backing, to show through, highlighting the Liquid Glass material's lensing effect.","identifier":"human-interface-guidelines-page-image-card.png","type":"image","variants":[{"traits":["2x","light"],"url":"\/images\/com.apple.HIG\/human-interface-guidelines-page-image-card@2x.png"}]},"launching.svg":{"alt":"An icon of a square containing an arrow pointing to the upper-right corner that suggests a transition to a new state.","identifier":"launching.svg","type":"image","variants":[{"svgID":"launching","traits":["1x","light"],"url":"\/images\/com.apple.HIG\/launching.svg"}]},"loading.svg":{"alt":"An icon of a spinning indeterminate activity indicator that suggests data loading.","identifier":"loading.svg","type":"image","variants":[{"svgID":"loading","traits":["1x","light"],"url":"\/images\/com.apple.HIG\/loading.svg"}]},"overview.svg":{"alt":"An icon of a grid comprised of four squares.","identifier":"overview.svg","type":"image","variants":[{"svgID":"overview","traits":["1x","light"],"url":"\/images\/com.apple.HIG\/overview.svg"}]},"patterns-launching-thumbnail.png":{"alt":"A sketch of a square containing an arrow pointing to the upper-right corner, suggesting a transition to a new state. The image is tinted orange to subtly reflect the orange in the original six-color Apple logo.","identifier":"patterns-launching-thumbnail.png","type":"image","variants":[{"traits":["2x","light"],"url":"\/images\/com.apple.HIG\/patterns-launching-thumbnail@2x.png"},{"traits":["2x","dark"],"url":"\/images\/com.apple.HIG\/patterns-launching-thumbnail~dark@2x.png"}]},"patterns-loading-intro.png":{"alt":"A sketch of a spinning indeterminate activity indicator, suggesting data loading. The image is overlaid with rectangular and circular grid lines and is tinted orange to subtly reflect the orange in the original six-color Apple logo.","identifier":"patterns-loading-intro.png","type":"image","variants":[{"traits":["2x","light"],"url":"\/images\/com.apple.HIG\/patterns-loading-intro@2x.png"},{"traits":["2x","dark"],"url":"\/images\/com.apple.HIG\/patterns-loading-intro~dark@2x.png"}]},"patterns-loading-thumbnail.png":{"alt":"A sketch of a spinning indeterminate activity indicator, suggesting data loading. The image is tinted orange to subtly reflect the orange in the original six-color Apple logo.","identifier":"patterns-loading-thumbnail.png","type":"image","variants":[{"traits":["2x","light"],"url":"\/images\/com.apple.HIG\/patterns-loading-thumbnail@2x.png"},{"traits":["2x","dark"],"url":"\/images\/com.apple.HIG\/patterns-loading-thumbnail~dark@2x.png"}]},"patterns.png":{"alt":"","identifier":"patterns.png","type":"image","variants":[{"traits":["2x","light"],"url":"\/images\/com.apple.HIG\/patterns@2x.png"},{"traits":["2x","dark"],"url":"\/images\/com.apple.HIG\/patterns~dark@2x.png"}]}}}