Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Desktop JS — Empire JS 2016
Search
Evan Morikawa
May 27, 2016
Programming
620
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Desktop JS — Empire JS 2016
Desktop JS — Electron and building applications on the desktop, with Javascript.
Evan Morikawa
May 27, 2016
More Decks by Evan Morikawa
See All by Evan Morikawa
The Age of the Javascript-Powered Desktop — Dinosaur JS
emorikawa
0
960
Node on the Desktop — Node Conf Oslo 2016
emorikawa
0
150
JS Takes the Desktop — Scotland JS
emorikawa
0
230
Plugins with React & Challenges with Data
emorikawa
0
670
Space City JS — Using Electron & React to Build N1
emorikawa
1
250
MIT N1 Preview
emorikawa
0
550
Scaling Flux
emorikawa
0
640
Other Decks in Programming
See All in Programming
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
180
JRuby: Past, Present, and Future
headius
0
230
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
970
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
530
速習iPhone Duo対応
yuukiw00w
2
980
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
330
R8 の設定見直しでアプリサイズ削減
andpad
0
210
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
0
470
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
570
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
370
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
1.3k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
530
Designing for humans not robots
tammielis
254
26k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
210
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
GitHub's CSS Performance
jonrohan
1033
470k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
300
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
520
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
Transcript
Desktop JS Evan Morikawa | @e0m |
[email protected]
| May
2016
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
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility
None
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail
None
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail Jasnkbusting | Worker windows
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail Jasnkbusting | Worker windows
ReactiveX.js
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}) })
Desktop JS 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
Desktop JS 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
Desktop JS 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
Desktop JS 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]
| May 2016 Thank
you! Slides here
Desktop JS Evan Morikawa | @e0m |
[email protected]
| May
2016