Assets not available in test flight.

SDK Version: 41.0.0
Platforms: IOS
Expo Managed Workflow, EAS Build / EAS Submit

Hello there ! Our team is trying to publish the first mobile app for the company and we decided an expo managed workflow was the quickest way to execute this task. We have already been approved by the app store and the app works great on local/production environment from expo, as well as the published CDN version.

While the app works on test flight (and therefore in the store) images stored locally in the /assets folder in the root directory, don’t seem to be available for any user.

Our app.config has the following code for assets:

assetBundlePatterns: ["assets/*"],

image

which I would assume covers all the images within the assets folder.

This is about the last pending change for a very delayed release so I would very much appreciate the help.

CJ

hi there!

  • What version of expo-asset do you have installed? Check your yarn.lock or package-lock.json, or run yarn why expo-asset
  • Can you share your metro.config.js, if you have one?
  • Do you have some custom Babel config? Can you share that?
  • What is your “main” in package.json? If it is not the default ("node_modules/expo/AppEntry.js”) then what is it and what are the contents of the file that it points to?
  • Are you using a monorepo?

Hi,

We are using a single repo for the whole app and we’re not using expo-asset. Is this required for local assets?

Here’s our metro.config.js

image

Here’s our babel.config.js

module.exports = function (api) {
  api.cache(true);
  return {
    presets: ["babel-preset-expo"],
  };
};

( "node_modules/expo/AppEntry.js” ) This is exactly our main.

the problem is that your metro.config.js does not extend the @expo/metro-config. please refer to Customizing Metro - Expo Documentation

Hi Brent,

Could you elaborate a little bit more?

On the docs it says that jpg and pngs are included by default, which covers most of our images.

Would we still have to do something like this?

image

const { getDefaultConfig } = require('expo/metro-config');

const config = getDefaultConfig(__dirname);

config.resolver.sourceExts = ["jsx", "js", "ts", "tsx"];

export default defaultConfig;

this extends the expo metro config.

also, you can just delete your metro.config.js alternatively. all of those source extensions, including jsx, are supported out of the box.

Ok Brent!

We’ll try removing the metro config.

Thanks!