Omnisite GuardDog 2

Instant Pump Alarm Notifications Plus Data-Logging for Remote Equipment

Could you introduce your app in a few sentences?

The app allows access to equipment status from any one of OmniSite’s alarm monitors. Using this app in combination with the GuardDog web interface makes it possible to monitor your equipment any day, anytime, from any computer, and now even from your phone. This app now allows you to change the callout list, acknowledge alarms, change device setup page, and many other features that our first app would not allow, so the user gets the same functionality as the web interface on their phone.

GuardDog was designed to be simple to use while providing best in class features and options. The app provides a full subset of the GuardDog features as listed below:

  • Current Alarms
  • Alarm Acknowledgement
  • Callout List and Call Plan
  • Station List
  • Device Setup

The Station list page allows you to drill down even further to look at specific Analyzer and Alarm Information for a given station. The following information is available for the previous 7 days:

  • Device Status
  • Pump Calculations
  • Analog Readings (Crystal Ball only)
  • Influent Reports
  • Rainfall

What made you decide to use/switch to React Native?

It perform better than Cardova in terms of speed and complexity and yet its easy to support both Android and iOS. It's possible to update the app dynamically without going through the App Store or the Play Store. This is applicable because I am using Expo.
Furthermore, because of the single code base for multiple platforms it easy to maintain the code.

How did you transition to React Native?

First, I researched a bit on Google about different technologies, and their pros and cons. Then, I asked my friends and other mobile development companies about their opinions. Most of them were recommending React Native.
We have never developed a mobile app before. This is our first one. After looking at React and Redux, we are planning to use the same even for web development.

Have your tried other cross platform technologies before using React Native?


What has your experience been working with React Native in terms of app performance, have you noticed any impacts?

Performance has been outstanding in the production environment iOS and Android. The app might look slower in old version of Android phones but that's not due to React Native, it is because the Phones themselves are slow.
There aren't many animations in my app. Some time it takes few extra milliseconds to load large amount of data, apart from this I didn't see any issues.

How has adopting React Native affected developer productivity?

Initially, it was bit difficult because in C# you have a powerful IDE, Visual Studio, which has better intellisense and is more powerful than Visual Studio Code. I did take a couple of courses in Udemy about React Native which helped me a lot. I did research a little bit of React Native code standards to improve my coding style in JavaScript. One problem I faced in the JavaScript world was that if you make a type or insert an extra character, it throws unusual errors which are difficult to understand and fix the issue, but after facing few issues, I got used to that and made sure there are no typos before running the app.

Which tools, libraries and frameworks are part of your development process with React Native?

Navigation: react-native-router-flux v4.0
State Management: Redux, Redux-Thunk, Redux-Logger, and Redux-Persist
Testing: Jest
Framework: React-Native and Expo
Linting: ESLint
Other utility components: moment, lodash
UI Components: react-native-communications, react-native-elements, react-native-pathks-charts, react-native-swipeout
Analytics: Expo-analytics (Google Analytics)

What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?

Best Udemy Courses:

And also the Facebook React Native Community page.

What are some things that you don’t like about React Native or that need to be improved?

React Native upgrades and Components updates happens a lot, and most of the time it breaks if you update all components. To avoid this, you need to update the component one by one carefully otherwise they are going to have many weird issues.
React Native still not supported for Watch Apps and TV apps. I am eagerly waiting for this.

Anything else you would like to mention?

I just like to say that, React Native is awesome for Mobile App development and I would recommend people to use it with Redux which helps a lot if your app is big and complicated. Even if you don't like it, at least you have a new tool in your bucket.