With the rise of modern app development, developers have increasingly demanded native ways to extend and customize their line-of-business applications. In this post, I’ll share how I developed a React Native + Expo mobile app using open source tools with a focus on how to easily interact with Salesforce Objects data via the mobile app.

Meet Eureka Retail — a React Native clienteling app

My mobile app demo (named “Eureka Retail”) aims to showcase a simple retail use case called “clienteling.” This is a process where in-store sales associates identify the most loyal customers and their preferences, so they can provide a more targeted service and improve sales.

In the Eureka Retail app, key clienteling features include: the Home screen, which provides a dashboard view of store and associate performance; a Profile screen, which is centered around the associate’s performance; and most importantly, a Customers screen, which enables associates to access data and insights regarding their loyal customers residing on Salesforce.

Mockup showing the sample mobile app interface

For the purpose of this demo, I have created a custom object called “Eureka Customers” to demonstrate this use case. Note that in production, it would be recommended to use the Standard Objects in Salesforce i.e. Account and Contact to represent customers data.

High-level architecture

Let’s begin by taking a look at the high-level architecture:

  1. Heroku Connect synchronizes data two ways between the Salesforce org (Eureka Customers custom object) and the Heroku Postgres database
  2. A Heroku app (ExpressJS) serves as the API interface for interacting with the data in the Heroku Postgres database
  3. An Axios library sends and retrieves data from the Heroku Postgres database via the Heroku app