This year’s spring releases of Safari 13.1 for macOS Catalina, iPadOS, iOS, and watchOS bring a tremendous number of WebKit improvements for the web across Apple’s platforms. All of this with many more updates for improved privacy, performance, and a host of new tools for web developers.
Media APIs: Picture-in-Picture API and Remote Playback API
Subtitles and Captions
Great to see things like ResizeObserver finally make it into Safari. The Web Anmations even have gotten their own entry on the WebKit Blog.
The enterkeyhint attribute is something new to me. As the spec states, it allows you to set the word to be used on the enter button on virtual keyboards:
The enterkeyhint content attribute is an enumerated attribute that specifies what action label (or icon) to present for the enter key on virtual keyboards. This allows authors to customize the presentation of the enter key in order to make it more helpful for users.
Allowed values are:
enter: Typically inserting a new line.
done: Typically meaning there is nothing more to input and the IME will be closed.
go: Typically meaning to take the user to the target of the text they typed.
next: Typically taking the user to the next field that will accept text.
previous: Typically taking the user to the previous field that will accept text.
search: Typically taking the user to the results of searching for the text they have typed.
send: Typically delivering the text to its target.
What surprises me is that some engines support different Unicode versions per feature. Check out Safari for example that has Unicode v12 support for Identifiers, but Unicode v11 for RegExp property escapes.
Project Fugu is an effort to close gaps in web’s capabilities vs. native platforms. APIs that Project Fugu is delivering enable new experiences on the web while preserving the web’s core benefits of security, low-friction, and cross-platform delivery. All Project Fugu API proposals are made in the open and on the standards track.
Late January Puppeteer 2.1.0 got released, with native support for Firefox:
The launcher now has an option to run Puppeteer with different browsers, starting with Firefox. Puppeteer can now talk to a real, unpatched Firefox binary. This is a first step towards eventually deprecating the separate puppeteer-firefox package in favor of supporting Firefox directly in puppeteer itself.
You can define which browser to use by setting product on the options object to either "chrome" or "firefox", or by setting the PUPPETEER_PRODUCT env variable to one of those values.
Back in the days, Microsoft was single-handedly pushing the web forward, with around 1.000(!) people working on Internet Explorer and with a 100 million dollar budget to burn per year, with almost no-one left to compete. This was massive!
As I’ve been tinkering with the web for almost 25 years by now, I remember many of the stuff mentioned. IE/Trident gave us many great things, and sometimes was ahead of its time, lest we forget.
💁♂️ Also on my list of highlights is Linking to text fragments using a special URL fragment in the form of :~:text=[prefix-,]textStart[,textEnd][,-suffix]. It’s a but clunky to work with as you can’t manually change the fragment in the URL and hit enter to make it work, you’ll need to actually follow it through a link.