Skip to content


iOS & Android App for the Crownstone.

Getting Started

When first checking out the repo, run yarn (if you don't have it, google and install)


This will check out, download and install all required modules for node.

If you want to work on the ios version of the app:

cd ios
pod install

To install the modules for ios to compile. Android does not require this.

To start the typescript compiler, run:

npm start

This will dynamically recompile the app on changes made to /app/ts/**/*.

To run the react server for development (using debug builds via either android studio or xcode):

npm run react

If you're building the Android app, checkout the android bluenet library, copy or symlink the bluenet folder from the lib to the android folder.

From here on, you can build the app as you would any other app for android and ios.


The Android development is always a few weeks behind the iOS development, especially with respect to the graphical user interface.

The application makes use of separate libraries (so-called bluenet libraries) that are native to the platform. This is on purpose so that people can be make use of the Crownstone libraries without the need to use React Native. See below for getting the libraries.

Issues and feature requests

Do you encounter some issues or would you like to see a particular feature, file them directly at our Github issues tracker.


The compiled app can be downloaded from Crownstone.


React Native

Make copies of ./js/LocalConfig.template.js and ./sentrySettings.template.js and rename them to ./js/LocalConfig.js and ./sentrySettings.js.

Assuming you've already installed npm, nodejs and yarn. You can get Yarn here:

  • nodejs
  • Yarn, can be obtained at
  • Carthage (for iOS)
  • Android Studio (for Android)

Make sure typescript 2.2 or higher is installed using:

npm install -g typescript

To download all dependencies, use Yarn:


To run the compiler, use:

tsc --watch


npm start


In the ios folder, use Carthage to download the dependencies.

carthage bootstrap --platform iOS --no-use-binaries


  • Clone the bluenet lib for android to another dir, and copy the bluenet module to the android dir of the app:

      cd ..
      git clone
      cp -r bluenet-android-lib/bluenet CrownstoneApp/android
      cd CrownstoneApp
  • Import the project in Android Studio

      File > New > Import Project ...

    Choose the android dir.


  • Start the react server in a seperate terminal:

      react-native start
  • Reverse the port (only needs to be done once after plugging in the phone):

      adb reverse tcp:8081 tcp:8081
  • Press the play button in android studio


Running yarn (or anything else) may confuse android studio. If gradle fails, try closing android studio, run, and import the project again.


Run the tests:

npm test

Run react-native

react-native run-ios

or (untested):

react-native run-android


If there are problems with PHC folders during iOS compilation, remove the build folder in the ios map. Cameraroll has to be manually added to iosbuild in 0.42

If you get a lot of these messages in the XCode console:


Add this global variable to your build config:

Xcode menu -> Product -> Edit Scheme...
Environment Variables -> Add -> Name: "OS_ACTIVITY_MODE", Value:"disable"

If you get errors with xcode 11:

Unknown argument type 'attribute' in method -[RCTAppState getCurrentAppState:error:]. Extend RCTConvert to support this type.

That means you need to update the React Native version to 59.9

If you get a compilation issues in xcode 10, "config.h not found" copy the from /node_modules/react-native/scripts to /node_modules/react-native/thirdParty/glog and run the script. Clean and rebuild

If you get libfishhook.a is missing, go to RTCWebSocket and re-add the libfishhook.a in the link binary with libraries panel.

react-transform-hmr errors: run this to start the server --> react-native start --reset-cache

If you get "Argument list too long: recursive header expansion failed at <user_path_to_app>/node_modules/react-native-camera/ios/../../../ios/build/Index/DataStore/v5/records/R4.", remove the $(SRCROOT)/../../../ios from the Framework Search Path of the react-native-camera library xcode project.


The copyrights (2014-2017) belongs to the team of Crownstone B.V. and are provided under an noncontagious open-source license:

  • Authors: Alex de Mulder, Bart van Vliet
  • Date: 1 Apr. 2016
  • Triple-licensed: LGPL v3+, Apache, MIT
  • Crownstone B.V.,
  • Rotterdam, The Netherlands


Open-source license

This software is provided under a noncontagious open-source license towards the open-source community. It's available under three open-source licenses:

  • License: LGPL v3+, Apache, MIT

License: LGPL v3 License: MIT License: Apache 2.0

Commercial license

This software can also be provided under a commercial license. If you are not an open-source developer or are not planning to release adaptations to the code under one or multiple of the mentioned licenses, contact us to obtain a commercial license.

  • License: Crownstone commercial license


For any question contact us at or on our discord server through


Mobile app for the Crownstone (Android & iOS). The apps are freely available from Google and Apple app stores. The code is based on React Native.




Apache-2.0 and 2 other licenses found

Licenses found






No packages published