Frequently Asked Questions

This document lists frequently asked questions when developing Shoutem extensions. If you don’t find an answer here, try to find it on Stackoverflow or feel free to ask it there using shoutem tag.

Questions:

What’s the difference between React Native and Shoutem?

Shoutem is a simple modular architecture for building React Native apps. It allows you to use everything from React Native, including native packages, without any special setup. The modular architecture allows developers to create reusable packages, called extensions, which can be easily installed into multiple apps.

There are a number of benefits of using Shoutem on top of React Native:

  • Xcode or Android Studio aren’t needed to run your apps on iOS and Android devices
  • Test apps on iOS devices using Windows
  • Shoutem open sourced a lot of extensions which you can use, modify and install into your apps
  • Update apps instantly without resubmitting them to the stores
  • Shoutem provides a customizable web interface which your clients can use to manage the app
  • A lot of non-technical users are using Shoutem Builder, to whom you can sell your extensions
  • Shoutem takes care of all the breaking changes in React Native

Is Shoutem free?

Yes! Shoutem is completely free and open sourced for developers. Use unlimited number of extensions in your app. There are some premium features like automated publishing to both stores. See the pricing details here.

How can I get the complete app code?

There’s no lock-in. Use shoutem pull-app command to download all the code locally, or feel free to fork extension source code from the GitHub repository. The shoutem pull-app command will download the code for all the extensions installed into your app.

How can I make my existing React Native app work with Shoutem?

Shoutem app is a plain React Native app. We firmly believe that architecture that Shoutem introduces is the right way to do React Native apps. You should think of your app as a collection of multiple functionalities. Divide those functionalities into smaller modules, which will eventually become reusable extensions.

You can start by wrapping your entire app into one large extension. Using Shoutem, there’s no restriction in how you can use React Native. As the time goes by, self-contained functionalities will become apparent. At that point, you should start dividing them into multiple extensions.

Can I publish app without using Shoutem?

Of course you can! With shoutem pull-app you are getting the whole React Native project, the whole app which you can build and publish manually.

Which editor should I use?

You can use editor of your choice. We recommend Visual Studio Code.

Can I use native modules in apps?

Yes, you can use them the same way you’ve used them in React Native.

What do I need to run the app locally?

There are 2 ways you can run your app locally:

  • 1) Using Shoutem Preview app (available for iOS and Android)
  • 2) Running app on the iOS/Android simulators or directly on devices

For both cases, you will need Node.js v7 and react-native-cli.

Node.js

Install Node.js from their website. If you already have it installed, check which version you have with node -v command. If the version is not in v7.*.* range, we recommend using nvm to upgrade it.

react-native-cli

Install the react-native-cli globally with npm:

$ npm install -g react-native-cli

If the previous commands fails because of the permission issues, run it with sudo prefix: sudo npm install -g react-native-cli.

1) Using Shoutem Preview app

For this, you only need Node.js v7, react-native-cli and @shoutem/cli! Use shoutem run command.

2) Running app on the iOS/Android simulators or directly on devices

Using Shoutem Preview app, you can run your app if custom developed extensions don’t include the native code (since our binary doesn’t have it). If you have native dependencies, setup the React Native local environment. Read more about this in local environment setup tutorial.

Can I debug using Shoutem Preview app?

This feature is coming very soon!