+ Start a Discussion
Ramk123Ramk123 

Mobile App Development with React Native Technology

Dear Mobile App experts,

One of my customers would like to build a mobile App with React Native, What would be the pros and cons for the following options.
  • Option1: Can we build Mobile App in Salesforce with React Native Technology?
  • Option 2: Build React Native Mobile App outside salesforce and Integrate with Salesforce? 
  • What are the other best options to build a Mobile App?
Appreciate your valuable suggestions!
Best Answer chosen by Ramk123
Todd Halfpenny MCTodd Halfpenny MC
Hi Ramesba,

1) I'm not entirely sure about question 1, I don't think I entirely understand the question, sorry.

2) Yes, this can be done, and there's a nice starter Trailhead available (https://trailhead.salesforce.com/content/learn/modules/mobile_sdk_react_native).

3) This answer to this is the common "it depends"... and this is based upon your requirements, budget, skill set etc.
For example you need to answer questions like the following, and this will help you decide on the initialr route to take (e.g. custom or not)
  • Do you really need a mobile app, or will the mobile web experience be enough
  • Who are the users of the app? What licenses will they use? Are they employees or customers? If they are employees then perphaps using the mobile Salesforce app should be the route (to share logic between desktop/mobile) If the app is for customers does the app need to be on iTunes/Google play, and does it need to be branded (if so then a custom app is needed - perhaps Mobile Publisher could be used)?
  • Does the app need to access harward APIs on the device (e.g camera, location)? If yes then a custom mobile app is required.
  • What devices is it likely to run on? The Salesforce products have relatively small numbers of older OS that are supported.
It is likely that since you're asking about React Native that you've already decided that a custom mobile app is required, but I thought it best to go through the above just in case.

In my opinion using something like React Native gives a lot of benefits, including support with the Salesforce Mobile SDK and the single-code base for multiple devices. Other alternatives would be to use the SDK and frameworks like Ionic with Angular/React/Vue... I'm a big fan of Ionic.

When building almost any custom app it's worth keeping in mind the following too;
  • The ecosystem is constantly moving, and having a process to ensure the apps keep running through the releases of Salesforce, iOS, Android, etc, is something the should not be truly considered as we've seen updates to all of these pieces cause issues for apps.
  • Be aware of API calls to the platform, each interaction will count against your quota
  • Offline support is hard, but in many use cases the support for offline running is absolutely critical
  • Using Salesforce Mobile SDK has it's own drawbacks. There is no offical support channel, and in my experience I wouldn't jump straigh to the latest release (for stability reasons)
As for alternatives I have already mentioned other hybrid-type tech such as Ionic, but you could also build natively. This option might be for you if you have a sinlge OS and/or the native skills sets (swift/Java). IMO the performance difference these days between hybrid/native is so small it's negligible, and if an app is built well then the users will have no idea if it's native/hybrid.

At my company (MobileCaddy) (https://mobilecaddy.net) we have a app-dev framework that takes care of the consideration points above, and allows the devs to focus the business logic. We support 100% offline running, with full custom UI and have zero impact on the API call quota. Our partners (and direct customers) build their apps using Ionic so also get iOS/Android support, as well as windows desktop too.

Apologies for the long reply... but as I said there is a lot to consider when wanting to mobilise Salesforce.

All Answers

Todd Halfpenny MCTodd Halfpenny MC
Hi Ramesba,

1) I'm not entirely sure about question 1, I don't think I entirely understand the question, sorry.

2) Yes, this can be done, and there's a nice starter Trailhead available (https://trailhead.salesforce.com/content/learn/modules/mobile_sdk_react_native).

3) This answer to this is the common "it depends"... and this is based upon your requirements, budget, skill set etc.
For example you need to answer questions like the following, and this will help you decide on the initialr route to take (e.g. custom or not)
  • Do you really need a mobile app, or will the mobile web experience be enough
  • Who are the users of the app? What licenses will they use? Are they employees or customers? If they are employees then perphaps using the mobile Salesforce app should be the route (to share logic between desktop/mobile) If the app is for customers does the app need to be on iTunes/Google play, and does it need to be branded (if so then a custom app is needed - perhaps Mobile Publisher could be used)?
  • Does the app need to access harward APIs on the device (e.g camera, location)? If yes then a custom mobile app is required.
  • What devices is it likely to run on? The Salesforce products have relatively small numbers of older OS that are supported.
It is likely that since you're asking about React Native that you've already decided that a custom mobile app is required, but I thought it best to go through the above just in case.

In my opinion using something like React Native gives a lot of benefits, including support with the Salesforce Mobile SDK and the single-code base for multiple devices. Other alternatives would be to use the SDK and frameworks like Ionic with Angular/React/Vue... I'm a big fan of Ionic.

When building almost any custom app it's worth keeping in mind the following too;
  • The ecosystem is constantly moving, and having a process to ensure the apps keep running through the releases of Salesforce, iOS, Android, etc, is something the should not be truly considered as we've seen updates to all of these pieces cause issues for apps.
  • Be aware of API calls to the platform, each interaction will count against your quota
  • Offline support is hard, but in many use cases the support for offline running is absolutely critical
  • Using Salesforce Mobile SDK has it's own drawbacks. There is no offical support channel, and in my experience I wouldn't jump straigh to the latest release (for stability reasons)
As for alternatives I have already mentioned other hybrid-type tech such as Ionic, but you could also build natively. This option might be for you if you have a sinlge OS and/or the native skills sets (swift/Java). IMO the performance difference these days between hybrid/native is so small it's negligible, and if an app is built well then the users will have no idea if it's native/hybrid.

At my company (MobileCaddy) (https://mobilecaddy.net) we have a app-dev framework that takes care of the consideration points above, and allows the devs to focus the business logic. We support 100% offline running, with full custom UI and have zero impact on the API call quota. Our partners (and direct customers) build their apps using Ionic so also get iOS/Android support, as well as windows desktop too.

Apologies for the long reply... but as I said there is a lot to consider when wanting to mobilise Salesforce.
This was selected as the best answer
Ramk123Ramk123
Thank you for the detailed suggestion!

MobileCaddy looks great framework and it supports offline, will discuss internally and ask for the demo from MobileCaddy.

If the customer goes with React Native, what would be the integration complexity and Integration approach with salesforce? 
MobileCaddy is built on the salesforce, so we don't require any integration with salesforce right?
Todd Halfpenny MCTodd Halfpenny MC
If you go with React Native you'd lieky interact with Salesforce via the Mobile SDK (it has API for sync etc). There are a few good blog posts and tutorials on building with React Native,I'd suggest having a read through the those (quick google should get you the top results).

And yes, MobileCaddy has a AppExchange package part to it, this installed into the org and is used to define what objects/fields to mobilise etc, and manage some of the applications behaviour (sync conflict rules, for example). The "client" app has direct interaction with Salesforce, so there's no need for any other integration points.
Ramk123Ramk123
Thanks a lot, Todd!