Skip to main content

Motivation

Here are some key principles that we want to maintain while working on the integration:

  • Modules are automatically linked and no additional action is required to get them up & running
  • If module dependencies (native) are not met, project does not compile
  • All APIs must be provided in the SDK. You will be able to mock some native APIs (for security reasons or speed for example)
  • It should not matter whether you build your app with Expo or with pure React Native CLI. From app development perspective, submodule is a simple package. All abstractions are only needed to provide managed submodule workflow.
  • You should be able to securely share the sandbox with external developers and allow them to build modules for your app (super app)

Things that are out of scope for now:

  • You own native files. Managed workflow will be provided in the future, but we want to avoid building an abstraction layer to allow releasing different variants of the app.
  • Bundle splitting / lazy loading. Technically, it is possible to build an extension for Repack / Webpack and we will be looking at this in the near-term future

In current form, this project is a toolkit for developing highly-modular React Native applications. The goal is to be able to do (more or less) $ xplat index.js and have that file run in the simulator without any additional configuration. Environment is already up&running based on config.