SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Electron
Developing Desktop
Applications using HTML, CSS
and Javascript
Hello!I’m Dmytro Vasin
I ‘m a Ruby on Rails developer at Anadea.inc
You can find me: @DmytroVasin
Electron:
Build amazing, cross
platform desktop
apps in one codebase,
for any platform, with
the modern web stack.
Place your screenshot here
Who is this presentation for?
× Non-technical users
× People interested in Electron
× People who want to Show & Sell a platform
× Javascript enthusiasts
Who already works with Electron?
What will we discuss?
× What is Electron
× Why do I need it?
× How Electron works
× Perks
× Known problems
× Conclusions
Cross Platform
Compatible with Mac, Windows,
and Linux, Electron apps build
and run on three platforms.
What is Electron?
Web Technologies
Electron uses Chromium and
Node.js so you can build your
app with HTML, CSS, and
JavaScript.
Open Source
Electron is an open source
project maintained by GitHub
and an active community of
contributors
#
App Based on Electron: Atom
#
App Based on Electron: Slack
#
App Based on Electron: visual studio Code
#
App Based on Electron: Postman
#
App Based on Electron: Github Desktop
#
App Based on Electron: Nylas n1
#
App Based on Electron: Git Kraken
#
App Based on Electron: Basecamp 3
#
App Based on Electron: wordpress
× Offline (State, Settings)
× Access to FileSystem ( Store Files )
× Native Access ( Printer & Devices )
× Native Experience ( Dock, Toolbar, Menu bar )
× Data Storage ( data store, SQLite, N1 )
× SaaS
× Fill natural for users
why desktop?
× Work with files
× In Tray-apps
× “Manager” apps (Time, Tracker, Pomodoro)
× Audio/Video players ( Player, Dropbox)
× Email Client
× Social Chats ( API )
× Calendars
× Specific Ideas
What can we do with electron?
What SHOUld we not do with Electron?
× Apps on Specific Versions of OS
× Browser-like Apps
× Apps that use native a lot
× Web is better
for UI
for three systems
Inside Electron:
for filesystem
and networks
× BrowserWindow (UI)
× Any Number of processes
× Can be hidden
× Node-like (No UI)
× Life Cycle ( open/close )
× OS integration
× Create Renderer Processes
Renderer Process:
is responsible for running the
user-interface of your app
Main Process:
is responsible for creating and
managing the BrowserWindow
and various application events
(lifecycle).
Based on two type of processes:
How IT WORKS? ( Basic Concepts )
Main Process: Renderer Process:
You already know that!
Question
How do they communicate
with each other?
Inter-process communication
IPC:
IPC
Main Process
Renderer Process
Renderer Process
BrowserWindow
BrowserWindow
IPC implementation:
Node like: ( NPM & Node required )
- mkdir demo && cd demo
- npm init
- npm install electron --save-dev
- touch main.js index.html
First APP:
HELLO, WORLD!
Place your screenshot here
Run APP:
> electron .
Web Nature:
× HTML + CSS + JS
× Only Chrome. No Safari, No IE
× Chrome Devtools (*)
× Web as UI ( 20 years * )
× Libs - Isotope, Highcharts
× Rapid feature Development
Power of electron apps ( Perks )
Node:
× NPM
× Native packages
Web Nature:
× HTML + CSS + JS
× Only Chrome. No Safari, No IE
× Chrome Devtools (*)
× Web as UI ( 20 years * )
× Libs - Isotope, Highcharts
× Rapid feature Development
Power of electron apps ( Perks )
Build your idea NOW!
Node:
× NPM
× Native packages
Web Nature:
× HTML + CSS + JS
× Only Chrome. No Safari, No IE
× Chrome Devtools (*)
× Web as UI ( 20 years * )
× Libs - Isotope, Highcharts
× Rapid feature Development
Power of electron apps ( Perks )
Node:
× NPM
× Native packages (Slack)
Web Nature:
× HTML + CSS + JS
× Only Chrome. No Safari, No IE
× Chrome Devtools (*)
× Web as UI ( 20 years * )
× Libs - Isotope, Highcharts
× Rapid feature Development
Power of electron apps ( Perks )
Node:
× NPM
× Native packages
Web Nature:
× HTML + CSS + JS
× Only Chrome. No Safari, No IE
× Chrome Devtools (*)
× Web as UI ( 20 years * )
× Libs - Isotope, Highcharts
× Rapid feature Development
Power of electron apps ( Perks )
Common:
× JS language and community (*)
× Same codebase for all platforms.
× Cross-platform ( Node + Chrome )
× Cost of development
× Free
× No C++, No Swift, No C#
Modern stack:
× React (Angular )
× TypeScript ( FLOW )
× ASYNC / AWAIT
× ES2016 ( No babel )
× Forget about Polyfills
Power of electron apps ( Bonus)
Only modern stack:
× React (Angular )
× TypeScript ( FLOW )
× ASYNC / AWAIT
× ES2016 ( No babel )
× Forget about Polyfills
Power of electron apps ( moreover )
Open Source:
× Developed & Supported
with ❤ by GitHub
× Node
× Chromium
Latest features:
× Detect Location
× Webcam
× WebRTC
× CSS custom properties
× CSS Grid
Only modern stack:
× React (Angular )
× TypeScript ( FLOW )
× ASYNC / AWAIT
× ES2016 ( No babel )
× Forget about Polyfills
Power of electron apps ( moreover )
Open Source:
× Developed & Supported
with ❤ by GitHub
× Node
× Chromium
Latest features:
× Detect Location
× Webcam
× WebRTC
× CSS custom properties
× CSS Grid
Only modern stack:
× React (Angular )
× TypeScript ( FLOW )
× ASYNC / AWAIT
× ES2016 ( No babel )
× Forget about Polyfills
Power of electron apps ( moreover )
Open Source:
× Developed & Supported
with ❤ by GitHub
× Node
× Chromium
Electron features
× Installer
× Auto updater
× Packaging
× Crash reporting
× Mac and Win store
× Devtron for Debug
Sounds like
magic?
Known problems:
Trade offs:
× Node + Chrome ( 20 million LOC )
× Project Weight ( 100mb )
× Render process spawn thread ( will kill memory )
× Boot Time
× Not all platforms have the same possibilities
× Code Protection
× Lack of Framework features
× Node packages
× Cross platform: heaven or hell?
× Not so perfect ( Autoupdater, Packager )
Known problems:
Trade off:
× Node + Chrome ( 20 million LOC )
× Project Weight ( 100mb )
× Render process spawn thread ( Will kill memory )
× Boot Time
× Not same ability for all platforms
× Code Protection
× Lack of Framework features
× Node packages
× Cross platform: goodness or hell?
× Not so perfect ( Autoupdater, Packager )
Known problems:
Trade off:
× Node + Chrome ( 20 million LOC )
× Project Weight ( 100mb )
× Render process spawn thread ( Will kill memory )
× Boot Time
× Not same ability for all platforms
× Code Protection
× Lack of Framework features
× Node packages
× Cross platform: goodness or hell?
× Not so perfect ( Autoupdater, Packager )
Known problems:
Trade off:
× Node + Chrome ( 20 million LOC )
× Project Weight ( 100mb )
× Render process spawn thread ( Will kill memory )
× Boot Time
× Not same ability for all platforms
× Code Protection
× Lack of Framework features
× Node packages
× Cross platform: goodness or hell?
× Not so perfect ( Autoupdater, Packager )
Are these problems with Electron?
× Is it an electron issue?
× UI work in browser!
× Async Programming
× Offload computationally-intensive work
× Don’t Block the UI Thread OR the Main Thread
× Use Chrome Devtools ( Profiling )
× Bad Code.
Conclusion: is Electron a good choice?
It Depends!
Main
Makes desktop development fun
Makes desktop development fast
It works for us
Links:
https://electronjs.org/docs
https://hackernoon.com/electron-the-bad-parts-2b710c491547
https://github.com/sindresorhus/awesome-electron
https://github.com/electron/electron/blob/master/docs/tutorial/quick-start.md
http://photonkit.com/components/
THANKS!
Any questions?
You can find me @DmytroVasin

