Live data from Hacker News

Exponent – Build native apps in JS that work across both iOS and Android

getexponent.com

1–10 of 119 posts

Re: Exponent – Build native apps in JS that work across both iOS and Android

#2
On the one hand I like this, as it adds in more shared functionality across both iOS and Android out of the box (maps for example). On the other hand, I believe this also breaks the ability to add in custom RN modules, which is part of the reason I enjoy it. Would love to see some of this getting folded back into react native core.

Re: Exponent – Build native apps in JS that work across both iOS and Android

#3
post #2

On the one hand I like this, as it adds in more shared functionality across both iOS and Android out of the box (maps for example). On the other hand, I believe this also breaks the ability to add in custom RN modules, which is part of the reason I enjoy it. Would love to see some of this getting folded back into react native core.

Are you sure you can't use custom RN modules ? That would be.. very surprising.

Re: Exponent – Build native apps in JS that work across both iOS and Android

#4
post #2

On the one hand I like this, as it adds in more shared functionality across both iOS and Android out of the box (maps for example). On the other hand, I believe this also breaks the ability to add in custom RN modules, which is part of the reason I enjoy it. Would love to see some of this getting folded back into react native core.

Are you sure you can't use custom RN modules ? That would be.. very surprising.

I found it surprising too...

From the FAQ (https://docs.getexponent.com/versions/v10.0.0/introduction/f...):

"But no native modules...

The most limiting thing about Exponent is that you can't add in your own native modules. We give you most of the most commonly desired things, but if you need something very custom--like on-the-fly video processing or low level control over the Bluetooth radio to do a firmware update--then Exponent won't work for you and you should just use regular React Native."

Re: Exponent – Build native apps in JS that work across both iOS and Android

#5
post #4

Earlier quoted context omitted.

Are you sure you can't use custom RN modules ? That would be.. very surprising.

I found it surprising too... From the FAQ ( https://docs.getexponent.com/versions/v10.0.0/introduction/f... ): "But no native modules... The most limiting thing about Exponent is that you can't add in your own native modules. We give you most of the most commonly desired things, but if you need something very custom--like on-the-fly video processing or low level control over the Bluetooth radio to do a firmware updat…

I wonder why. Seems like a huge oversight.

Re: Exponent – Build native apps in JS that work across both iOS and Android

#6
post #4

Earlier quoted context omitted.

I found it surprising too... From the FAQ ( https://docs.getexponent.com/versions/v10.0.0/introduction/f... ): "But no native modules... The most limiting thing about Exponent is that you can't add in your own native modules. We give you most of the most commonly desired things, but if you need something very custom--like on-the-fly video processing or low level control over the Bluetooth radio to do a firmware updat…

I wonder why. Seems like a huge oversight.

Well probably not a small task to support custom modules, and it allows them to get a pretty powerful tool with a nice core set of features out the door relatively quickly. If exponent becomes successful I imagine they'll add support for custom modules.

Re: Exponent – Build native apps in JS that work across both iOS and Android

#7
post #2

On the one hand I like this, as it adds in more shared functionality across both iOS and Android out of the box (maps for example). On the other hand, I believe this also breaks the ability to add in custom RN modules, which is part of the reason I enjoy it. Would love to see some of this getting folded back into react native core.

Hi there! I work on Exponent.

We intentionally chose to not let users drop down to native -- the idea of having an interpreted language that sits on top of a native runtime on multiple platforms is not a new one, and it allows for so many benefits that you lose out on if developers can add arbitrary compiled code with direct access to system APIs.

Additionally, there is a significant value-add of using Exponent in terms of upgrades. As great as React Native is, it also moves extremely fast and it can be difficult to keep up with new releases -- a change in React Native might cause several of your native dependencies to break, and you'll need to fork those libraries and fix them if the maintainer isn't keeping on the same schedule as you. Updates with Exponent are as simple as updating JavaScript, which has much less churn and breaking changes than the native side (the React API itself is very mature, the APIs for specific native components may change).

Another nice advantage of this is that you can work on an iOS app from Windows and Linux, because you don't need to compile your app with Xcode (we handle builds for you when you want to ship to the app store, before that you can just use the Exponent client).

We ship with a bunch of APIs out of the box and are constantly improving them and adding more. We have analytics tools like Amplitude and Segment built in, Maps, Facebook login (working on Google Login), and more: https://docs.getexponent.com/versions/latest/index.html

React Native is still very early, though, and Exponent is just a small team of seven, so we understand that we can't possibly expose every API that developers working with the platform might want. So, we are working on a way for developers to be able to still take advantage of the Exponent toolchain and layer on native code. I've written up our approach in more detail here: https://blog.getexponent.com/answered-on-slack-ejecting-from...

Re: Exponent – Build native apps in JS that work across both iOS and Android

#8
post #2

On the one hand I like this, as it adds in more shared functionality across both iOS and Android out of the box (maps for example). On the other hand, I believe this also breaks the ability to add in custom RN modules, which is part of the reason I enjoy it. Would love to see some of this getting folded back into react native core.

Hi there! I work on Exponent. We intentionally chose to not let users drop down to native -- the idea of having an interpreted language that sits on top of a native runtime on multiple platforms is not a new one, and it allows for so many benefits that you lose out on if developers can add arbitrary compiled code with direct access to system APIs. Additionally, there is a significant value-add of using Exponent in te…

I'll dive into your architecture more later tonight, but I'm not clear on why Exponent has to handle exposing specific APIs? Couldn't it work in the same way that React Native doesn't expose specific APIs?

Re: Exponent – Build native apps in JS that work across both iOS and Android

#9
This looks cool. But are the builds happening remotely on the Exponent servers, or have I misunderstood that?

Edit - brentvatne just answered this: "we handle builds for you when you want to ship to the app store, before that you can just use the Exponent client".

Re: Exponent – Build native apps in JS that work across both iOS and Android

#10
Hmm, they say you can buy an Exponent app through the App Store, and then you can push updates to it through them, and they show up the "next time the user opens the app without having to do through the App Store"?

I don't think downloading scripting or native code that changes how an app behaves from outside sources has been allowed on the App Store, so what gives?

Post reply on HN