---
title: Placeholders
layout: docs
permalink: /docs/placeholder-fade-duration.html
prevPage: image-modification-block.html
nextPage: accessibility.html
---
## ASDisplayNodes may Implement Placeholders
Any `ASDisplayNode` subclass may implement the `-placeholderImage` method to provide a placeholder that covers content until a node's contents are finished displaying. To use placeholders, set `.placeholderEnabled = YES` and optionally set a `.placeholderFadeDuration`;
For image drawing, use the node's `.calculatedSize` property.
The `-placeholderImage` function may be called on a background thread, so it is important that this function is thread safe. Note that `-[UIImage imageNamed:]` is not thread safe when using image assets. Instead use `-[UIImage imageWithContentsOfFile:]`.
An ideal resource for creating placeholder images, including rounded rect solid colored ones or simple square corner ones is the `UIImage+ASConvenience` category methods in Texture.
See our ancient Placeholders sample app to see this concept, first invented by the Facebook Paper team, in action.
## `.neverShowPlaceholders`
Hear Scott Goodson explain placeholders, `.neverShowPlaceholders` and why UIKit doesn't have them.
## ASNetworkImageNode also have Default Images
In _addition_ to placeholders, `ASNetworkImageNode`s also have a `.defaultImage` property. While placeholders are meant to be transient, default images will persist if the image node's `.URL` property is `nil` or if the URL fails to load.
We suggest using default images for avatars, while using placeholder images for photos.