Is React Native with Elixir/Erlang a good choice?

Hello everybody!.
I’m currently a full-stack mobile developer with over a year experience with React Native and NodeJS
Recently I’m switching to a freelancer and considering a niche market such like Build mobile applications with high traffic ,low scalability and high performance.
1. Does Elixir/Erlang have better performance NodeJS for building mobile app ?
2. Is Erlang a good choice in combination with React Native?

Thank for reading my post !
Have a good day !

Elixir’s primary strength over NodeJS is its ability to handle concurrency at scale within a single node. JavaScript, by it’s nature, is single threaded. There are some affordances for writing asynchronous code on a single node, but they are complex and require careful coordination. A crash, or a request handler that does to coordinate well with others can drag the whole system down to become unresponsive. In practice you will need to have multiple Unix processes on multiple nodes, each with a full NodeJS stack and all the memory and compute resources it consumes, to scale. Paraphrasing a comment I heard from Joe Armstrong, systems like NodeJS gives you one web server that can handle multiple requests. But you will need a lot of web servers to handle significant load.

The Erlang VM in contrast can handle thousands to millions of simultaneous connections on a single node (depending on the size of the node). This is a much better “resource density” than you can get out of NodeJS. What’s more, each connection is going to be handled by a largely independent VM process, without coordination – losing one process will not affect the others. To continue paraphrasing the comment from Joe Armstrong, with Elixir you get a thousand web servers each handling one connection. Those thousands of servers can all run on one node with a very low overhead on each subsequent connection.

One consequence of the ability to handle thousands of connections at once is that it opens up your applications to the possibility of having a stateless client-server architecture. That could have profound implications for your application irrespective of whether the client is mobile or web,

Erlang makes a great back end when you want to handle a lot of simultaneous connections and need good resource usage on the back end. Elixir is a warm and welcoming language that gives you access to the Erlang VM.

React Native’s largest advantage, and largest weakness, is that it is a cross-platform technology. This simplifies the life of the developer, but tends to deliver least-common-denominator user experiences to the customer.

While the pairing certainly be good, and you could create some very interesting mobile applications that way, I am not creative enough this morning to envision a particular advantage to that specific pairing. The intervening network tends to allow a lot of abstraction between the client and server and gives you freedom to vary the technology at either end of the connection.

5 Likes

Thanks you! . Whether I can use Docker to combine together .