CodingGardenCommunity / app-wiki

Getting Started and Contribution Guidelines for all Contributors
MIT License
32 stars 10 forks source link

Technologies and Frameworks: Frontend #3

Closed snordmann closed 5 years ago

snordmann commented 5 years ago

Hello together,

This issue is to hold a discussion about which frameworks to use. The scope of this issue is to decide on how the frontend (mobile app) works.


Native App Framework

Testing

To be quite honest, I have never written a mobile app before. I have no idea how to make itnegration or end-to-end tests with mobile apps. Does anyone know a framework for that?

Distribution

Here it is the same: I don't know how to get an app into the app store or if it could be automated in a CI/CD pipeline. We'll need to check how to do this.


Feel free to comment on this issue and start a discussion on which framework / program to use. If I missed any app just leave a comment, I will add it as soon as possible.

Cheers, Semjon

rabbitwerks commented 5 years ago

I would be interested in working with vuenative or what if we focused on a pwa using Vue.js?

How much experience coding in native does everyone have? Myself, none yet. But I have been working a lot with Vue overall.

thetornadotitan commented 5 years ago

Vue or React native seem to be best since they are two of the most popular frameworks.

PWA would be good if we wanted to do some kinda of pure JS implementation but if I download something from the app / play store I'd rather being downloading an app rather than a bookmark to a special mobile webpage.

With a normal app we can have some offline features implemented in the app whereas I'm not so sure that is the case with a PWA.

Additionally :

https://medium.com/@deepusnath/4-points-to-keep-in-mind-before-introducing-progressive-web-apps-pwa-to-your-team-8dc66bcf6011 this is from Mar 24, 2017 so it may no longer be true

  1. Challenges in PWA

There are some challenges in PWA which have to be considered while choosing it.

a) Cross Browser Support : While Chrome, Opera, and Samsung’s android browser supports PWA, IE, Edge and Safari are yet to extend their support.

b) Limited Functionality: PWA doesn’t have support for any hardware that is not supported by HTML5

c) Limited Legitimacy: As there is no central download Store for PWA, they lack in giving a sense of legitimacy and confidence which is usually given by native apps from Play Store/App Store.

d) Cross Application Login Support : Native apps have the capability to talk to other apps and authenticate logins (Facebook, Twitter, Google). As a webpage, PWA doesn’t have the capability to communicate with other apps installed.

ohmyshell commented 5 years ago

@thetornadotitan I agree, however there's not much we can do, in the case of safari and edge, As for the other points...solid. Kudos for the research.

rabbitwerks commented 5 years ago

Yeah those are some good points. I spent the day combing through the VueNative docs and I'm behind that framework for sure. It looks like it will operate much like vue.js but for mobile apps. I would be most comfortable using this for the frontend.

Thoughts on VueNative?

ohmyshell commented 5 years ago

@Sharpie360 I'm with it. But that's just because I'm comfortable with vue. As for performance and functionality, I haven't done much research.

rabbitwerks commented 5 years ago

@mjmardini I can look into it was well, ime vue has always been very performant. Though again, everything I've done is web based. I assume the mobile app translation will be comparable to the web based performance.

Another point is that we should use a framework that is familiar to the majority of the team as well. Twice the work if we all end up having to learn a new tech. Just a thought.

vrumger commented 5 years ago

To me, it doesn't matter as they would all be a learning experience.

jaaneh commented 5 years ago

I'm in the same boat as YouTwitFace. I have little to no experience with any frameworks. I've done a small amount of testing with React.js, but it will all be a learning experience for me also.

peoray commented 5 years ago

@Sharpie360 I agree, I went through the docs today. it's interesting, cause, in the end, it compiles to React Native. But for simplicity, you write your code as you'd a normal Vue application.

As per testing, I don't have any experience in this aspect, willing to learn.

aronhoyer commented 5 years ago

This app was supposed to be native, no? If that's the case, I'm rooting for React Native. Vue Native… I dunno. Two compilations? Vue Native > React Native > Java/Swift? Seems like one step too many for me. Thoughts?

For any PWA, React and Vue is all the same to me. 😄

rabbitwerks commented 5 years ago

@aronhoyer yeah that is true that it compiles down to react native, although my thoughts are simply that, correct me if I'm wrong but the majority of our contributors so far are more comfortable with the Vue syntax.

That being said, I think since it does compile down to react it would be beneficial to have contributors from both camps so we have all our ends covered properly.

Thoughts?

ohmyshell commented 5 years ago

@aronhoyer would there be any performance implications if we compiled twice?

@Sharpie360 That would be great, however we don't know how many react native people we have. If there's not too many they might be overworked.

aronhoyer commented 5 years ago

@mjmardini Yeah, that's what i was wondering about. I don't think there would be performance implications at run time, but—without any experience with Vue Native—I imagine the compilation, during development, to be slower.

Anyone with experience here willing to chime in?

joshuaferr1s commented 5 years ago

As someone with exclusively a Vue background I have watched a video or two and read some docs on react-native and the learning curve doesn't seem all that steep. And at least at this point in their existence I would imagine that using react-native would be beneficial to cut out the extra step in compilation (since it probably adds to size of the package?)

ohmyshell commented 5 years ago

Shall we vote?

rabbitwerks commented 5 years ago

I think we should do a bit of research as far as perf before we jump to a vote. I think that it being in Vue would be the most approachable for the target audience of the Coding Garden, since that is what CJ tends to use, well at least before his new gig. But either way, the simple fact that we as a collective have more experience in Vue based code, than something less familiar like React.

Do we know if the same performance issues and catches apply for native apps that apply for running in a browser? Since the app code will live on the device, i dont think init load times or anything is affected by having to pull resources or compile down to anything else.

Ill spend the next couple hours looking into it.

@aronhoyer yeah i guess i assumed that you would rally for react based on your comment lol 😜

w3cj commented 5 years ago

I did some research and I vote Vue-Native with Native Base components. I got this sample project up and running in an ios simulator with no issues: https://github.com/GeekyAnts/KitchenSink-Vue-Native

Anyone that has questions about performance / compilation, give it a try, its pretty seamless. It also integrates with Expo so you can debug on a real device without having to install anything.

Also, Native Base is pretty sweet. The biggest issue I had with raw react native was styling / components. Native Base includes default styles and looks native on whatever platform it is running on. https://nativebase.io/

A minor concern with Vue Native is by default it is not using the latest version of react native, but this issue shows how to enable that: https://github.com/GeekyAnts/vue-native-core/issues/91

w3cj commented 5 years ago

Another reason I'm leaning towards something react-native based, is Microsoft App Center supports Code Push which allows us to send app updates to users without having to re-submit to the app stores. Each incremental change could be sent to users instantly.

https://docs.microsoft.com/en-us/appcenter/distribution/codepush/

rabbitwerks commented 5 years ago

@w3cj yeah I agree. I've been reading through examples and the docs and i feel like vue native is a great choice to use. Very easy and straight forward. Plus it's an up and coming project so it will be getting new stuff added all the time :)

joshuaferr1s commented 5 years ago

But do we want to be limited to up and coming features or use the established react-native? It would still have nativebase ability

joshuaferr1s commented 5 years ago

Here is a nice video which I find covers react-native pretty well. As a 100% Vue user this doesn't look bad at all. https://youtu.be/whZNYPldMEY

rabbitwerks commented 5 years ago

@joshuaferr1s yeah that could be the case, but we would probably lose that time from everyone having to get up to speed with react in general at that point.

rabbitwerks commented 5 years ago

Frontend Tech Winner: Vue-Native

Alright folks! it looks like the results are in and we have our tech stack chosen. Big tahnks to all that threw in their thoughts and opinions! If you have any questions or want to check out the results, visit the discord channel. /polls