any synchronous storage that works with expo? - react-native

I am looking for some syncronous storage that I can use in a react-native application developed with expo.
I've seen some references but these do not yet work with expo yet.

Related

Any way to have NodeJS run locally with an Expo app?

After some investigation, I realized I'd have to detach/eject my Expo app in order to use libraries such as nodejs-mobile-react-native, a library that allows you to run (and ship) a NodeJS singleton thread with your client app.
So the problem here is that I can't use this library unless I detach - something that I've been doing my best thus far to avoid. It sees all references to this library as null and I've tried to even manually link it.
Is there perhaps another approach that someone knows of that allows you to run Node alongside React-Native, which is compatible with Expo?
I have also used Expo in the past and because of similar limitations I switched over to Native Development using Swift but, in your situations what you can do is:
expo eject
in the application directory to detach your app from expo, once you have done this then you will have a plain react native app, then you can add any nodejs packages compatible with React Native.
Done!

How to measure react native (Expo) app startup time?

I have an Expo hybrid app (Managed workflow), running on Expo SDK v37 (React Native v0.61).
I'm struggling to find the best way to measure the time it takes from the moment when the user starts the app until the splash screen disappears.
How would you approach this?
PS: I would use Firebase Performance Monitoring instead, if it was available for Expo Managed apps. But it isn't yet.
Basically I see two approaches:
For pure react-native projects you can use react-native-startup-time library.
However I'm not sure, whether you can just add this library and start to use it, since it's required linking.
But in any case you can eject your project and add this library.
If you don't want to eject expo project I can suggest you to update your project to SDK 38. It has support for RN 0.62.2 and flipper integration as well. So you can setup flipper-plugin-react-native-performance and check the performance.
I hope I helped a bit.

Should I use Expo for expo audio library or React-native-track-player?

I have my project which I initialised with 'react-native init' . I am thinking of using expo audio library because of it's robust functionalities . But , I have read Expo isn't the solution. It increases the app size. You've to eject it in the end. So can anyone suggest me which woulod be a better solution in this case?
Some of the shortcomings of Expo:
Does not play nicely with Hot reloading
Linking with third party library can be cumbersome sometimes.(Expo include the facebook sdk which is a overhead.)
Poor notification service.
I had a project first made with expo , then after few time , got to realize the limitations. I would surely say expo is only for learning react native. You should never use expo for production. Here are the few things ive observed which i would like to share :
Expo app size is huge and app becomes very laggy .
You cant use libraries where linking is required and thats a big no no.
You dont have hold over app size bundling , specially in android as you can use a few tweaks like hermes etc to make your app more faster.
And you can always use expo libraries in react native by using https://github.com/unimodules/react-native-unimodules
I would suggest you should use bare react native rather than expo.
Hope it helps . feel free for doubts

In Expo v35 managed workflow, how to handle `Warning: Async Storage has been extracted from react-native core`?

I use expo SDK v35, and works on the managed workflow (one without eject).
In my project, I face warning whenever I use AsyncStorage as demonstrated by their doc.
This, however, results in following warning being emitted:
Warning: Async Storage has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '#react-native-community/async-storage' instead of 'react-native'. See https://github.com/react-native-community/react-native-async-storage
I tried to follow the instruction given by this warning, and tried to use #react-native-community/async-storage, but it did not succeed; it appears the library requires some linking, which is not available if you want to work inside the Expo's managed workflow.
Question
What is the proper way to handle AsyncStorage warning when working on expo's managed workflow?
Env
Expo 35.0.0
Recently I began developing a simple app using react native and the expo cli. However, on the react native docs, it seems that asyncStorage is getting deprecated. The solution would normally be to use the react community version but that is not compatible with expo.
https://github.com/react-native-community/async-storage/
There is currently no scope of linking libraries while using the managed workflow of expo. I've faced similiar issues , and was bound to migrate from expo to pure react native. And expo isnt meant for production as apps are slower. Better i would suggest you to migrate to pure React native . Async storage cant be used otherwise and if deprecated , you will be in a great problem in the future for your app.

Clarification on deployment workflow when want react-native apps published on native platform's app store?

Just looking for clarification about how react-native apps are intended to be deployed to a platform's native app store (as opposed to being downloaded 2nd-hand from the Expo app) from a continuous-workflow perspective (as opposed to the mechanics of it).
Looking at the expo docs for standalone apps, it seems like the way a project would be continually (re)published would be to rebuild the app into the target platform and upload to the native platform's app store. Have not used react-native in some time, but I had initially thought that if you wanted to publish the app on a native platform's app store, you needed to eject the app and publish the platform's version of the ejected expo app to the native app store (and from then on, work on the app from the ejected version).
Could anyone with actual experience continually deploying react-native apps to native app stores enlighten me how what the standard workflow is here?
Expo provides a method for generating .ipa (iOS) or .apk (Android) without ejecting. You simply run expo build:ios (or build:android) to generate the standalone bundle which can be uploaded to the Play Store or App Store.
It is also worth noting that Expo provides internal over the air updates meaning you only need to publish your application to the App or Play store once. After the initial install, you can deploy updates through expo publish. Then, as per the documentation:
Expo will check for updates automatically when your app is
launched and will try to fetch the latest published version. If a new
bundle is available, Expo will attempt to download it before launching
the experience.