State of Webkit
@briankardell
JavaScript Core
A Primer for Busy People
Webkit
Webkit in 10 Seconds
Web Renderers
(WebViews)
Webkit
OS Implementations
A Primer for Busy People
Webkit in 10 Seconds
This Part
Browser
"Chrome" & Internals
OS Implementations
Webkit
A Primer for Busy People
Webkit in 10 Seconds
Safari (iOS/Mac)
Epiphany (Linux)
We are maintainers of Epiphany
✔
Browser
OS Impls
Webkit
We are active contributors to Webkit
✔
✔
Browser
OS Impls
Webkit
We make Webkit GTK / WPE
✔
✔
Browser
OS Impls
Webkit
✔
Consideration
Development
Preview
Release
Inclusion?
exploring
in public use
In development
- CSS Logical Properties and Values L1
- CSS Painting API L1
- CSS Properties and Values L1
- Font Palettes (CSS Fonts L4)
- Geometry Interfaces
- MediaStream Recording API (enhancements)
- Navigation Timing L2
- Pointer Events L2
- Web App Manifest
- Web Authentication
- WebVR
- Responsive image pre-loading
- "Lazy" images
- CSS overscroll-behavior
- WebPackage
... and JavaScript
const theBiggestInt = 9007199254740991n;
const alsoHuge = BigInt(9007199254740991); // ↪ 9007199254740991n
const hugeButString = BigInt('9007199254740991'); // ↪ 9007199254740991n
Biglnt
class Counter extends HTMLElement {
#x = 0;
max = 10;
clicked() {
this.#x++;
window.requestAnimationFrame(this.render.bind(this));
}
constructor() {
super();
this.onclick = this.clicked.bind(this);
}
connectedCallback() { this.render(); }
render() {
this.textContent = `${
(this.#x < this.max)
?
this.#x.toString()
:
this.y.toString()
}`;
}
}
window.customElements.define('uptoten-counter', Counter);
Public/Private Class Fields
- Beacon API
- Conic Gradients
- CSS Text Decoration Level 4
- Intersection Observer
- Resize Observer
- Visual Viewport API
- Web Animations
- Web Share
- WebGL 2
- .... more
In Preview
- Dark Mode
- Payment Request API
- WebRTC Imrovements
- Updated EME stuff
- IntersectionObserver API
- WebShareAPI
- <input type=color>
- <datalist>
- ...and more.
In Recent Releases
Also Improvements In:
- Bug Fixes / Web Compat
- Performance / Memory Use
- Accessibility
- Security
- WebInspector
- WebDriver
- Font / Gesture
- and so much more..
:root {
--theme-bg: darkgray;
--theme-fg: white;
}
@media (prefers-color-scheme: dark) {
--theme-bg: darkgray;
--theme-fg: white;
}
body {
background-color: var(--theme-bg);
color: var(--theme-fg);
}
Dark Mode
navigator.share({
title: document.title,
text: "The WebKit Blog",
url: "https://webkit.org/blog"
});
Web Share API
Highlights:
Under-celebrated Wins for Developers
<input type="color">
<datalist>
Pointer Events
Platform Self-Consistancy, Pairity and Alignment
- window.open now supports a noreferrer to align reasoning about 'linky things' consistently
- role=meter
- link preloading with responsive image candidate strings (in development)
<img
loading='lazy'
src='lazy-cat.jpg'
onload='console.log("lazy cat");' />
(in development)
Lazy / Eager Loading Images
What's a rAF?
Before*
requestAnimationFrame
After*
Have
Need
"There's a place in the platform that does that"
const resizeObserver = new ResizeObserver(entries => {
for (let entry of entries) {
let size = "small"
if (entry.contentRect.width > 400) {
size = "medium"
}
if (entry.contentRect.width > 800) {
size = "large"
}
entry.target.setAttribute("data-block-scale", size)
}
})
let blocks = document.querySelectorAll(".media-block")
blocks.forEach(el => {
resizeObserver.observe(el)
});
Resize Observer
In Preview!
function callback(entries) {
entries.forEach((entry) => {
if (entry.isIntersecting) {
// do something!
}
});
}
let observer = new IntersectionObserver(callback, {
root: null,
rootMargin: "100px"
})
let lazyElements = document.querySelectorAll('.lazy')
lazyElements.forEach((el) => {
observer.observe(el);
})
Intersection Observer
In Preview!
In development
- CSS Logical Properties and Values L1
- CSS Painting API L1
- CSS Properties and Values L1
- Font Palettes (CSS Fonts L4)
- Geometry Interfaces
- MediaStream Recording API (enhancements)
- Navigation Timing L2
- Pointer Events L2
- Web App Manifest
- Web Authentication
- WebVR
... and JavaScript
- Responsive image pre-loading
- "Lazy" images
- Css overscroll-behavior
What is important to you?
Which things cause you pain?
Where would you like to see advancements in either the Web Platform at large or in Webkit specifically, and how can we help?
State of Webkit
By Brian Kardell
State of Webkit
- 2,395