Cross platform technologies have changed considerably. Should you even write an app using one of them in 2018? What tooling, processes and best practices can’t you live without? Which problems will you face and how will you overcome them? How would you organize your team and project? Join us as we share valuable lessons from the last two years of engineering the Covve Ionic/Angular cross platform app.
2. Who we are
Michael Asimakopoulos aka @masimplo
Lego master builder @Covve
Valadis Novakovits aka @el_nova
Code cleaner @Covve
3. What is a cross
platform app and why
do we care?
4.
5. Cross platform perception
Promised Greatness
Faster development
Single codebase
Single team / skill reuse
Lower cost of development
Easier talent sourcing
Jump on the latest tech train
More established familiar workflow
People think it’s crap
Javascript
Not as mature as native
Slower performance
Not “platform” experience
Not platform experts
6. Why Covve ditched the native
We built a native iOS app first
Android version needed as much effort
Covve is a thick, offline first client
Not happy with the app being a “separate project”
Wanted the Covve experience instead of the native experience
7. What was Ionic offering
Most mature technology at the time
Close partnership with Angular’s Google Team
The web was a more familiar platform
Top notch design and functionality
Vast collection of ready made components
Betting on the web getting better
8. How an Ionic app works today
Ionic is a toolset as well as a framework
Angular is the core framework with some
Ionic sugar on top
Many things like build are abstracted by Ionic
Native plugins are written platform specific
The next iteration is much better
9. Can’t live without :: Typescript
Strongly typed superset of JS
Ideal for programmers with OOP background
Linter on steroids
Type safety - intellisense
Clean code - readability
10. Can’t live without :: RxJS
Library for reactive programming using Observables
11. Can’t live without :: Immutability
Shared state can be a hairy business
Immutable libraries performance is not bad
Use it where it makes sense
Typescript might beg to differ
12. Can’t live without :: Testing
Improves quality - speed
Angular is obsessed with it
Fix a bug - write the test
Battle test frameworks & practices
More than 2500 tests
13. Can’t live without :: Chrome dev tools
Develop in Chrome
Debug in Chrome
Profile in Chrome
14. Challenges :: Webview
Your app renders on a webview. Chrome for Android, Safari for iOS.
Performance is not great if you are not careful.
DOM has to be kept small
Biggest issue today is rendering huge lists
15. Challenges :: Volatility
Evolving technologies
Framework fatigue within the same framework
Things are changing on a monthly basis.
You don’t have to follow, but the rewards are too big to
ignore.
Hopefully an equilibrium will be reached within the year
16. Challenges :: Cordova
Cordova is a great concept, not always greatly executed
Smallest common denominator sometimes not good enough
Plugin incompatibilities
Abandoned plugins
Versioning nightmares
Plugin development is considered a dark art
17. Challenges :: State persistence in a reactive world
What happens if you kill the app in the middle of a huge process?
18. Challenges :: Performance
You have to think about performance, it is not a given always
Be wary of the DOM and memory leaks
Don’t forget your data structures and algorithms
Use the event loop to your advantage
Use web/service workers when they make sense
Use chrome dev tools
19. Challenges :: Migrating from native
Users have to have a seamless transition
Plan ahead if you can
Don’t keep things client side only
Bake in a WOW factor to make up for any migration steps
21. State of things today
Ionic is doing what we hoped it would do all along
Browsers are getting better constantly (even safari)
PWAs are becoming a thing
Performance is getting up to par with native
Volatility is reducing
22. Did we make the right choice?
Deploy one codebase to two platforms ✔
Performance close to native ✔
Have a solid well tested codebase ✔
Project up to par with rest of Covve ✔
Faster feature time to market ✔
Utilize existing team ✔
Sourcing new talent ✔
Is it for me though?
23. Thank youQ&A
Don’t forget to install Covve and let us know what you think
All images are property of their respective owners