Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JS Takes the Desktop — Scotland JS
Search
Evan Morikawa
June 03, 2016
Programming
0
210
JS Takes the Desktop — Scotland JS
Electron, React, & Native Win/Mac/Linux Experiences At Scale
Evan Morikawa
June 03, 2016
Tweet
Share
More Decks by Evan Morikawa
See All by Evan Morikawa
The Age of the Javascript-Powered Desktop — Dinosaur JS
emorikawa
0
910
Node on the Desktop — Node Conf Oslo 2016
emorikawa
0
150
Desktop JS — Empire JS 2016
emorikawa
1
580
Plugins with React & Challenges with Data
emorikawa
0
630
Space City JS — Using Electron & React to Build N1
emorikawa
1
240
MIT N1 Preview
emorikawa
0
520
Scaling Flux
emorikawa
0
580
Other Decks in Programming
See All in Programming
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
420
AI活用のコスパを最大化する方法
ochtum
0
130
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.3k
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
360
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
230
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
380
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
7.9k
Codex の「自走力」を高める
yorifuji
0
1.2k
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
270
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
130
AHC061解説
shun_pi
0
360
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
240
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Mobile First: as difficult as doing things right
swwweet
225
10k
GraphQLとの向き合い方2022年版
quramy
50
14k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
140
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Mind Mapping
helmedeiros
PRO
1
110
The Language of Interfaces
destraynor
162
26k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
290
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
150
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
330
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Transcript
JS Takes The Desktop Evan Morikawa | @e0m |
[email protected]
| June 2016 SCOTLAND JS Electron, React, & Native Win/Mac/Linux Experiences At Scale
None
None
None
None
Swing Qt Cocoa GTK WPF/WinRT …
NW.js (Node Webkit)
Shell
None
None
None
None
Chromium
Chromium Browser aka Backend aka Main Process
Chromium Browser aka Backend aka Main Process C++
Chromium Browser aka Backend aka Main Process C++ Renderer Renderer
Renderer HTML / JS (DOM) HTML / JS (DOM) HTML / JS (DOM)
Chromium Browser aka Backend aka Main Process C++ Renderer Renderer
Renderer HTML / JS (DOM) HTML / JS (DOM) HTML / JS (DOM) ipc
Browser aka Backend aka Main Process Renderer Renderer Renderer HTML
/ JS (DOM) HTML / JS (DOM) HTML / JS (DOM) ipc
Nylas N1
Nylas N1 main.js
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
index.html index.js
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
index.html index.js React.render()
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
index.html index.js React.render()
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
index.html index.js React.render() Composer Work Window
None
JS on the Desktop 1. “Native” experience 2. Performance 3.
Data Storage & Offline 4. Plugins & Extensibility
JS on the Desktop 1. “Native” experience 2. Performance 3.
Data Storage & Offline 4. Plugins & Extensibility
None
JS on the Desktop 1. “Native” experience 2. Performance 3.
Data Storage & Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail
JS on the Desktop 1. “Native” experience 2. Performance 3.
Data Storage & Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail
None
JS on the Desktop 1. “Native” experience 2. Performance 3.
Data Storage & Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail Jasnkbusting | Worker windows
JS on the Desktop 1. “Native” experience 2. Performance 3.
Data Storage & Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail Jasnkbusting | Worker windows
ReactiveX.js
ReactiveX.js Thank you @mattpodwysocki!
const q = `SELECT * FROM threads WHERE …` Rx.Observable.fromQuery(q).subscribe((threads)
=> { this.setState({threads}) })
const q = `SELECT * FROM threads WHERE …` Rx.Observable.fromQuery(q)
.filter(myFn).subscribe((threads) => { this.setState({threads}) })
const q = `SELECT * FROM threads WHERE …` Rx.Observable.fromQuery(q)
.filter(myFn) .map(mapFn).subscribe((threads) => { this.setState({threads}) })
JS on the Desktop 1. “Native” experience 2. Performance 3.
Data Storage & Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail SQL | Observables | Task Jasnkbusting | Worker windows
JS on the Desktop 1. “Native” experience 2. Performance 3.
Data Storage & Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail Jasnkbusting | Worker windows SQL | Observables | Task
None
JS on the Desktop 1. “Native” experience 2. Performance 3.
Data Storage & Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail React | Components as “data” Jasnkbusting | Worker windows SQL | Observables | Task
JS on the Desktop 1. “Native” experience 2. Performance 3.
Data Storage & Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail Jasnkbusting | Worker windows SQL | Observables | Task React | Components as “data”
https://github.com/nylas/n1 Open Source
N1 Core Team https://nylas.com/team @e0m @bengotow @juanstejada @karim_hamidou @jackiehluo Drew
Regitsky
None
Evan Morikawa | @e0m |
[email protected]
| June 2016 Thank
you! Slides here
JS Takes The Desktop Evan Morikawa | @e0m |
[email protected]
| June 2016 SCOTLAND JS Electron, React, & Native Win/Mac/Linux Experiences At Scale