SlideShare a Scribd company logo
Web APIs in Node.js Core
Past, Present, and Future
Joyee Cheung, Igalia
JSConf EU 2019
About Me
• Joyee Cheung / Qiuyi Zhang (张秋怡)
• Lives in Hangzhou (杭州)
• Compilers team, Igalia
• Node.js TSC
• joyeecheung @ GitHub/Twitter
Web APIs in Node.js core?
Browser APIs as Node.js built-ins
JavaScript in the wild
JS Engines
ECMA TC39
Date
Regexp Error
JavaScript in the wild
EventTarget
Browsers
W3C / WHATWG
JS Engines
ECMA TC39
Date
Regexp Error
setTimeout()
JavaScript in the wild
EventTarget EventEmitterDate
Regexp Error
Browsers
W3C / WHATWG Node.js Core
JS Engines
ECMA TC39
setTimeout()
JavaScript in the wild
EventTarget
ReadableStream
EventEmitter
Readable
querystring
Date
Regexp
SubtleCryto crypto
Error
Browsers
W3C / WHATWG Node.js Core
JS Engines
ECMA TC39
setTimeout()URLSearchParams
JavaScript in the wild
EventTarget
ReadableStream
EventEmitter
Readable
querystring
Date
Regexp
SubtleCryto crypto
Error
Browsers
W3C / WHATWG Node.js Core
JS Engines
ECMA TC39
setTimeout()
URLSearchParams
JavaScript APIs on the Web (Browsers)
JavaScript APIs in Node.js
Closer implementations
And we have tests!
WPT conformance in Node.js
Implemented in Node.js first (experimental)
https://html.spec.whatwg.org/multipage/webappapis.html#creating-a-json-module-script
Alternatives in Node.js CoreAlternatives in Node.js Core
URL/URLSearchParams
Text{En,De}coder
url/querystring
Buffer/StringDecoder
Web Node.js
performance Timing methods in process
Alternatives in Node.js CoreAlternatives in Node.js Core
URL/URLSearchParams
Text{En,De}coder
performance
queueMicrotask() process.nextTick()
url/querystring
Buffer/StringDecoder
Timing methods in process
Be careful…
Web Node.js
Alternatives in Node.js CoreAlternatives in Node.js Core
URL/URLSearchParams
Text{En,De}coder
Worker
performance
queueMicrotask() process.nextTick()
url/querystring
Buffer/StringDecoder
child_process
Timing methods in process
Be careful…
Web Node.js
Web APIs in Node.js v12
Stable
console
Timers e.g. setTimeout()
URL/URLSearchParams
TextEncoder/TextDecoder
queueMicrotask()
Globals
Covered by WPT with some
expected failures
Web APIs in Node.js v12
worker_thread.Worker
perf_hooks.performance
Stable Experimental
console
Timers e.g. setTimeout()
URL/URLSearchParams
TextEncoder/TextDecoder
queueMicrotask()
Under builtin modules
Not global
Differs significantly
No WPT coverage yet
WebAssembly
Implemented by V8
Web APIs in Node.js v12
worker_thread.Worker
perf_hooks.performance
Stable Experimental
console
Timers e.g. setTimeout()
URL/URLSearchParams
TextEncoder/TextDecoder
queueMicrotask()
Web APIs haunting the issue tracker…
Web APIs haunting the issue tracker…
Web APIs under discussion
Web APIs under discussion
• Stream
• https://github.com/nodejs/whatwg-stream
Web APIs under discussion
• Stream
• https://github.com/nodejs/whatwg-stream
Stream 1
Push
Web APIs under discussion
• Stream
• https://github.com/nodejs/whatwg-stream
Stream 1 Stream 2
Push Push/Pull
Web APIs under discussion
• Stream
• https://github.com/nodejs/whatwg-stream
Stream 1 Stream 2 Stream 3
Push Push/Pull Push+Pull
Web APIs under discussion
• Stream
• https://github.com/nodejs/whatwg-stream
Stream 1 Stream 2 Stream 3 bob (dev)
Push Push/Pull Push+Pull Pull
Web APIs under discussion
• Stream
• https://github.com/nodejs/whatwg-stream
Stream 1 Stream 2 Stream 3 bob (dev)
Push Push/Pull Push+Pull Pull
WHAWG?
Web APIs under discussion
• Stream
• https://github.com/nodejs/whatwg-stream
• Fetch
• https://github.com/nodejs/summit/issues/165
• New! https://github.com/nodejs/node/pull/27979
Web APIs in Node.js Core!
…But why?
Web APIs in Node.js Core!
Web APIs in Node.js Core!
🤔
Web APIs in Node.js Core!
🤓
Web APIs in Node.js Core!
Maintenance and longevity
Web APIs in Node.js Core?
Web APIs in Node.js Core?
Consensus Seeking
https://github.com/nodejs/TSC/blob/master/TSC-Charter.md
Web APIs in Node.js Core?
Small core philosophy
Web APIs in Node.js Core?
Small core philosophy
• Duplicate API for a similar set of functionality
• While missing features that do not make sense for
browsers
Web APIs in Node.js Core?
Small core philosophy
• Duplicate API for a similar set of functionality
• While missing features that do not make sense for
browsers
• In core or as separate “official” modules?
• Optimizability
• Dependency on internals
Web APIs in Node.js Core?
More than just a bunch of interfaces
Web APIs in Node.js Core?
https://foo.com/script.js
https://bar.com/api
Origin:
https://foo.com
Cookie: TOKEN=XXX
Access-Control-Allow-Origin:
https://foo.comBrowsers
More than just a bunch of interfaces
Web APIs in Node.js Core?
More than just a bunch of interfaces
We don’t really have an origin ATM..
./node_modules/foo/script.js
https://bar.com/api
Access-Control-Allow-Origin:
https://foo.comNode.js
Origin:
https://foo.com
Cookie: TOKEN=XXX
Web APIs in Node.js Core?
fetch()
CORS Caching
Content Security Policy
Service workers
Credentials e.g. Cookies
Web APIs in Node.js Core?
User land migration
• Different vocabulary
WHATWG
Streams
EventTarget
require
(‘stream’)
EventEmitter
fetch() http.request()
Web APIs in Node.js Core?
User land migration
• Different vocabulary
• Interoperability with other modules
WHATWG
Streams
EventTarget
require
(‘stream’)
EventEmitter
fetch() http.request()
Web APIs in Node.js Core?
Open questions
+
consensus seeking
Typical Workflow
masterFeature
request
Typical Workflow
Fork
Pull
Request
masterFeature
request
Typical Workflow
Fork
Pull
Request
masterFeature
request
✘ ✘
e.g. WebCrypto
https://github.com/nodejs/node/issues/19826
Typical Workflow
Fork
Pull
Request
masterFeature
request
✓ ✓
Typical Workflow
Fork
Pull
Request
master
Fix bugs
Add WPT*
Expose as
globals*
OptimizeFeature
request
Upstream
Spec / WPT
* optional
Release
Typical Workflow
Fork
Pull
Request
master
Fix bugs
Add WPT*
Expose as
globals*
OptimizeFeature
request
Upstream
Spec / WPT
* optional
Experimental e.g. Worker, performance
Typical Workflow
Fork
Pull
Request
master
Fix bugs
Add WPT*
Expose as
globals*
Optimize
Move out of
experiment*
Release
RFC /
Feature
request
Upstream
Spec / WPT
* optional
Stable e.g. URL, TextEncoder/TextDecoder
Summary
• Past
• Node.js core APIs diverged from Web APIs for different
design goals
• Node.js has added more and more Web APIs
• Present
• console, encoding, timer, microtask queuing, URL,
Workers, performance, WebAssembly
• Future
• Challenges and workflow
Node.js & Open Standards
Thank you!

