Capacitor :
from PWA to native app in 5 minutes Horacio Gonzalez @LostInBrittany
1 @LostInBrittany #Capacitor @LostInBrittany #Capacitor#DevoxxFr #DevoxxFr
Slide 2
Who am I? Introducing myself and introducing OVH
@LostInBrittany #Capacitor @LostInBrittany #Capacitor#DevoxxFr #DevoxxFr
Slide 3
Horacio Gonzalez @LostInBrittany Spaniard lost in Brittany, developer, dreamer and all-around geek
Flutter
@LostInBrittany #Capacitor #DevoxxFr
Slide 4
OVH : Key Figures 1.3M Customers worldwide in 138 Countries 1.5 Billions euros investment over five years 30 Datacenters (growing) 350k Dedicated Servers 200k Private cloud VMs running 650k Public cloud Instances created in a month 15TB bandwidth capacity 35 Points of presence 4TB Anti DDoS capacity Hosting capacity : 1.3M Physical Servers
@LostInBrittany #Capacitor #DevoxxFr
2 500 Employees in 19 countries
20 Years of Innovation
Slide 5
OVH: A Global Leader on Cloud 200k Private cloud VMs running
1
Dedicated IaaS Europe
2018 27 Datacenters Own 15 Tbps
Hosting capacity : 1.3M Physical Servers 360k Servers already deployed
@LostInBrittany #Capacitor #DevoxxFr
Network with 35 PoPs
1.3M Customers in 138 Countries
2020 50 Datacenters
Slide 6
Ranking & Recognition
1st European Cloud Provider* 1st Hosting provider in Europe 1st Provider Microsoft Exchange Certified vCloud Datacenter Certified Kubernetes platform (CNCF) Vmware Global Service Provider 2013-2016 Veeam Best Cloud Partner of the year (2018) * Netcraft 2017 -
@LostInBrittany #Capacitor #DevoxxFr
Slide 7
OVH: Our solutions
Cloud
Web Hosting
Mobile Hosting
Telecom
VPS
Containers ▪ Dedicated Server
Domain names
VoIP
Public Cloud
Compute ▪ Data Storage
Email
SMS/Fax
Private Cloud
▪ Network and Database
CDN
Virtual desktop
Serveur dédié
Security Object Storage
Web hosting
Cloud HubiC Over theBox
▪ Licences
Cloud Desktop
Securities
MS Office
Hybrid Cloud
Messaging
MS solutions
@LostInBrittany #Capacitor #DevoxxFr
Slide 8
Capacitor The Native Bridge for Cross-Platform Web Apps
@LostInBrittany #Capacitor @LostInBrittany #Capacitor#DevoxxFr #DevoxxFr
Slide 9
What’s Capacitor?
Cross-platform app runtime making it easy to build web apps that run natively on iOS, Android and web @LostInBrittany #Capacitor #DevoxxFr
Slide 10
Spiritual heir to Apache Cordova Evolution, not revolution
@LostInBrittany #Capacitor #DevoxxFr
Slide 11
Spiritual heir to Apache Cordova Support for many Cordova plugins
@LostInBrittany #Capacitor #DevoxxFr
Slide 12
Extensible and evolutif ● Close to web-standards ● Plugin API ○ Swift on iOS ○ Java on Android ○ JavaScript for the web
@LostInBrittany #Capacitor #DevoxxFr
Slide 13
Developer Friendly
Easy to get started Works on any framework @LostInBrittany #Capacitor #DevoxxFr
Slide 14
You still need the platform tools
Android Studio and/or Xcode to build the native packages @LostInBrittany #Capacitor #DevoxxFr
Slide 15
Weren’t you a PWA advocate? And you are also championing Flutter! Where is the coherence, guy?
@LostInBrittany #Capacitor @LostInBrittany #Capacitor#DevoxxFr #DevoxxFr
Slide 16
Well, I am a PWA advocate indeed
I rooted for PWA before it was fancy… @LostInBrittany #Capacitor #DevoxxFr
Slide 17
And I know the numbers…
Apps drive engagement, web drive visitors… @LostInBrittany #Capacitor #DevoxxFr
20 biggest apps account for 80% of user time
Slide 18
An engineer role is to choose
The right tool for the right problem @LostInBrittany #Capacitor #DevoxxFr
Slide 19
If you need super fancy UX 60 FPS, slick animations, an experience more than an app
Then go full native
And BTW, do it in Flutter @LostInBrittany #Capacitor #DevoxxFr
Slide 20
For more normal needs
A well done PWA is simply enough @LostInBrittany #Capacitor #DevoxxFr
Slide 21
But if you need to be in the store?
For many reasons, not all objective… @LostInBrittany #Capacitor #DevoxxFr
Slide 22
Hybrid PWA apps
The best of two worlds @LostInBrittany #Capacitor #DevoxxFr
Slide 23
Capacitor take your PWA to the store
In a simple, quick and painless way @LostInBrittany #Capacitor #DevoxxFr
Slide 24
First steps testing Capacitor Adding Capacitor to an existing app
@LostInBrittany #Capacitor @LostInBrittany #Capacitor#DevoxxFr #DevoxxFr
Slide 25
From web to native
Giving superpowers to you webapp @LostInBrittany #Capacitor #DevoxxFr
Slide 26
Testing with a real webapp
Warp 10 Photon - IDE for Warp 10 @LostInBrittany #Capacitor #DevoxxFr
Slide 27
Step 1 - Add Capacitor to the app ● Install Capacitor cd my-app npm install —save @capacitor/core @capacitor/cli ● Init Capacitor npx c ● Add Android and/or iOS and/or Electron support npx cap add android @LostInBrittany #Capacitor #DevoxxFr
Slide 28
Step 2 - Copy to Android ● Edit capacitor.config.json to choose the built folder ● Copy the built resources to Android npx cap copy ● Launch Android Studio npx cap open android
@LostInBrittany #Capacitor #DevoxxFr
Slide 29
Step 3 - Test
And our webapp is now a native app @LostInBrittany #Capacitor #DevoxxFr
The Capacitor example app Nice to explore Capacitor
@LostInBrittany #Capacitor @LostInBrittany #Capacitor#DevoxxFr #DevoxxFr
Slide 32
Made by the Ionic team To replace Cordova in Ionic 4
@LostInBrittany #Capacitor #DevoxxFr
Slide 33
Official example built on Ionic
Showcasing Ionic 4 @LostInBrittany #Capacitor #DevoxxFr
Slide 34
Let’s try the official example
@LostInBrittany #Capacitor #DevoxxFr
Slide 35
Using directly the Capacitor repository
Custom built project, not a production app @capacitor/core and native libs loaded from local directory @LostInBrittany #Capacitor #DevoxxFr
Slide 36
Let’s build the Android version
Some pre-building and building needed… @LostInBrittany #Capacitor #DevoxxFr
Slide 37
We now have an Android project
@LostInBrittany #Capacitor #DevoxxFr
Slide 38
Easy and painless Android app
@LostInBrittany #Capacitor #DevoxxFr
Slide 39
And in PWA mode?
Some elements haven’t web implementation (yet?) @LostInBrittany #Capacitor #DevoxxFr
Slide 40
But it still works!
It fails gracefully for unsupported plugins @LostInBrittany #Capacitor #DevoxxFr
Capacitor without Ionic
I want to use it Capacitor with my own toolset @LostInBrittany #Capacitor #DevoxxFr
Slide 44
I’m a Web Components guy
And I speak a lot about Polymer @LostInBrittany #Capacitor #DevoxxFr
Slide 45
But Polymer is in a transition phase
Polymer 2.x : bower based Polymer 3: npm based but recommended only for legacy LitElement: the new, lightweight, blazing fast library by Polymer team @LostInBrittany #Capacitor #DevoxxFr
Slide 46
So what to use?
Stencil, of course! The magical, reusable web component compiler @LostInBrittany #Capacitor #DevoxxFr
Slide 47
Let’s begin with a simple example
A Camera app, working well on web mode Using standard Media Capture and Streams API @LostInBrittany #Capacitor #DevoxxFr
Slide 48
Let’s charge it with Capacitor
We want the same behavior But now in Android, iOS, Electron AND web @LostInBrittany #Capacitor #DevoxxFr
Slide 49
And does it work?
Yes it does… in native mode only! @LostInBrittany #Capacitor #DevoxxFr
Slide 50
But not in PWA mode :(
And a big question: why? @LostInBrittany #Capacitor #DevoxxFr
Slide 51
Well, let’s spot the differences… Searching on the example code
hmmmm, @ionic/pwa-elements, what’s that?
@LostInBrittany #Capacitor #DevoxxFr
Slide 52
@ionic/pwa-elements
Web-based alternatives for some Capacitor plugins @LostInBrittany #Capacitor #DevoxxFr
Slide 53
Adding @ionic/pwa-elements Simply install them: npm install @ionic/pwa-elements
And then import them: import ‘@ionic/pwa-elements’;
@LostInBrittany #Capacitor #DevoxxFr
Slide 54
And then…
It’s a kind of magic! @LostInBrittany #Capacitor #DevoxxFr
Slide 55
On Android and Web
@LostInBrittany #Capacitor #DevoxxFr