Expo Application Services
API Reference


expo-asset provides an interface to Expo's asset system. An asset is any file that lives alongside the source code of your app that the app needs at runtime. Examples include images, fonts, and sounds. Expo's asset system integrates with React Native's, so that you can refer to files with require('path/to/file'). This is how you refer to static image files in React Native for use in an Image component, for example. Check out React Native's documentation on static image resources for more information. This method of referring to static image resources works out of the box with Expo.

Platform Compatibility

Android DeviceAndroid EmulatoriOS DeviceiOS SimulatorWeb


→ expo install expo-asset

If you're installing this in a bare React Native app, you should also follow these additional installation instructions.

import { Asset } from 'expo-asset';

const [assets, error] = useAssets([...]);
Downloads and stores one or more assets locally. After the assets are loaded, with Asset.loadAsync, this hook returns a list of asset instances.
Note, the assets are not "reloaded" when you dynamically change the asset list.

  • assets (number|number[]) -- One or multiple assets to load.

  • assets (Asset[]|undefined) -- A list of all loaded assets. If they aren't loaded yet, this value is undefined.
  • error (Error|undefined) -- An error encountered when loading the assets.

function App() {
  const [assets] = useAssets([require('path/to/asset.jpg'), require('path/to/other.png')]);

  if (!assets) {
    return <AppLoading />;

  return (
      <Text>Loaded {assets.length} assets!</Text>
      <Image source={require('path/to/asset.jpg')} />
      <Image source={require('path/to/other.png')} />

The Asset class represents an asset in your app. It gives metadata about the asset (such as its name and type) and provides facilities to load the asset data.
  • name
The name of the asset file without the extension. Also without the part from @ onward in the filename (used to specify scale factor for images).
  • type
The extension of the asset filename
  • hash
The MD5 hash of the asset's data
  • uri
A URI that points to the asset's data on the remote server. When running the published version of your app, this refers to the location on Expo's asset server where Expo has stored your asset. When running the app from Expo CLI during development, this URI points to Expo CLI's server running on your computer and the asset is served directly from your computer.
  • localUri
If the asset has been downloaded (by calling downloadAsync()), the file:// URI pointing to the local file on the device that contains the asset data.
  • width
If the asset is an image, the width of the image data divided by the scale factor. The scale factor is the number after @ in the filename, or 1 if not present.
  • height
If the asset is an image, the height of the image data divided by the scale factor. The scale factor is the number after @ in the filename, or 1 if not present.
  • downloadAsync()
Downloads the asset data to a local file in the device's cache directory. Once the returned promise is fulfilled without error, the localUri field of this asset points to a local file containing the asset data. The asset is only downloaded if an up-to-date local file for the asset isn't already present due to an earlier download. The downloaded Asset will be returned when the promise is resolved.

A helper that wraps Asset.fromModule(module).downloadAsync for convenience.

  • modules (Array<number> | number | Array<string> | string) -- An array of require('path/to/file') or external network URLs. Can also be just one module or URL without an Array.

Returns a Promise that resolves with an array of Assets when the asset(s) has been saved to disk.

const [{ localUri }] = await Asset.loadAsync(require('./assets/snack-icon.png'));

Returns the Asset instance representing an asset given its module or URL

  • module (number|string) -- The value of require('path/to/file') for the asset or external network URL

The Asset instance for the asset

const imageURI = Asset.fromModule(require('./assets/snack-icon.png')).uri;
On running this piece of code, imageURI gives the remote URI that the contents of assets/snack-icon.png can be read from. The path is resolved relative to the source file that this code is evaluated in.