More Related Content

PDF
React native in the wild @ Codemotion 2016 in Rome
PDF
Swagger code motion talk
PDF
Fastest to Mobile with Scalatra + Swagger
PDF
Euroclojure2014: Schema & Swagger - making your Clojure web APIs more awesome
PDF
The story of language development
PPTX
Introduction to Grails 2013
PDF
Creating applications with Grails, Angular JS and Spring Security - G3 Summit...
PDF
Creating applications with Grails, Angular JS and Spring Security - GR8Conf U...
React native in the wild @ Codemotion 2016 in Rome
Swagger code motion talk
Fastest to Mobile with Scalatra + Swagger
Euroclojure2014: Schema & Swagger - making your Clojure web APIs more awesome
The story of language development
Introduction to Grails 2013
Creating applications with Grails, Angular JS and Spring Security - G3 Summit...
Creating applications with Grails, Angular JS and Spring Security - GR8Conf U...

What's hot (20)

PDF
SxSW 2015
PDF
Building RESTful APIs
PDF
Rapid API Development with LoopBack/StrongLoop
PDF
Swagger / Quick Start Guide
PDF
How to generate a REST CXF3 application from Swagger ApacheConEU 2016
PDF
Developing faster than ever (Liferay DEVCON 2017)
PDF
JHipster
PPTX
React Native
PDF
OpenAPI Specification概要
PDF
Mastering Grails 3 Plugins - GR8Conf US 2016
PDF
Documenting your REST API with Swagger - JOIN 2014
PDF
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
PPTX
Swagger APIs for Humans and Robots (Gluecon)
PPTX
The busy developers guide to Docker
PDF
Mastering Grails 3 Plugins - G3 Summit 2016
PDF
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
PDF
Angular2 + AWS Lambdaでサーバサイドレンダリングしてみた
PDF
goaを使った開発TIPS@六本木一丁目
PPTX
Blazor Full-Stack
PPTX
Web Components: The Future of Web Development is Here
SxSW 2015
Building RESTful APIs
Rapid API Development with LoopBack/StrongLoop
Swagger / Quick Start Guide
How to generate a REST CXF3 application from Swagger ApacheConEU 2016
Developing faster than ever (Liferay DEVCON 2017)
JHipster
React Native
OpenAPI Specification概要
Mastering Grails 3 Plugins - GR8Conf US 2016
Documenting your REST API with Swagger - JOIN 2014
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Swagger APIs for Humans and Robots (Gluecon)
The busy developers guide to Docker
Mastering Grails 3 Plugins - G3 Summit 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Angular2 + AWS Lambdaでサーバサイドレンダリングしてみた
goaを使った開発TIPS@六本木一丁目
Blazor Full-Stack
Web Components: The Future of Web Development is Here
Ad

Similar to Web APIs in Node.js Core: Past, Present, and Future (JSConf EU 2019) (20)

PPTX
Building a REST API Microservice for the DevNet API Scavenger Hunt
PPTX
Kiss.ts - The Keep It Simple Software Stack for 2017++
PDF
You Got React.js in My PHP
PPTX
Introduction to node.js
PPTX
WebNetConf 2012 - Single Page Apps
KEY
Ruby On Rails
KEY
Benefits of an Open environment with Wakanda
PDF
End-to-end HTML5 APIs - The Geek Gathering 2013
PPTX
Nodejs overview
PPTX
Confoo - Javascript Server Side : How to start
PPTX
Nodejs Native Add-Ons from zero to hero
PPTX
Single Page Application Development with backbone.js and Simple.Web
PPTX
Scaling with swagger
PDF
Code for Startup MVP (Ruby on Rails) Session 1
KEY
Practical Use of MongoDB for Node.js
PPTX
HTML5: An Overview
KEY
20120306 dublin js
PDF
Node PDX: Intro to Sails.js
PDF
The MEAN Stack
PPTX
The New Renaissance of JavaScript
Building a REST API Microservice for the DevNet API Scavenger Hunt
Kiss.ts - The Keep It Simple Software Stack for 2017++
You Got React.js in My PHP
Introduction to node.js
WebNetConf 2012 - Single Page Apps
Ruby On Rails
Benefits of an Open environment with Wakanda
End-to-end HTML5 APIs - The Geek Gathering 2013
Nodejs overview
Confoo - Javascript Server Side : How to start
Nodejs Native Add-Ons from zero to hero
Single Page Application Development with backbone.js and Simple.Web
Scaling with swagger
Code for Startup MVP (Ruby on Rails) Session 1
Practical Use of MongoDB for Node.js
HTML5: An Overview
20120306 dublin js
Node PDX: Intro to Sails.js
The MEAN Stack
The New Renaissance of JavaScript
Ad

More from Igalia (20)

PDF
Life of a Kernel Bug Fix
PDF
Unlocking the Full Potential of WPE to Build a Successful Embedded Product
PDF
Advancing WebDriver BiDi support in WebKit
PDF
Jumping Over the Garden Wall - WPE WebKit on Android
PDF
Collective Funding, Governance and Prioritiation of Browser Engine Projects
PDF
Don't let your motivation go, save time with kworkflow
PDF
Solving the world’s (localization) problems
PDF
The Whippet Embeddable Garbage Collection Library
PDF
Nobody asks "How is JavaScript?"
PDF
Getting more juice out from your Raspberry Pi GPU
PDF
WebRTC support in WebKitGTK and WPEWebKit with GStreamer: Status update
PDF
Demystifying Temporal: A Deep Dive into JavaScript New Temporal API
PDF
CSS :has() Unlimited Power
PDF
Device-Generated Commands in Vulkan
PDF
Current state of Lavapipe: Mesa's software renderer for Vulkan
PDF
Vulkan Video is Open: Application showcase
PDF
Scheme on WebAssembly: It is happening!
PDF
EBC - A new backend compiler for etnaviv
PDF
RISC-V LLVM State of the Union
PDF
Device-Generated Commands in Vulkan
Life of a Kernel Bug Fix
Unlocking the Full Potential of WPE to Build a Successful Embedded Product
Advancing WebDriver BiDi support in WebKit
Jumping Over the Garden Wall - WPE WebKit on Android
Collective Funding, Governance and Prioritiation of Browser Engine Projects
Don't let your motivation go, save time with kworkflow
Solving the world’s (localization) problems
The Whippet Embeddable Garbage Collection Library
Nobody asks "How is JavaScript?"
Getting more juice out from your Raspberry Pi GPU
WebRTC support in WebKitGTK and WPEWebKit with GStreamer: Status update
Demystifying Temporal: A Deep Dive into JavaScript New Temporal API
CSS :has() Unlimited Power
Device-Generated Commands in Vulkan
Current state of Lavapipe: Mesa's software renderer for Vulkan
Vulkan Video is Open: Application showcase
Scheme on WebAssembly: It is happening!
EBC - A new backend compiler for etnaviv
RISC-V LLVM State of the Union
Device-Generated Commands in Vulkan

Recently uploaded (20)

PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Electronic commerce courselecture one. Pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Spectroscopy.pptx food analysis technology
PDF
Unlocking AI with Model Context Protocol (MCP)
PPT
Teaching material agriculture food technology
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
cuic standard and advanced reporting.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
MYSQL Presentation for SQL database connectivity
Building Integrated photovoltaic BIPV_UPV.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Electronic commerce courselecture one. Pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Spectroscopy.pptx food analysis technology
Unlocking AI with Model Context Protocol (MCP)
Teaching material agriculture food technology
Programs and apps: productivity, graphics, security and other tools
20250228 LYD VKU AI Blended-Learning.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
MIND Revenue Release Quarter 2 2025 Press Release
cuic standard and advanced reporting.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
The AUB Centre for AI in Media Proposal.docx
MYSQL Presentation for SQL database connectivity