Mais conteúdo relacionado

Semelhante a Electron

44 con slides (1)
44 con slides (1)44 con slides (1)
44 con slides (1)
geeksec80
 
ChrisSchilling_SideProjects
ChrisSchilling_SideProjectsChrisSchilling_SideProjects
ChrisSchilling_SideProjects
Chris Schilling
 
Designing A Project Using Java Programming
Designing A Project Using Java ProgrammingDesigning A Project Using Java Programming
Designing A Project Using Java Programming
Katy Allen
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
Simon Willison
 

Semelhante a Electron (20)

44 con slides (1)
44 con slides (1)44 con slides (1)
44 con slides (1)
 
Once upon a time, there were css, js and server-side rendering
Once upon a time, there were css, js and server-side renderingOnce upon a time, there were css, js and server-side rendering
Once upon a time, there were css, js and server-side rendering
 
Treinamento frontend
Treinamento frontendTreinamento frontend
Treinamento frontend
 
Node.js meetup 17.05.2017 ember.js - escape the javascript fatigue
Node.js meetup 17.05.2017   ember.js - escape the javascript fatigueNode.js meetup 17.05.2017   ember.js - escape the javascript fatigue
Node.js meetup 17.05.2017 ember.js - escape the javascript fatigue
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3
 
The Next Leap in JavaScript Performance
The Next Leap in JavaScript PerformanceThe Next Leap in JavaScript Performance
The Next Leap in JavaScript Performance
 
