Helping People Learn New Skills with React Native

By Dan Williams

At Workshop, our aim is to uncover the best methods for teaching and learning new skills using technology, which is why technology is at the core of everything we do.

Workshop is entirely built with React Native — the only native code is code added back to improve open source components.

In recent times we’ve seen a whole host of EdTech companies starting up claiming to be ‘changing the way in which we learn’. Our view is that technology on its own isn’t capable of changing the way in which we learn for the better, just because it’s technology. It’s down to how that technology is applied through product and learner experience design that brings about positive change.

As a participant in the EDUCATE project led by the UCL Institute of Education, we’re committed to using research-backed methodologies in designing and improving learning experiences for our learners.

Workshop has been designed around the learner experience, helping users to learn more effectively.

Inevitably, part of the design process is testing assumptions and iterating quickly on our product to ensure it’s continually improving and adding value to our users. From day 1, we decided to go mobile first, which to us meant providing an iOS & Android app from the off, but when you start as a team of 2, this is traditionally not a feasible option — enter React Native.

Built around the concept of ‘learn-by-doing’, we believe the best way to learn a new skill is by trying it first, leaving the ‘why’ until later.

When we started working on Workshop almost 2 years ago, React Native was still experimental but had clear ongoing industry support, meaning that given our requirements of having a cross-platform mobile app which we can iterate on quickly, it made sense as a starting point. 2 years later, our use of React Native has developed from a starting point to being our entire development ecosystem.

Along that journey we have of course hit many road blocks, partly to do with limitations within React Native, partly to do with breaking changes from adopting a still in development framework, and partly from our own initial lack of understanding of the architecture of React Native, but the beauty of the framework for us has been the ability to always find a solution, no matter the problem.

Let’s not lie, React Native does get some bad press. But a lot of the bad rep which React Native gets is generated from new comers to the framework who have been sold false promises, and companies who try to adopt and integrate React Native into existing code bases or existing teams who don’t want or necessarily need it. There’s a steep learning curve with React Native (the best way to learn here is from others, watch out for some follow up posts with some technical insights) — e.g. how do I get buttery smooth animations — but if you’re starting a greenfield app any time soon which needs to run on iOS and Android, try it out.

This is where React Native comes in to it’s own — there are too many best bits to list in one post — but these go without saying:

The speed with which we can develop new features, test them & roll them out to production is crazy. Depending on the background of your development team they’ll get along with the release cycle of a React Native app differently (coming from a modern web background it feels very familiar), but with features such as hot reloading and the brilliant react-native-debugger, everyone can agree that testing changes is easier than ever.

Building on the developer productivity point, if we only make Javascript changes, we can push out an update to our users immediately via CodePush. CodePush is a fantastic tool from the folks at Microsoft which takes our feature release and testing process to the next level. In a similar way to feature flags, we can add entire components of new functionality with the push of a button.

Where would React Native be without the fantastic community? Chances are, someone out there has created an open source version of a component you need, and if you’re willing to give back to the community by helping to improve these components, then you get a lot out of the community. Being a video based app, we make heavy use of react-native-video and react-native-camera, both of which form just a tiny part of our use of the community resources.

We’re incredibly proud of what we’ve created so far, and owe a large portion of that to React Native. Workshop is now used to learn new skills in over 60 countries around the world and we’ve recently been featured by Apple.

A key part of solidifying knowledge, is reflecting on what you’ve learnt. Much like we reflect on how far we’ve come as a business, we encourage learners to reflect on how much they’ve learnt.

We’ll be following up with some posts that allow you to peak under the hood on our use of React Native, so keep an eye out if you’re interested in those.

You can find us on the App Store or Play Store or check out our website. If you’d like to find out more about how we’re working to improve education, get in touch.