1

I am trying to understand if an approach I would like to take is allowed in the world of Salesforce.

  • I am looking to build an app with ReactJS as the frontend and Salesforce as the backend.
  • There is going to be a single Salesforce admin(?) user and a single connected app to facilitate communication from the ReactJS app.
  • All communication (data via list views, detail views, DMLs etc) between frontend and backend will occur via custom APIs written in Apex.
  • I will create a "Custom User" object in Salesforce and any user registrants from the ReactJS will end up in my "Custom User" object in Salesforce (I will store their name, email, encrypted password etc in a custom object).
  • I will be paying Salesforce for a single license, but will charge my clientele for as many custom users they create from my ReactJS app.
  • Fortunately, majority of the users will have the same level of access, so profile security is not a top concern at this time.
  • I don't want all the bells and whistles Salesforce offers out of the box (besides Apex, Flows).

Why am I choosing to do this?

  • Salesforce platform licenses are cost prohibitive for my app/business model
  • ReactJS developers are easier to find and more affordable than Salesforce developers
  • ReactJS is more open-ended and less limiting than LWC/Aura
  • I could leverage React Native to create a custom branded mobile app in the near future
  • If I ever choose to move out of Salesforce (because of governor limits), I am at least half way there because the UI would have been decoupled from Salesforce
  • Why Salesforce at all? I am veteran developer myself and can save backend implementation $$ if I did it myself in Salesforce

I am basically bypassing the Salesforce licensing model to save on licensing costs. Is this allowed?

2 Answers 2

2

My understanding is that it is not allowed.

For a quick reference, you can look up the MSA section 3.4 Usage Restrictions

(g) permit direct or indirect access to or use of any Services or Content in a way that circumvents a contractual usage limit

By experience, I have worked on ISV with a Portal that was doing something similar, and Salesforce made us change it to adhere to one license per user back then (so, it may have changed over time, but that seems to be the license terms).

2

Aside from contractual agreements that prohibit sharing licenses this way, it's also a technical nightmare. Each user is limited to a number of open database cursors ("Query Locators") at once (currently 50), and you'll have a database contention nightmare on your hands as records scale up in numbers. Note that standard licenses may be cost prohibitive, but there are other alternatives out there. If you become an OEM Partner, you can resell licenses at any cost you desire, and salesforce.com just takes a slice of the pie. Also, portal licenses (e.g. Community Portal) are dirt cheap, although at the cost of limited CRM functionality (Accounts, Contacts, etc).

Also, while I do recommend avoiding Aura, LWC is built on the LWR. With some careful design considerations, you can easily port your Salesforce logic to any other platform with minimum fuss, as long as you avoid the Salesforce-specific components like lightning-file-upload. There's a lightning-base-components npm package you can use to emulate almost all of the base components as described in the LWC documentation. In addition, I propose that React in Salesforce is just a nightmare. It loads far slower and uses far more resources than LWC/LWR does. The only downside is that even Salesforce Developers would have a bit of a learning curve with LWR, because you don't get the Salesforce-specific wires and have to build your own, but it's really easy to catch on.

Finally, as a cost consideration, React developers and Salesforce Developers get paid about the same. A mid-range React developer is probably about $80k while a mid-range Salesforce Developer is probably about $90k, a relative drop in the bucket in many cases. Also, keep in mind that developing in Salesforce means not having to figure out infrastructure, storage, APIs, and so on. Sure, you can use Heroku or AWS EB, etc, but they tend to cost more since you pay for resources and not licenses.

Overall, I suggest that not only is it a legal nightmare if you try to roll-your-own-user-license, it's also not as necessary as you think it is. Our service that we offer has whatever license cost we charge our customers, but Salesforce has given us a very competitive license matrix where each user we add costs a very small fraction of what we charge our customers. Our ARR has over doubled since I started last year, and our licensing costs have remained a very small slice of our operating expenses.

1
  • I am really struggling to find a rep/exec who understands this. I have talked to 6 agents so far in the last month and people have been tossing me around with no resolution in sight. Any inputs? Are you able to DM me your rep's contact info if that's OK with you? I am a nice guy :-) Commented Mar 27, 2023 at 15:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .