Nylas API Platform
• REST APIs for email,
contacts, and calendar
• Gmail, Exchange, iCloud,
Yahoo, and hundreds more.
• Powers email integration in
CRMs, mobile apps, etc.
Making email easy.
Slide 26
Slide 26 text
N1 Mail Client
• Clean, minimal foundation
with “must-have” features
• Robust APIs for dealing with
threads, messages, etc.
• Cross-platform: Mac,
Windows, Linux
• Easy to extend with modern
technologies
Making email easy.
Nylas API Platform
Slide 27
Slide 27 text
Why Electron?
• Mac, Windows, Linux support
• Great APIs for desktop integration
• Support for C/C++ code via native modules
• Atom = open-source sample code and tooling
• Large numbers of developers know JavaScript, HTML, CSS,
can write extensions easily!
Slide 28
Slide 28 text
Challenges
1. NodeJS is single-threaded
2. Windows live in separate processes
3. Platform-specific styling an exercise to the reader
Slide 29
Slide 29 text
Party on the Main Thread
• BrowserWindows render and run JavaScript
on the same thread.
• All work is created equal. Great for a web
server, not so great for a desktop app.
• (Web Workers don’t get NodeJS integration)
Slide 30
Slide 30 text
Party on the Main Thread
• Animations
• Transitions
• Scrolling
• User interaction
• Applying mailbox changes
• Running spellcheck
• Downloading attachments
• Running mail rules
Slide 31
Slide 31 text
Party on the Main Thread
Slide 32
Slide 32 text
Windows are process-isolated
• No shared memory between windows
• Messaging between windows requires hops
through the parent application process
• Major conceptual barrier to multi-window
app development
Slide 33
Slide 33 text
Multi-window Flux Architecture
Application Process
Task Store
ActionBridge
QueueTask:
Send Draft
QueueTask:
Send Draft
ActionBridge
DraftStore
JSON via IPC
Slide 34
Slide 34 text
1. JavaScript is single-threaded
2. Windows live in separate processes
3. Platform-specific styling an exercise to the reader
Move CPU-intensive tasks to a worker window
Bridge Flux stores and actions across windows
Fine-tune CSS to match platform standards