What mobile platform is the 'best' for Bluetooth app development?

Native or Hybrid? Here are some questions to ask yourself as you make the decision:

What mobile platform is the 'best' for Bluetooth app development?
Photo by Alexander Schimmeck / Unsplash

Native or Hybrid? Here are some questions to ask yourself as you make the decision:

1. What is my desired user experience?

A. Is this a "quick check" app? By quick check, I mean - does the user open the app once in a while to take a Blood Pressure reading or turn a light on/off? If so, I wouldn't be afraid to use a generic BLE plugin on a Hybrid platform. (e.g. BLE Plx on React Native)

B. Does the app need to maintain a connection to the device at all times, even when the app is in the background?

C. Is the app time critical? e.g. does the app need to connect and transmit data in a small window of time?

If yes to either B or C, you will find it easier (e.g. less error-prone) to make your own 'plugin' to wrap the Bluetooth and background processing.

2. Communication between the device and app

A. Is there a lot of back and forth between the app and the device?

B. Are the data structures complicated?

C. Are you streaming files/data?

If yes to either any of these, you will find it easier (e.g. less error-prone) to make your own 'plugin' to wrap the Bluetooth and communication. This is especially true if you are doing things like OTA or log transfer.  

3. Team Capabilities

If your team comfortable only with JavaScript/Dart/C#? Can they learn new languages and tools to create native apps?

Is getting a product to market or proving a concept more important right now than a good user experience? e.g. can you tolerate possible less-than-desired App Store reviews?  

If you have anything more than just a simple "quick check" Bluetooth app, then you will want to write your own iOS and Android plugins to handle Bluetooth communication. This will help improve the performance and reliability of the hybrid app.

But if the app is more complex and requires good throughput and constant background connectivity, I'd strongly recommend going 100% native.

Of the 35+ companies I've helped build Bluetooth apps, only a handful have used Hybrid platforms like React Native. When I built those integrations, I kept the Bluetooth code native and exposed a simplified API over the 'bridge'.