How to apply app.json changes in EAS

I am trying to update my app’s default splash screen with a new one, I replaced the one in “assets” folder, but the changes didn’t apply.

I tried to rename the image and change the path in app.json but didn’t work too, still shows the old image.
I did delete the build from my EAS profile and rebuild it multiple times still didn’t work.

this is my app.json

{
  "expo": {
    "name": "blue-kiwi",
    "slug": "blue-kiwi",
    "version": "1.0.1",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "userInterfaceStyle": "light",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "cover",
      "backgroundColor": "#000000"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": ["**/*"],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "adaptiveIcon": {
        "foregroundImage": "./assets/adaptive-icon.png",
        "backgroundColor": "#000000"
      },
      "package": "com.basselturky.bluekiwi"
    },
    "web": {
      "favicon": "./assets/favicon.png"
    }
  }
}

I want to be able to change app.json (e.g. change icon or splash screen images) and see changes right away, how can I do that?

  • Managed workflow: Expo SDK 46
  • eas-cli version: eas-cli/2.2.1 win32-x64 node-v16.8.0

Hi @basselturky

This can happen if you accidentally switch to the bare workflow e.g. by running npx expo run:android or npx expo prebuild which will generate the android and/or ios directories. At this point you have a bare project, most things in app.json will be ignored and if you want to change the icon/splash screen, you would need to do it in the native projects directly.

Assuming you did not intend to switch to the bare workflow, you can switch back to the managed workflow.

See the following for more details:

Hi @wodin
I did:
expo rebuild --clean
eas build --profile development
expo start --dev-client

The splash screen got updated, this is great, thank you so much.
One more thing to ask,

Is there any faster process than this? I have to rebuild the app everytime I make changes to app.json?

This can’t update automatically?

Also, I guess now I can’t test my app on android emulator, which requires ‘expo run: android’

That’s of course “prebuild” :slight_smile: Also with Expo SDK 46 and later you should rather use npx expo ... so that it executes the CLI from the version of the expo package installed in your app rather than the global expo-cli.

The eas command doesn’t need to be run as npx eas ... because that should only be installed globally.

Unfortunately no. These sorts of changes require rebuilding the app. If you don’t like that, complain to Google and Apple :wink:

But fortunately you should not have to make changes to your app icon or splash screen or other app.json changes very often. If you’re just making changes to your JavaScript files, which will be most of the work of creating/updating your app, you will not need to create a new build.

You could set up a GitHub action to build a new development client whenever you make a change to app.json, although you’d still need to manually install it on your device/emulator.

No, this is not true. If you run eas build --profile development -p android you will get a .apk that you can install on the Android Emulator. Then you can run npx expo start --dev-client

@wodin Thank you so much, I have been looking for these answers for days.
Thanks a lot

1 Like

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.