Building an EmPyre with Python
Building an EmPyre with PythonBuilding an EmPyre with Python
Building an EmPyre with Python
 
ChrisSchilling_SideProjects
ChrisSchilling_SideProjectsChrisSchilling_SideProjects
ChrisSchilling_SideProjects
 
WebAssembly: In a Nutshell
WebAssembly: In a NutshellWebAssembly: In a Nutshell
WebAssembly: In a Nutshell
 
Bringing Javascript to the Desktop with Electron
Bringing Javascript to the Desktop with ElectronBringing Javascript to the Desktop with Electron
Bringing Javascript to the Desktop with Electron
 
Designing A Project Using Java Programming
Designing A Project Using Java ProgrammingDesigning A Project Using Java Programming
Designing A Project Using Java Programming
 
Mobile native-hacks
Mobile native-hacksMobile native-hacks
Mobile native-hacks
 
Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)
 
44CON 2013 - Browser bug hunting - Memoirs of a last man standing - Atte Kett...
44CON 2013 - Browser bug hunting - Memoirs of a last man standing - Atte Kett...44CON 2013 - Browser bug hunting - Memoirs of a last man standing - Atte Kett...
44CON 2013 - Browser bug hunting - Memoirs of a last man standing - Atte Kett...
 
Node azure
Node azureNode azure
Node azure
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
 
Writing native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScriptWriting native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScript
 
webOS App by Example: Sorting Thoughts
webOS App by Example: Sorting ThoughtswebOS App by Example: Sorting Thoughts
webOS App by Example: Sorting Thoughts
 
Electron
ElectronElectron
Electron
 
Powerful tools for building web solutions
Powerful tools for building web solutionsPowerful tools for building web solutions
Powerful tools for building web solutions
 

Mais de ITCP Community

Финансовое планирование бюджета IT-компании
Финансовое планирование бюджета IT-компанииФинансовое планирование бюджета IT-компании
Финансовое планирование бюджета IT-компании
ITCP Community
 
Клиент всегда прав?
Клиент всегда прав?Клиент всегда прав?
Клиент всегда прав?
ITCP Community
 
Kонтент решает все (почти)
Kонтент решает все (почти) Kонтент решает все (почти)
Kонтент решает все (почти)
ITCP Community
 

Mais de ITCP Community (20)

"Best Practices for Designing a Pragmatic RESTful API
 "Best Practices for Designing a Pragmatic RESTful API "Best Practices for Designing a Pragmatic RESTful API
"Best Practices for Designing a Pragmatic RESTful API
 
"Generics+Decodable serving your API-client"
"Generics+Decodable serving your API-client""Generics+Decodable serving your API-client"
"Generics+Decodable serving your API-client"
 
"You shall not pass : anti-debug methodics"
"You shall not pass : anti-debug methodics""You shall not pass : anti-debug methodics"
"You shall not pass : anti-debug methodics"
 
Парадигмы программирования
Парадигмы программированияПарадигмы программирования
Парадигмы программирования
 
Лайфхаки группового собеседования
Лайфхаки группового собеседованияЛайфхаки группового собеседования
Лайфхаки группового собеседования
 
Бла бла-бла поговорить или структура “неструктурированного” интервью
Бла бла-бла поговорить или структура “неструктурированного” интервьюБла бла-бла поговорить или структура “неструктурированного” интервью
Бла бла-бла поговорить или структура “неструктурированного” интервью
 
Метрики
МетрикиМетрики
Метрики
 
Не все святой скрам
Не все святой скрамНе все святой скрам
Не все святой скрам
 
Самоорганизующиеся команды
Самоорганизующиеся командыСамоорганизующиеся команды
Самоорганизующиеся команды
 
Управление содержанием проекта
Управление содержанием проектаУправление содержанием проекта
Управление содержанием проекта
 
