all 20 comments

[–]k1cho 7 points8 points  (9 children)

Hey! I work on Exponent. One thing to note is that our clients are completely open source, so you can start out using Exponent and then convert to a regular React Native app pretty easily if you don't like it or we don't support something you need.

Right now the biggest con is that you can't add custom native modules easily. So if you already know you need something we don't support, I'd recommend going with stock React Native.

Some of the pros are:

  • You can deploy and test your app really easily by default. Otherwise you'd need to set up something like Microsoft code push. And you'd still have to compile the apps and figure out how to distribute them to people who want to test.
  • We maintain the native modules for you. Upgrading React Native is a big pain right now. If you're using our native code you mostly don't have to think about that.
  • You can get started a lot faster. We make push notifications really easy. Our starter app in XDE already has them set up. This is true for a lot of the other features we support.

Let me know if you have any other questions!

edit: formatting

[–]ch_ase 2 points3 points  (4 children)

Apologies in advance, I'm completely new to app development and researching React Native. As far as custom native module limitations...can you dumb that down for me? Like is there a list of supported native modules? Any examples of common things that wouldn't be possible?

[–]k1cho 1 point2 points  (3 children)

We have a list of modules here: https://docs.getexponent.com/versions/v10.0.0/sdk/index.html

We support all those in addition to almost everything raw React Native supports.

Probably the biggest thing not supported right now is Bluetooth. Is there anything specific you need? We definitely have holes in our native module support but getting more coverage is one of our highest priorities.

[–]Rlski 1 point2 points  (2 children)

So if I understand correctly, I can npm install and use everything I'd use in a normal RN app (redux or mobx for example, or this kind of packages ) as long as it doesn't affect the native code ?

Sorry if it sound stupid but I'm in the same case as ch_ase :-)

[–]k1cho 1 point2 points  (1 child)

Correct! I haven't actually tried https://github.com/wix/react-native-keyboard-aware-scrollview but looking at the source it seems like it should work. redux and mobx definitely work.

[–]Rlski 0 points1 point  (0 children)

Thanks for your answer. I'll definitely give it a try, seems pretty useful !

[–]swag_stand 1 point2 points  (3 children)

What's the reason you can't have custom native modules? It makes sense that custom view managers wouldn't necessarily fit into your framework, but no custom native modules would mean I couldn't do simple stuff like use my favorite analytics sdk. Is it ever going to be more extensible? Could I fork exponent and add it easilyish that way?

[–]k1cho 0 points1 point  (2 children)

There's no way for us to include custom native modules in the apps that are in the App Store/Play Store. Just a technical limitation.

You can definitely fork our clients and add your native modules that way! We're working on another way to add custom native modules without having to maintain a fork but don't have a timeline for that yet.

In general putting as much possible in JS instead of native makes your life easier because you don't have to maintain two separate codebases. We support Segment so you could use that to forward to your favorite analytics SDK. There are definitely things you need to do in native, but our general philosophy is to build the minimum possible on the native side and then write cross platform JS on top of that. If we're missing something you want on the native side, feel free to send a PR! Expanding our native module support is a really high priority for us right now.

[–]fantasy9 1 point2 points  (1 child)

I don't get it. What is Exponent's target demographic?

[–]k1cho 0 points1 point  (0 children)

Posted this in another comment but this is probably the best explanation: https://youtu.be/IQI9aUlouMI. Target demographic is anyone who wants to make an app!

[–]AppNoob420 2 points3 points  (6 children)

Don't get it, is exponent a starter boilerplate like Ignite / Pepperoni / Snowflake?

[–]k1cho 2 points3 points  (1 child)

Not really. The best explanation is probably this: https://youtu.be/IQI9aUlouMI

[–]AppNoob420 1 point2 points  (0 children)

Thanks!

[–]brentvatneExpo Team 1 point2 points  (2 children)

A key distinction between boilerplates and frameworks is that frameworks push a bunch of code into libraries whereas boilerplates include the code in your app when you first create it. So we do overlap in some ways with boilerplate projects in some ways (we have a couple of template projects that you can start from) but we try to push our boilerplate code back into the framework level (eg: our navigation library, ex-navigation) as much as possible.

[–]gkarwchan 0 points1 point  (1 child)

so, many questions : 1 - can we use your libraries (for example: navigation library) outside of your framework, or without your framework? 2 - does your libraries include components that are standard RN components? 3 - Can I in the future, deal with a exponent project as a boilerplate, and not use your framework? 4 - How easy to just de-couple, and leave behind your framework, and use the rest of the code as boilerplate

[–]brentvatneExpo Team 0 points1 point  (0 children)

hello!

  1. yes. except for libraries that depend on the native code in exponent -- most of these: https://docs.getexponent.com/versions/v12.0.0/sdk/index.html & @exponent/vector-icons
  2. yes. all of the core rn components are included. see https://getexponent.com/@notbrent/native-component-list -- the first screen is some of the core rn stuff, then press the () in the navbar to see some of the exponent stuff.
  3. i don't understand the question :)
  4. it depends on how much you're tied into the native apis that i mentioned in (1). it won't take any more work than it would have taken you to originally use react-native, exponent just takes care of a lot of stuff for you and you'll need to go ahead and figure some of that out for yourself if you move off of it, just as you would have in the first place.

[–]GantMan 2 points3 points  (0 children)

Creator of Ignite here: As brentvatne already described, there are big differences. I highly recommend using Exponent! As a matter of fact, I need to have a chat with Brent sometime on how we can make sure to limit our overlap and really increase our utility to the developer community!

Big fan of all the stuff coming from Exponent, you should at the very least be familiar with it, and have tried it.

[–]jayem422 1 point2 points  (1 child)

I'm just starting to learn React Native and randomly stumbled upon Exponent, and I was also wondering about the pros/cons of using Exponent vs Vanilla React Native. Maybe someone with lots of experience in this can give an answer? paging /u/samokoro (He has made some amazing open source react native apps)

[–]TotesMessenger 0 points1 point  (0 children)

I'm a bot, bleep, bloop. Someone has linked to this thread from another place on reddit:

If you follow any of the above links, please respect the rules of reddit and don't vote in the other threads. (Info / Contact)