TL;DR; No new framework announced, go home kiddo… Oh Wait Nope! Progressive Web Apps happens to be the new hotness.
Christian Heilmann (video, slides, twitter)
Progressive Web Apps (PWA) — simply — are just websites built to be more like native apps. It’s not a new concept, but so far we were failing. Lack of native capabilities forced workarounds. Hardware and JS engines were not as fast as today. Everyone had to figure out their own definition of “Web App”.
Consider PWA as a set of principles to follow during building an app. Browsers already implement mechanisms that help to achieve them.
“Progressive” comes from progressive enhancement. Once your users have more superpowers, your app should give them more possibilities. Without forgetting rest of users. We’re talking here about network capabilities, offline mode, screen size, budget devices.
Tomasz Ducin (slides, twitter)
Promises and generators already provide the way for representing asynchronous functions in a synchronous manner. async/await
functions are introduced as the simplification of this concept.
Promises themselves have limitations like being greedy and accessing a value from the previous step only. With complex calculations, you easily fall into hell the same as callbacks.
async/await
will be included in ES2017 (supported in all major browsers)for-await
introduces lazy evaluation on collections, it’s not yet accepted$q
)await
is a footgun 🔫.Kacper Sokołowski (slides, demo, twitter)
How to implement PWA requirement — Network independence? Cache components necessary to run your application. Well-known options are local storage, cookies, indexedDB and now… service workers.
fetch()
request (example from demo)This presentation focuses on handling offline state, but very good use case are notifications and background sync.
Service worker intercepts calls to server and restores data from cache if needed
A story behind Pudelek.pl app: improving legacy project on three platforms (iOS, Android, Web) without rewriting everything from scratch. How? React Native can be built on top of your existing application as a dependency.
There is no WebView. Means no HTML or CSS. Everything is compiled to native components by series of compilation steps. When you use fetch().then()
API, it’s converted to appropriate HTTP Client in Java or iOS.
They encouraged native developers to write JavaScript, however that didn’t fit well. Technologically they used Flow type to keep code more familiar to Kotlin and Swift.
Business logic reused, views remain platform-specific
The success of Pudelek app is considered in following aspects:
Native developers are still needed. Deployments, platform-specific views and things that React Native doesn’t support. Productivity is better but not like 3 times better.
Michał Nowak (twitter)
Michał reminds about distinguishing important things in Software Developer career. He points that with a good chance, he can guess the content of CV based on birth date of an applicant.
10 years ago 2007, Web Developers were using flash. You know the story. Can you predict what will happen in 2027?
That being said, you can’t predict how your core life values will evolve. Having son? Not yet? Enjoy your time then.
Maxim Salnikov (slides, twitter)
How to answer a question: We need a mobile app?
Maxim showed lots of statistics how mobile web is growing and overcoming desktop in lots of different measures. It is correlated with demand for mobile app developers also.
As Web developers, we had multiple tries to involve in mobile world — but failed as HTML5 apps looked crappy and were unbelievably slow
Progressive Web Apps are green octagon and meant to be “the next big thing”, I was especially interested in traits for not only users but business.
If it’s framework agnostic, how to actually implement it? Look for inspiration at HackerNews PWA — A spiritual successor to TodoMVC.
What about other popular options? I highly recommend slides. Maxim covered in great details differences between Ionic, NativeScript, React Native and PWA ideology.
Simona Cotin (twitter)
.do(x => console.log(x))
.I haven’t taken notes here. Alex has given a demo on how Firefox DevTools tries to catch up Chrome. Starting with simple tricks in Inspector and Network tab, configuration to more advanced performance analysis.
Although I wasn’t convinced to use Fx DevTools over Chrome’s, I strongly support Firefox in that competition.
Shmuela Jacobs (slides, twitter)
Where should token be stored?Cookies are preferred, but remember to secure from CSRF. Local storage is vulnerable to XSS attacks and forces using JavaScript (and setting additional header)
At this point, conference ended.Give some ❤ if you like notes and help other people find it.