Таргетированная реклама в Facebook
Таргетированная реклама в FacebookТаргетированная реклама в Facebook
Таргетированная реклама в Facebook
 
Финансовое планирование бюджета IT-компании
Финансовое планирование бюджета IT-компанииФинансовое планирование бюджета IT-компании
Финансовое планирование бюджета IT-компании
 
Вам упаковать?
Вам упаковать?Вам упаковать?
Вам упаковать?
 
Клиент всегда прав?
Клиент всегда прав?Клиент всегда прав?
Клиент всегда прав?
 
Общение с клиентами на автопилоте
Общение с клиентами на автопилоте Общение с клиентами на автопилоте
Общение с клиентами на автопилоте
 
Kонтент решает все (почти)
Kонтент решает все (почти) Kонтент решает все (почти)
Kонтент решает все (почти)
 
It is a Test
It is a TestIt is a Test
It is a Test
 
Продукт с нуля
Продукт с нуляПродукт с нуля
Продукт с нуля
 
Storytelling in the Digital Age
Storytelling in the Digital AgeStorytelling in the Digital Age
Storytelling in the Digital Age
 
Место карьеры в мире дизайна
Место карьеры в мире дизайнаМесто карьеры в мире дизайна
Место карьеры в мире дизайна
 

Último

Último (20)

The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Your enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jYour enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4j
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 

