What is Expo and why it matters for app development

This framework for React Native applications simplifies the work of developers by reducing setup, testing and maintenance times.

Sergio Panagia

Partner, Technical Director

Giacomo Alonzi

Developer

Expo is a framework that extends React Native, a software library born in Meta (Facebook) to develop native iOS and Android apps using a single codebase written in JavaScript. Its SDK makes accessible native device features, e.g. the camera and hardware sensors, as well as standard utility libraries, i.e. by being ready for authentication by major providers like apple and Google. You can also use third-party libraries as long as their compatibility is verified in advance.

The use of Expo Application Services, a Cloud service that automates the build process (creation of an executable) and release on the App Store and Google Play Store, is of major benefit by allowing the development team to save time that would otherwise have to be spent on setup and configuration activities in the respective native development environments.

Expo, under the “managed workflow” mode, gets the team operational within minutes: thanks to Expo CLI and the Expo Go app, developers can run and debug a new app via the iOS simulator or Android, via a web browser or actual device. And all this without the need to use apple (Xcode) and Android (Android Studio) native development software as is the case when developing with React Native.

Expo Go speeds up the development and testing process by allowing you to execute JavaScript code without having to wait for the build process; it also allows you to invite test users in a very straightforward way, simply by using a QR code or a link, and you can therefore start receiving feedback within a minimum amount of time.

Anyone who has created at least one app in React Native knows that returning to the project some time later to upgrade it to the latest version, perhaps for a major release, can involve a long and frustrating process due to frequent breaking changes or incompatibilities between the previously developed code and the framework’s latest version.

Expo acts as an intermediary between the programmer and React Native, imposing one and only one version of React Native for each of its releases, namely one that has been thoroughly tested for compatibility and in line with a predictable a priori schedule (once a quarter, unlike React Native releases, which do not follow a specific time frame).

On the other hand, there are some factors that should be carefully considered when choosing whether or not this framework is chosen.

In our opinion, the most significant aspect is that Expo limits the use of third-party libraries as it can only integrate with components that have been made compatible. Although these are constantly increasing (in line with the framework’s uptake), this feature must be given some considerable thought during any new project’s initial analysis phase, when its requirements and specifications are defined. It should be noted, however, that Expo will, in any case, allow the project to be converted into an entirely normal React Native codebase at any time. However, this would obviously mean having to renounce the benefits of Expo and Expo Application Services.

To sum up, Expo therefore seems like a really interesting technology, where you can create native iOS and Android apps starting from a single source code. The experienced React Native developer will have no problem understanding its fundamentals, being already comfortable using the SDK.

The managed workflow, where the framework’s true strength lies, is likely to be highly suitable for small development teams, which lack dedicated staff for setup and maintenance activities. However, it is also true that the framework can be useful for more structured teams and complex projects: in these cases, it will be even more important to verify in advance whether the project requirements can be satisfied by the APIs available natively and, since the managed workflow does not support customised native code, whether any gaps can be filled with JavaScript code.



    Press ENTER

    We will use the data you share with us only to reply to your information request. Read our privacy policy

    Something went wrong, please contact us by email

    Proceed

    press ENTER

    Thank You

    We'll be in touch soon.