The big thing to do these days is to create apps. I remember 10 years ago when I was starting high school, everyone wanted to make apps because of Angry Birds. “True computer people” thought mobile apps were just another passing fad. But today, a smartphone has become a necessity and with it, mobile apps. I’ve only used React to make web apps and I have limited brainspace so I’d rather just stick with what I know about React (which isn’t much). But technology is always changing so maybe there’s something new out there worth learning.
It’s called React because it’s reactive, meaning the appearance of the page will change without manually refreshing it. Think of this like a mantra and repeat it before you go to bed every night, “Change in props to change state to trigger rerender.”
React Native is a little different than React, as it uses native components instead of web components. However, it still follows the React lifecycle and IOS/Android specifc lifecycles can get very convoluted. Since 2015, React Native has been used to created tons of mobile applications such as Facebook, Instagram, Pinterest and more. The neatest thing about React (and the other frameworks mentioned later) is that it uses a single codebase to make both IOS and Android apps. The old way involved making 2 sets of code for 1 app if they wanted the app to be available on both IOS and Android devices.
NativeScript is used to build native android and IOS mobile apps. You can use a combination of Angular and NativeScript, Vue.js and NativeScript, or JavaScript/TypeScript and NativeScript. Since I’m not all that familiar with Angular or Vue.js, I will be talking about NativeScript with JS/TS for now.
The NativeScript documentation has this handy graphic summarizing where the code lives.
There is a community initiative to make a hybrid of React and NativeScript.
Flutter launched in 2017 and is Google’s UI toolkit utilizing a language called Dart. While I’ve never heard of Dart before, there is decent, well organized documentation for it. Flutter has documentation specific for developers who have experience in React and who now want to learn Flutter.
Here’s a fairly recent article about Flutter developers.
According to the article the top 6 most difficult tasks were:
When giving a recommendation, it’s important to think about the needs of the user while also acknowledging certain technical restraints. CSExplore will most likely be accesed through a mobile device and is assumed to be an IOS/Android app. The problem with that is that users will have to download the app to access the contents if there is no mobile web version. There is also a learning curve, regardless of what framework we decide to go with (although there isn’t much of one if we go with React Native).
As a user, I adore Google apps UI. It’s simple, clean and functional (at least from the user standpoint). But trying to use Flutter is a huge gamble for our team. I’m pretty sure none of us has learned Dart so we’d all be starting at the beginning. Will it be worth it to learn about Dart and Flutter just to make a beautiful app? Having a beautiful app that’s also functional can help show these students what’s possible at (just) the college level and be a sort of representative of Computer Science.
The development team for CSExplore has experience with React so making an app with React Native shouldn’t be too much of a stretch. Using React Native is less of a gamble. There’s a huge community and this framework has been used to make TONS of apps already. While these apps are decent to use they’re not as asthetically pleasing as apps made with Flutter. But, they are still functional and most users can’t really tell (or don’t care about) subtle differences.
I’d say both React Native and Flutter are strong contenders and the next step is to read more documentation and then try to build sample apps using both frameworks, and then see what kind of issues come up.