Electron

  • 2. Hello!I’m Dmytro Vasin I ‘m a Ruby on Rails developer at Anadea.inc You can find me: @DmytroVasin
  • 3. Electron: Build amazing, cross platform desktop apps in one codebase, for any platform, with the modern web stack. Place your screenshot here
  • 4. Who is this presentation for? × Non-technical users × People interested in Electron × People who want to Show & Sell a platform × Javascript enthusiasts Who already works with Electron?
  • 5. What will we discuss? × What is Electron × Why do I need it? × How Electron works × Perks × Known problems × Conclusions
  • 6. Cross Platform Compatible with Mac, Windows, and Linux, Electron apps build and run on three platforms. What is Electron? Web Technologies Electron uses Chromium and Node.js so you can build your app with HTML, CSS, and JavaScript. Open Source Electron is an open source project maintained by GitHub and an active community of contributors
  • 7. # App Based on Electron: Atom
  • 8. # App Based on Electron: Slack
  • 9. # App Based on Electron: visual studio Code
  • 10. # App Based on Electron: Postman
  • 11. # App Based on Electron: Github Desktop
  • 12. # App Based on Electron: Nylas n1
  • 13. # App Based on Electron: Git Kraken
  • 14. # App Based on Electron: Basecamp 3
  • 15. # App Based on Electron: wordpress
  • 16. × Offline (State, Settings) × Access to FileSystem ( Store Files ) × Native Access ( Printer & Devices ) × Native Experience ( Dock, Toolbar, Menu bar ) × Data Storage ( data store, SQLite, N1 ) × SaaS × Fill natural for users why desktop?
  • 17. × Work with files × In Tray-apps × “Manager” apps (Time, Tracker, Pomodoro) × Audio/Video players ( Player, Dropbox) × Email Client × Social Chats ( API ) × Calendars × Specific Ideas What can we do with electron?
  • 18. What SHOUld we not do with Electron? × Apps on Specific Versions of OS × Browser-like Apps × Apps that use native a lot × Web is better
  • 19. for UI for three systems Inside Electron: for filesystem and networks
  • 20. × BrowserWindow (UI) × Any Number of processes × Can be hidden × Node-like (No UI) × Life Cycle ( open/close ) × OS integration × Create Renderer Processes Renderer Process: is responsible for running the user-interface of your app Main Process: is responsible for creating and managing the BrowserWindow and various application events (lifecycle). Based on two type of processes: How IT WORKS? ( Basic Concepts )
  • 21.
  • 22. Main Process: Renderer Process: You already know that!
  • 23. Question How do they communicate with each other?
  • 24. Inter-process communication IPC: IPC Main Process Renderer Process Renderer Process BrowserWindow BrowserWindow
  • 26. Node like: ( NPM & Node required ) - mkdir demo && cd demo - npm init - npm install electron --save-dev - touch main.js index.html First APP: HELLO, WORLD!
  • 29.
  • 30. Web Nature: × HTML + CSS + JS × Only Chrome. No Safari, No IE × Chrome Devtools (*) × Web as UI ( 20 years * ) × Libs - Isotope, Highcharts × Rapid feature Development Power of electron apps ( Perks )
  • 31. Node: × NPM × Native packages Web Nature: × HTML + CSS + JS × Only Chrome. No Safari, No IE × Chrome Devtools (*) × Web as UI ( 20 years * ) × Libs - Isotope, Highcharts × Rapid feature Development Power of electron apps ( Perks )
  • 32. Build your idea NOW! Node: × NPM × Native packages Web Nature: × HTML + CSS + JS × Only Chrome. No Safari, No IE × Chrome Devtools (*) × Web as UI ( 20 years * ) × Libs - Isotope, Highcharts × Rapid feature Development Power of electron apps ( Perks )
  • 33. Node: × NPM × Native packages (Slack) Web Nature: × HTML + CSS + JS × Only Chrome. No Safari, No IE × Chrome Devtools (*) × Web as UI ( 20 years * ) × Libs - Isotope, Highcharts × Rapid feature Development Power of electron apps ( Perks )
  • 34. Node: × NPM × Native packages Web Nature: × HTML + CSS + JS × Only Chrome. No Safari, No IE × Chrome Devtools (*) × Web as UI ( 20 years * ) × Libs - Isotope, Highcharts × Rapid feature Development Power of electron apps ( Perks ) Common: × JS language and community (*) × Same codebase for all platforms. × Cross-platform ( Node + Chrome ) × Cost of development × Free × No C++, No Swift, No C#
  • 35. Modern stack: × React (Angular ) × TypeScript ( FLOW ) × ASYNC / AWAIT × ES2016 ( No babel ) × Forget about Polyfills Power of electron apps ( Bonus)
  • 36. Only modern stack: × React (Angular ) × TypeScript ( FLOW ) × ASYNC / AWAIT × ES2016 ( No babel ) × Forget about Polyfills Power of electron apps ( moreover ) Open Source: × Developed & Supported with ❤ by GitHub × Node × Chromium
  • 37. Latest features: × Detect Location × Webcam × WebRTC × CSS custom properties × CSS Grid Only modern stack: × React (Angular ) × TypeScript ( FLOW ) × ASYNC / AWAIT × ES2016 ( No babel ) × Forget about Polyfills Power of electron apps ( moreover ) Open Source: × Developed & Supported with ❤ by GitHub × Node × Chromium
  • 38. Latest features: × Detect Location × Webcam × WebRTC × CSS custom properties × CSS Grid Only modern stack: × React (Angular ) × TypeScript ( FLOW ) × ASYNC / AWAIT × ES2016 ( No babel ) × Forget about Polyfills Power of electron apps ( moreover ) Open Source: × Developed & Supported with ❤ by GitHub × Node × Chromium Electron features × Installer × Auto updater × Packaging × Crash reporting × Mac and Win store × Devtron for Debug
  • 40. Known problems: Trade offs: × Node + Chrome ( 20 million LOC ) × Project Weight ( 100mb ) × Render process spawn thread ( will kill memory ) × Boot Time × Not all platforms have the same possibilities × Code Protection × Lack of Framework features × Node packages × Cross platform: heaven or hell? × Not so perfect ( Autoupdater, Packager )
  • 41. Known problems: Trade off: × Node + Chrome ( 20 million LOC ) × Project Weight ( 100mb ) × Render process spawn thread ( Will kill memory ) × Boot Time × Not same ability for all platforms × Code Protection × Lack of Framework features × Node packages × Cross platform: goodness or hell? × Not so perfect ( Autoupdater, Packager )
  • 42. Known problems: Trade off: × Node + Chrome ( 20 million LOC ) × Project Weight ( 100mb ) × Render process spawn thread ( Will kill memory ) × Boot Time × Not same ability for all platforms × Code Protection × Lack of Framework features × Node packages × Cross platform: goodness or hell? × Not so perfect ( Autoupdater, Packager )
  • 43. Known problems: Trade off: × Node + Chrome ( 20 million LOC ) × Project Weight ( 100mb ) × Render process spawn thread ( Will kill memory ) × Boot Time × Not same ability for all platforms × Code Protection × Lack of Framework features × Node packages × Cross platform: goodness or hell? × Not so perfect ( Autoupdater, Packager )
  • 44. Are these problems with Electron? × Is it an electron issue? × UI work in browser! × Async Programming × Offload computationally-intensive work × Don’t Block the UI Thread OR the Main Thread × Use Chrome Devtools ( Profiling ) × Bad Code.
  • 45. Conclusion: is Electron a good choice? It Depends!
  • 46. Main Makes desktop development fun Makes desktop development fast It works for us
  • 48. THANKS! Any questions? You can find me @DmytroVasin