Web APIs in Node.js Core: Past, Present, and Future (JSConf EU 2019)

  • 1. Web APIs in Node.js Core Past, Present, and Future Joyee Cheung, Igalia JSConf EU 2019
  • 2. About Me • Joyee Cheung / Qiuyi Zhang (张秋怡) • Lives in Hangzhou (杭州) • Compilers team, Igalia • Node.js TSC • joyeecheung @ GitHub/Twitter
  • 3. Web APIs in Node.js core?
  • 4. Browser APIs as Node.js built-ins
  • 5. JavaScript in the wild JS Engines ECMA TC39 Date Regexp Error
  • 6. JavaScript in the wild EventTarget Browsers W3C / WHATWG JS Engines ECMA TC39 Date Regexp Error setTimeout()
  • 7. JavaScript in the wild EventTarget EventEmitterDate Regexp Error Browsers W3C / WHATWG Node.js Core JS Engines ECMA TC39 setTimeout()
  • 8. JavaScript in the wild EventTarget ReadableStream EventEmitter Readable querystring Date Regexp SubtleCryto crypto Error Browsers W3C / WHATWG Node.js Core JS Engines ECMA TC39 setTimeout()URLSearchParams
  • 9. JavaScript in the wild EventTarget ReadableStream EventEmitter Readable querystring Date Regexp SubtleCryto crypto Error Browsers W3C / WHATWG Node.js Core JS Engines ECMA TC39 setTimeout() URLSearchParams
  • 10. JavaScript APIs on the Web (Browsers)
  • 13. And we have tests!
  • 15. Implemented in Node.js first (experimental) https://html.spec.whatwg.org/multipage/webappapis.html#creating-a-json-module-script
  • 16. Alternatives in Node.js CoreAlternatives in Node.js Core URL/URLSearchParams Text{En,De}coder url/querystring Buffer/StringDecoder Web Node.js performance Timing methods in process
  • 17. Alternatives in Node.js CoreAlternatives in Node.js Core URL/URLSearchParams Text{En,De}coder performance queueMicrotask() process.nextTick() url/querystring Buffer/StringDecoder Timing methods in process Be careful… Web Node.js
  • 18. Alternatives in Node.js CoreAlternatives in Node.js Core URL/URLSearchParams Text{En,De}coder Worker performance queueMicrotask() process.nextTick() url/querystring Buffer/StringDecoder child_process Timing methods in process Be careful… Web Node.js
  • 19. Web APIs in Node.js v12 Stable console Timers e.g. setTimeout() URL/URLSearchParams TextEncoder/TextDecoder queueMicrotask() Globals Covered by WPT with some expected failures
  • 20. Web APIs in Node.js v12 worker_thread.Worker perf_hooks.performance Stable Experimental console Timers e.g. setTimeout() URL/URLSearchParams TextEncoder/TextDecoder queueMicrotask() Under builtin modules Not global Differs significantly No WPT coverage yet
  • 21. WebAssembly Implemented by V8 Web APIs in Node.js v12 worker_thread.Worker perf_hooks.performance Stable Experimental console Timers e.g. setTimeout() URL/URLSearchParams TextEncoder/TextDecoder queueMicrotask()
  • 22. Web APIs haunting the issue tracker…
  • 23. Web APIs haunting the issue tracker… Web APIs under discussion
  • 24. Web APIs under discussion • Stream • https://github.com/nodejs/whatwg-stream
  • 25. Web APIs under discussion • Stream • https://github.com/nodejs/whatwg-stream Stream 1 Push
  • 26. Web APIs under discussion • Stream • https://github.com/nodejs/whatwg-stream Stream 1 Stream 2 Push Push/Pull
  • 27. Web APIs under discussion • Stream • https://github.com/nodejs/whatwg-stream Stream 1 Stream 2 Stream 3 Push Push/Pull Push+Pull
  • 28. Web APIs under discussion • Stream • https://github.com/nodejs/whatwg-stream Stream 1 Stream 2 Stream 3 bob (dev) Push Push/Pull Push+Pull Pull
  • 29. Web APIs under discussion • Stream • https://github.com/nodejs/whatwg-stream Stream 1 Stream 2 Stream 3 bob (dev) Push Push/Pull Push+Pull Pull WHAWG?
  • 30. Web APIs under discussion • Stream • https://github.com/nodejs/whatwg-stream • Fetch • https://github.com/nodejs/summit/issues/165 • New! https://github.com/nodejs/node/pull/27979
  • 31. Web APIs in Node.js Core! …But why?
  • 32. Web APIs in Node.js Core!
  • 33. Web APIs in Node.js Core! 🤔
  • 34. Web APIs in Node.js Core! 🤓
  • 35. Web APIs in Node.js Core! Maintenance and longevity
  • 36. Web APIs in Node.js Core?
  • 37. Web APIs in Node.js Core? Consensus Seeking https://github.com/nodejs/TSC/blob/master/TSC-Charter.md
  • 38. Web APIs in Node.js Core? Small core philosophy
  • 39. Web APIs in Node.js Core? Small core philosophy • Duplicate API for a similar set of functionality • While missing features that do not make sense for browsers
  • 40. Web APIs in Node.js Core? Small core philosophy • Duplicate API for a similar set of functionality • While missing features that do not make sense for browsers • In core or as separate “official” modules? • Optimizability • Dependency on internals
  • 41. Web APIs in Node.js Core? More than just a bunch of interfaces
  • 42. Web APIs in Node.js Core? https://foo.com/script.js https://bar.com/api Origin: https://foo.com Cookie: TOKEN=XXX Access-Control-Allow-Origin: https://foo.comBrowsers More than just a bunch of interfaces
  • 43. Web APIs in Node.js Core? More than just a bunch of interfaces We don’t really have an origin ATM.. ./node_modules/foo/script.js https://bar.com/api Access-Control-Allow-Origin: https://foo.comNode.js Origin: https://foo.com Cookie: TOKEN=XXX
  • 44. Web APIs in Node.js Core? fetch() CORS Caching Content Security Policy Service workers Credentials e.g. Cookies
  • 45. Web APIs in Node.js Core? User land migration • Different vocabulary WHATWG Streams EventTarget require (‘stream’) EventEmitter fetch() http.request()
  • 46. Web APIs in Node.js Core? User land migration • Different vocabulary • Interoperability with other modules WHATWG Streams EventTarget require (‘stream’) EventEmitter fetch() http.request()
  • 47. Web APIs in Node.js Core? Open questions + consensus seeking
  • 50. Typical Workflow Fork Pull Request masterFeature request ✘ ✘ e.g. WebCrypto https://github.com/nodejs/node/issues/19826
  • 52. Typical Workflow Fork Pull Request master Fix bugs Add WPT* Expose as globals* OptimizeFeature request Upstream Spec / WPT * optional
  • 53. Release Typical Workflow Fork Pull Request master Fix bugs Add WPT* Expose as globals* OptimizeFeature request Upstream Spec / WPT * optional Experimental e.g. Worker, performance
  • 54. Typical Workflow Fork Pull Request master Fix bugs Add WPT* Expose as globals* Optimize Move out of experiment* Release RFC / Feature request Upstream Spec / WPT * optional Stable e.g. URL, TextEncoder/TextDecoder
  • 55. Summary • Past • Node.js core APIs diverged from Web APIs for different design goals • Node.js has added more and more Web APIs • Present • console, encoding, timer, microtask queuing, URL, Workers, performance, WebAssembly • Future • Challenges and workflow
  • 56. Node.js & Open Standards