Understand how you can easily add native dependencies with development builds. Learn more about Expo Custom Development Builds (and try them out!): bit.ly/evening... Follow me on Twitter: / eveningkid #reactnative #expo #customclients
Btw Arnaud.. I have a series idea for you, or a topic for your channel should always cover and what I think all RN developers eventually run into. We already have “can it be done in rn?” For animations… but we don’t have “the most performing way to Implement..(insert feature here)” I know it can be harder than animation but I believe that RN and expo are reaching very mature stages and they are going to be even more popular, this will cause many people to research the best way to achieve performance intense tasks in RN.. and there’s not many videos covering this topic. With the help of expo dev client the sky is the limit now. We can add any performant library and that can the key.
I didn't know that "Expo go came installed with some dependencies". Installing any custom lib sounds like a huge improvement. Btw congrats on getting sponsored by Expo 🌸
I have a few questions about what is strictly meant by "any native library supported by Expo config plugins"? How can we tell whether a native library is compatible with this? In the past when determining whether a react native library was a native library, I would look for the ios/android folders in the repo. Is there a similarly simple way to check? Are most native libraries compatible by default? If not, does it require work done by the Expo team or by the library maintainer?
To my knowledge, if a native dependency can be added using "npm install + pod install", it'll work out of the box. If not, there should be a config plugin for it to allow extra configuration via your app.json. That's why react-native-blur-hash would work right away (npm+pod) and react-native-health wouldn't without a config plugin (changes in .plist etc.). You can check both repos for reference :)
I want to develop a generic Expo module to display several React Native Apps I have already built on a web browser. They are Native Apps that Runs on the device. So, what we want to build with Expo is an app that can display this on a browser Let's assume it's in a location It's that simple. Is there a way I can go about it?
@@HaibertBuilds Only certain packages need a config plugin. react-native-nfc-manager, and react-native-ble-plx need a plugin to configure things like Info.plist and AndroidManifest.xml. Packages like react-native-fast-image, react-native-blurhash, or realm work out of the box, no plugin required.
@@Baconbrix wow. So THATS what config plug-ins are for.. makes so much sense ty! And it’s up to the open source community to create these config plug ins correct ? Meaning the library maintainers as well obviously… also since maybe you’ll actually read this and reply can you please explain how JSI is going to change the RN landscape ? Will react native need to be re written with JSI? Along with every library ?
@@HaibertBuilds the JSI infra is backwards compatible, not everything needs to be rewritten. JSI will make intensive things like audio, video, camera, editing, and streaming on par with native performance. Reanimated 2 is a good example of what’s possible with JSI. As for plugins, yes the library authors should maintain plugins inside of their package.
@@evanbacon9126 ty so much for responding and clearing that up 🙏🏻 would it be possible for RN it’s self to be rewritten with JSI? Is that even feasible?
What if the library doesnt provide a plugin?can I modify the native files (Info.plist or build.gradle) manually after running expo run:android and then create a custom dev client with those? Without creating a plugin
Great video! I’ve read up on this, but haven’t tried it yet myself. A question remains, how do you install the custom client on IOS devices when built locally (I get that EAS also solves this)? What makes Expo nice is the fact Expo Go is easily accessible on all devices through the app stores. So do local builds require something like Testflight?
You can build locally onto connected iOS devices with `expo run:ios --device`. To share with other people around the world, you can use TestFlight or AdHoc builds (both require a paid Apple account).
@@Baconbrix ah thanks for explaining, this kind of sucks for our team as our QA team uses a server to run expo builds off of various branches. They get an IP and connect with the physical test devices to the server. In this case we need to find a fast way (outside of testflight as that process on its own is horrible and time consuming) to distribute our “custom” expo builds to these devices. EAS is a solution, but one that will surely cost us.
@@roboto9008 thanks for the reply, we have actually been using a custom expo client for the past month now and its been a game changer. We are building off our own server automated by github CI. Thanks for taking the time to let me know.
HELP NEEDED.....Brother I learn a lot form you. That's why when I got this problem and unable to solve it even after trying for 4 days so I come over here. Actually I am working on a small project alarm in react-cli, using react-native-push-notificaiton. The app works fine in foreground and background state. But when I close the app then there is no notification. Please HELP me brother , I really need to complete this project. And I already search about it a lot. but none of them working.
EAS Build (released in December 2020) fixed this. Instead of building your bundle into a shell app (every package installed by default), we now use `expo prebuild` in the cloud to generate all of the native code for the project. This means we only add code that is present in the project dependencies. The result is; over 10x smaller binary sizes on base iOS projects.
@@hrithiksingh73 our entire workflow works with Android as well. Something worth noting is that EAS Build is still in beta, so we haven’t enabled the free tier yet, that will be coming in the next couple months (first month is free regardless though). You can also build the projects locally with the new expo run commands! They’re pretty straightforward on Android, and I’ve added a bunch of features to make iOS as easy as possible. I highly recommend giving it another look soon!
so you are telling me some packages does not work? Then why do I need this stupid expo? I'll go indirectly into ios or android development. There is pointless.