Marquee by Radial: An experiment in native mobile development contrasted with hybrid using JavaScript.

At Radial Development Group, we build web applications and mobile experiences for our clients using a host of tools, from native to web-based React.js, React Native, Cordova and Progresive Web Applications. We work with Ruby on Rails, Node.js, Python and Django. Simply put, we do a lot of different things.

What differentiates us, however, is a strong focus on process. We believe strongly in test-driven development (TDD), and in DRY, repeatable code. This has led us to the decision to use Cordova and React.js as our primary mobile application framework. Cordova and React.js provide a cross-platform toolset enabling front-end web developers to build mobile apps using Javascript, and implementing various test-suites including Mocha, Chai, Jasmine, etc, allowing us to do end-to-end TDD and continuous deployment.

Our Director of Project Success, Dave Loftis, comes at the problem differently, and believes in the virtues of native development. He loves to play devil’s advocate regarding our solution stack for mobile, but has largely been pacified by arguments about his own lack of experience doing TDD on iOS, and his total lack of experience on Android. His argument, however, is that for many applications, while a Cordova app will quickly launch an app into the iOS and Google Play stores, the decision to separate your development work several degrees from the platform begins creating code debt that becomes untenable at some point during the development of a reasonably complex app.

The evidence in support of his position abounds. Whether it’s AirBnB’s history and challenges with React Native, or the extreme difficulty of building an iOS share extension in Cordova (we might be the first firm to have created a truly useful method for doing this). At some point, a change made to the stack you have layered on top of the core application framework does something in a manner in which you do not want, and you are left needing to do significant work that is outside the core competency that created the application. This does not occur with the same frequency for native apps.

The Challenge

So, we challenged Dave to build, native to both platforms, using Radial Development Group standards, a fairly simple app, and to document the process against several milestones, logging his time spent, and publishing to public github repositories, his code. It wasn’t even that big a challenge to decide what to build.

Radial Development Group manages The Armory co-working space in Loveland. Like all co-working spaces, we have a conference room which our members may use by booking using a Google calendar. And, finally, like all cool coworking spaces, we want an iPad mounted to the wall to show what’s booked in the conference room. We weren’t really happy with the options for that sort of marquee display. So, we gave Dave an assignment, and this project was born.

We asked our Designer-on-Retainer Jessica Gillis (you should hire her here, if you need design work) to design the app, based on Dave’s initial sketch. Nothing too complex, just the ability to connect to an arbitrary URL representing an ICS feed, and the ability to control the background.

Dave’s estimate was that he could build the iPad app in 4-6 hours. And a week for Android, since he’s never even started a project on there - though he did teach Java programming at Colorado Mountain College many years ago.

To make things interesting, we added the following Radial standards.

  • Projects must be developed using Test-Driven Development
  • Code must meet Radial Standards
  • Layout must be done using current state-of-the-art processes, e.g., AutoLayout on iOS.

Additionally, we set the following set of project benchmarks, after which we will blog and discuss our results and the challenges encountered.

  • Basic UI: App initialization through Stubbed UI
  • HTTP Networking: Network Access of stubbed ICS feed
  • Live calendar: Stubbed ICS feed replacing stubbed UI elements
  • Scheduled updates: Calendar updates from network data regularly
  • User Settings: Includes settings page for changing ICS feed and update frequency. (A completed app)

Our Results

We will be publishing more about this experiement, following Dave’s presentation at Boulder Startup Week 2019.

To be notified as we post our detailed findings, please join our mailing list.