Does the 'bare' workflow require me to manually set up app icon, etc.?

I was forced into the ‘bare’ workflow because I’m using the Bluetooth plugin (or at least that’s my understanding, it’s a little murky).

I’ve been trying to build the app using eas build --platform ios --local but it quits with 2 errors (main.jsbundle does not exist and an Unable to resolve module). I am able to build the app with XCode, and I just distributed it to TestFlight and to my total astonishment it works!

The problem is: even though I long ago replaced icon.png and splash.png with new files, the app icon has never updated during development, and on my phone it just shows the ‘target’ blank icon.

There are 2 other similar bugs in the built app: the background color is white instead of the color I specified in the config, and an image file in the app doesn’t show up.

Do these problems have something to do with being built by xcode instead of expo?

yes, you need to update those manually once you move away from managed workflow unfortunately!

if the build fails it probably means you haven’t set it up to work outside of your specific project directory (eg: if you do a fresh clone to a new machine, what do you need to do? you need to set up eas build accordingly). see a work-in-progress troubleshooting guide here: expo/ at c62e8c30277a4499b8321e138a1067463efe31dd · expo/expo · GitHub

Any idea on how to fix the background color? In Expo it’s the backgroundColor property in app.json, but how do I change this in Xcode?

  1. You should google “Xcode change launch screen background”, this is iOS develop basic knowledge
  2. You can init a managed workflow as the project begins, once you need it, you can run expo run:ios or expo eject, expo will generate ios workspace file based on your app.json config
  3. Once your project turned into a bare workflow, you have to make changes by their own developer tool such as Xcode and Android Studio

Thanks so much for the reply and apologies for the noob questions. I’ve read a lot of documentation but there are still a lot of things that are unclear to me. Part of what’s confusing is that I’ve never run expo eject but my project says it’s already in the “bare” workflow.

Once I do expo eject, am I still able to develop the app the way I have been, with react native, live updating etc and expo run:ios -d?

I went ahead and ejected but now, without having changed anything, my Xcode project won’t build (I’m getting this mystery error: xcode - React Native: Undefined symbol: reanimated::REAJSIExecutorRuntimeInstaller - Stack Overflow)

Furthermore, I can’t run the app anymore using expo run:ios -d, it’s acting very different now, not finding my phone, etc…

There are several ways to do things like “eject”:

  • Run expo run:ios,and it will create ios folder, and building
  • Run expo eject, it will create both ios and android folder
    After you do this, your project is already a “Bare Workflow”

For now, you should run yarn react-native start to start your project;
Or, you can still use Expo Go by execute expo start command

The problem is that I have to use expo run:ios -d specifically because bluetooth will only work on a physical device (not on the simulator). Is there an equivalent with yarn react-native?

You said that you got errors, it seems like an error from Reanimated, maybe you should follow the installation manual.
If you wanna find out the real reason for the error, you can debug your project by opening the .xcworkspace file and run directly, which allows you to debug the project by native way

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