G.W.M

Find friends to game with

Could you introduce your app in a few sentences?

There’s a big gap in the gaming community when it comes to connecting with new friends, even though there are plenty of ways to communicate with already existing friends. GWM hopes to close that gap. Game With Me is a social app designed for gamers by gamers, it allows users to easily find people to play their favourite games with.

Users can sign up in seconds, set up their profile with basic information such as age, gender, location and also with what games they play on what platform and also list their gaming social accounts such as Steam, PSN or Xbox Live. All this information allows GWM to help you find the exact right person for you to game with. GWM is available on iOS, Android and Web and is a personal project of mine under the umbrella of my company. RA1N ENTERTAINMENT.

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

When I first created my app, I made it in Swift for iOS then after a while I made the Android version using Java and did my best to maintain both versions at the same time, which you can imagine for one person can be very difficult. After a while of this I started looking at cross platform technologies and tried Xamarin for a little bit but the SDKs I was using didn’t fully support it yet and I had to keep looking, that’s when I came across React Native.

The SDKs I wanted to use fully supported React Native and this was extremely important for me, apart from that RN allowed me to cut development time drastically and also meant I didn’t have to maintain two completely different codebases at the same time. It also let me create more beautiful UIs and better UX that I wasn’t able to make before, if you compare the screenshots of the old native iOS/Android versions to the current RN version the difference is staggering.

How did you transition to React Native?

The transition process consisted of converting my native iOS/Android apps into the singular React Native app, none of the code could be copy pasted but most of the structure and functionality was kept the same. Already having an existing app allowed me to not worry about the flows of the app or about what SDKs I was going to use, I just had to sit down and code until the RN version matched the native.

The transition also allowed me to add extra features that I couldn’t add before or would have been too much effort to implement both for iOS and Android in two different languages and frameworks. Before this I had only used JS for simple website stuff like buttons, so this was a completely new experience for me. NPM could be annoying at times but for the most part it was a great experience and easy to learn.

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

I’ve used Corona SDK and Xamarin (briefly) before. Corona SDK was the first tool I used to create apps with and it’s very beginner friendly since Lua is a simple language. I moved on from Corona SDK because I wanted to create more business faced applications instead of 2D games. I found Xamarin to be somewhat daunting and complex, but if you know C# and understand the framework, it’s a very powerful and great tool. I prefer React Native, I find it to be both beginner friendly and incredibly powerful, giving you the best of both worlds.

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

I didn’t find any performance issues when developing my app, everything runs smoothly.

How has adopting React Native affected developer productivity?

Adopting React Native drastically improved productivity and overall developer(my) happiness. I was able to do more quicker and better. My app's quality and functionality increased as soon as I switched to RN. Everything improved again when I was able to convert my app to TypeScript and adopt a MVP architecture.

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

IDEs:
I started with Atom then moved to VsCode for a while and I’m currently using WebStorm which is my favourite so far.

Libraries:
Backendless
Sendbird
React Native Typescript Transformer
React Native Device Info
React Native Dropdownalert
React Native Extended Stylesheet
React Native Image Picker
React Native Image Progress
React Native Linear Gradient
React Native Mail
React Native Progress
React Native Push Notification
React Native Vector Icons
React Navigation
React Redux
Redux

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

I started with a great video series by Spencer Carli and from there I was able to learn by looking at the official documentation.

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

There aren’t many things I don’t like but as with most things there’s plenty of room for improvement, the biggest point for me being better official documentation.

Anything else you would like to mention?

I started the app when I was 14 when my friend and I were in a Skype call and he said something along the lines of “I wish there was a way for me to find more people to play with” and after researching some different MBaaS companies I realised that I could actually bring the idea to life. Through this simple idea I was able to learn Swift, Java, iOS, Android, React, React Native, JavaScript, TypeScript, Angular2, NodeJS, numerous SDKs and libraries, so thanks to Luke for inspiring me during that Skype call.

The web version of the app was first made using Angular 2 and NodeJs and currently is a static React site. The Web version and mobile version's business logic code is the exact same, the only difference being view stuff.

People can get in touch with me at: cloudprogrammer@ra1n-entertainment.net