We really like building mobile apps at Lola Tech. Love it, in fact. The technical challenges are just some of the reasons we do. There is also joy in building delightful UI. It’s about distilling human thought and action into predictable patterns and designing a system that responds intuitively and efficiently. With more services than ever accessible online, app development is an area we expect to grow, and we are hiring accordingly.
So what makes app development so technically interesting?
We, as developers as well as users ourselves, like a mobile app that is snappy and easy to use. With that in mind, many projects start with a decision on what technology best suits our client’s needs *and* is most likely to help us build just such an ideal app. That is how we ended up using React Native.
At its most basic level, React Native lets us write code that is shareable between different platforms and which can be written with reusable components. It is hugely efficient and delightfully versatile. More specifically, React Native is a framework for creating UI for both iOS and Android using TypeScript. It allows for smooth transitions between operating systems, which makes our job as developers much easier. Yet, it does not skimp on customisation features and allows us to work with native elements in either OS, like the camera or contacts. In short, we can build a fully functioning app for both iOS and Android platforms using one single programming language and framework.
We also subscribe to React’s programming paradigm, which is elegant and idiomatic, and helps us keep complexity low and maintainability high. Colleagues with more traditional backgrounds in app development often say that they find React to be a transformative breath of fresh air.
Integrations are always the most challenging aspect of app development. It is a complex and finicky task to create contracts (i.e. connections) between an app designed for ease of use and the myriad of enterprise systems running in the background. Some of these are proprietary, but many are third party products, run by vendors like Zendesk, Salesforce or Stripe. Often, all these systems are imperfectly linked to each other, meaning data transfers were already chaotic even before adding an app to the mix.
Luckily, React Native helps with this as well. Its ecosystem helps us when integrating with services like authentication, customer communications and, importantly, the business APIs which make the app useful. It does this by providing off-the-shelf and battle-tested packages for connecting to OpenID servers (we like `react-native-app-auth`) as well as provider-specific libraries for systems like AWS Amplify and Cognito. Not only do these solutions save time and effort, but they also offer greater security because they are maintained by specialists who are dedicated to monitoring and fixing vulnerabilities.
Some clients are a little hesitant to agree to use React Native because of what they see as the lack of supported integrations. And that is true, sometimes neither the vendor nor the wider ecosystem can offer an out of the box solution. An example we faced recently would be connecting React Native to Zendesk. In this case, we had to build extensively on top of some incomplete modules to deliver smooth customer service chats. While technically challenging, work like this is hugely rewarding because we build a customised solution for the client and learn new skills in the process.
When we integrate with a client’s core systems we establish an exceedingly strong contract between app and API. This ensures plentiful warning in case any change to the API is likely to disturb customer experience. We do this by employing meta-programming, using a code-generator against the API service itself (or its documentation) to output the app’s client-library, along with strongly-typed data objects which exactly match the API’s capabilities. When these are used in TypeScript it creates a system that cross-references itself constantly and ‘knows’ when there is a mismatch between app and API. It gives us immediate feedback, even before we send a build for testing.
So yeah, app development. We could go on about all day. We love it. We have a whole team dedicated to it. If you want to geek out over this together, why not check out our open positions. And if you have some app plans for your company, we’d love to chat and see how we can help. Just drop us an email or use the online contact form.