Feature Requests

With Expo, you can write iOS and Android experiences in JavaScript using React Native.
Clear/Reset Expo When "Thing Don't Work": Troubleshooting, Transparency and Reset Functionality for Behind-the-Scenes Storage / Settings
Expo needs troubleshooting and transparency functionality to show status for and to clear the various dynamically-created files, caches, and data stores that can get corrupted during development, and may need to be reset to get things working again. I spend a lot of time trying to figure out why Expo won't run an app (ie Expo won't run code that is correct and isn't itself causing the problem). Something being stored by Expo 'behind the scenes' isn't set correctly, or needs to be cleared. I often can't figure out what, or spend a lot of time on trial-and-error trying to correct it. Since this typically happens during debugging, a lot of additional time can get spent trying to debug the app... when it's actually not the app code that's the problem. In order to get things working again, I need to figure out what dynamic element Expo changed somewhere, or cached, or changed the version of, and then either clear it or restore default settings. This can take up a lot of time as there are a lot of different things that Expo creates or modifies or caches dynamically, and if you don't know which one is the source of the problem - you basically just have to blindly try reloading/refreshing/reinstalling things until something works. I believe that many of these issues could be easily corrected. I also believe that this constellation of problems are an under-appreciated issue since the people developing Expo probably have enough understanding of what's going on behind-the-scenes that they quickly correct these problems for themselves, rather than spending hours or days doing blind-refresh/reinstall cycles. Examples: 1) MANY DIFFERENT SETTINGS FILES. Symptom: App won't build. Cause: something changed in .expo/packager-info.json or ./expo/settings.json or some other settings file (there are even more! in ~/.expo). Things just 'don't work', or a cryptic error message is produced that has nothing to do with the apps code (which ran fine previously...) It took me a long time to realize that this was going on and that I needed to keep a backup version of these files that I could overwrite the current ones with when things start working. Or... am I supposed to be deleting them? Or using expo start -c? Or something else? 2) EXPO MOBILE CLIENT APP-SPECIFIC STORAGE. Symptom: App won't load on expo mobile client. Cause: Expo clearly stores all kinds of app-related data on the expo client (both on simulator and physical device). If an app isn't working, it's not clear which of these things might be causing the problem. What do you do? Reinstall the expo app itself? There's no way I can see (is there?) to delete all of the data related to an app within Expo mobile client. In one case, I even had a user delete the Expo mobile client app from their phone and reinstall it from the app store, at which point I discovered that even that didn't solve the problem as the expo app data was automatically backed up and restored too! Only (as far as I know) going into the phone settings and clearing all of the app-related-storage solved the problem. This is clearly not an ideal approach. 3) CACHED VERSIONS OF APP CODE. Symptom: Version of code running != version of code saved in IDE. Cause: Various hot-code-refresh and cashing features make transparency hard. I can often not tell whether the code that I'm seeing running in the simulator, physical device, or browser (using react-native-web) is the same version that I'm editing. I've taken to hard-coding a version number and putting it on the screen. When I hit save... sometimes I get the new code, sometimes I get some prior version from who knows when. Similarly, when running an app from the Expo Client, never clear whether the current version will run, or some prior cached version. It would be great to have a simple 'force' flag/button to ensure that the currently running code is the code being viewed in the IDE, not a prior version. If it crashes... so be it... at least one knows what code one is running. It would also be helpful to have a dashboard kind of function that shows how old the currently-running code on any device is, so that it would be immediately obvious whether it was the current code or not. Do these already exist? 4) MOBILE DEVICE OR SIMULATOR CONNECTION / SETTINGS TO SERVER. Symptom App won't run on a physical device, or on a simulator, or in the web-browser, and produces a crypitc error message that says "Something went wrong", or a blue screen, or an error like Packager not running at... Cause: Varied. Need to know what happened? It would be super helpful to have an ability within the Expo Client to reset and test the various elements of the connectivity from the device to the server or localhost to figure out where this kind of problem is coming from. Is it because the settings files are corrupt? Because the bundler needs to be restarted? Because the expo-cli needs to be run with -c option? Is it because the connection itself is corrupt? Is it some kind of firewall that's making it impossible to connect? Is it because there is something wrong with the app's code? What's going on? Some basic diagnostics and reset functionality would save a huge amount of trial-and-error time here. 5) OTHER. Pretty sure that there are other places that Expo stores things dynamically. What are they? I think it would be really helpful to have someone inventory all this stuff, document it, and create simple clear/reset functions for it. Altogether, these kinds of issues that up a large percentage of development effort/time. To be clear, often more time than spent actually creating/debugging code. In my view this constellation of issues represent the single biggest weakness in Expo overall . As a developer, it can make it extremely slow and frustrating to make progress. I presume that this hasn't been solved already because the people working on Expo itself don't spend much time on these problems, because they already know the origins of them, and so can quickly reset things for themselves. For someone who doesn't have this information, this can be a huge time loss and source of frustration. It would be really helpful (and I presume easy to do) to have simple mechanisms for clearing/resetting to default each and every thing that Expo auto-generates dynamically, along with documentation for what/where they are and how to clear them. It would also be super helpful, and I presume quick, for somebody to put together some 'Troubleshooting' documentation that addresses these challenges. Thank you. And thanks once again for all of your effort that goes into Expo. I think this is an opportunity to greatly magnify it's benefit, and make it much more enjoyable to use, with relatively little effort required.
7
Load More