Thomas Steiner

Thomas Steiner

Tom is a Developer Advocate

Filter by:

Filter by:




A change to the default durability mode in IndexedDB

The durability mode in IndexedDB is changing from strict to relaxed from Chrome 121.

WebAssembly Garbage Collection (WasmGC) now enabled by default in Chrome

There are two types of programming languages: garbage-collected programming languages and programming languages that require manual memory management. This article explains how thanks to WebAssembly Garbage Collection, short WasmGC, garbage-collected languages can be ported to WebAssembly.

New origin trial for fullscreen popup windows

There's now a new origin trial available for opening popup windows in fullscreen mode with just one step.


W3C TPAC 2023 Trip Report

Background 🔗 The 2023 edition of the World Wide Web Consortium (W3C) Technical Plenary and Advisory Committee (TPAC) meeting took place…


Web Apps on macOS Sonoma 14 Beta

Executive summary 🔗 With macOS Sonoma, Apple goes all-in on the concept of installable web apps. They're highly integrated in the overall…

Storage Buckets origin trial available

The Storage Standard defines an API for persistent storage and quota estimates, and the platform storage architecture. We're experimenting with an API for making persistent storage eviction under heavy memory pressure more predictable. Try the Storage Buckets API in an origin trial that runs from Chrome 115 to Chrome 118.

Web SQL deprecation timeline updated

The current target version to remove Web SQL is Chromium 119.


Getting my domain back

There's this old mantra that Cool URIs don't change that Tim Berners Lee has been championing since 1998. And in the subtitle of the linked…


Cross platform software frameworks

Cross Platform Software Frameworks 🔗 The other day, I came across Elk Native, a native version of the rather excellent, if early-stage,…


iOS Continuity Camera not working in Chrome

I'm a big fan of the macOS Continuity Camera feature, which lets me use the camera system of my iPhone (11 Pro Max) as a webcam in macOS,…


Not everyone's currently building for the Web, but probably more people should

If you want to build an app, you have several ways of doing it. You can build a platform-specific app for the platforms you care about, for…


Project Fugu 🐡 on the JS party podcast

I had the honor of being interviewed on the JS Party podcast and chat about Project Fugu 🐡. Thanks to the hosts, Amal Hussein and Nick…


Modern Frontends Live

I let the community speak on this event. I have collected all the blog posts about Modern Frontends Live that I could find. If you wrote…

Not all storage is created equal: introducing Storage Buckets

We're experimenting with an API for making persistent storage eviction under heavy memory pressure more predictable, and we'd love your feedback.

Breaking change: sync methods for AccessHandles

To simplify working with AccessHandles in contexts like Emscripten, we're making the methods of the FileSystemSyncAccessHandle interface synchronous.


Reflections about Project Fugu 🐡

I had the honor of being asked to contribute some lines to Jorge del Casar's newsletter called Estandarte. As you may guess from the name,…

Is Project Fugu "done"?

This article focuses on the shifted focus of the Project Fugu team from implementing new capabilities to refining and improving the existing ones.

Deprecating and removing Web SQL

Web SQL was first proposed in April 2009 and abandoned in November 2010. Gecko never implemented it and WebKit removed it in 2019. Web SQL was removed for third-party contexts in Chromium 97. Chromium 105 deprecated Web SQL in insecure contexts and showed a warning in the DevTools Issue panel when the feature is used. Chromium 110 removed Web SQL in insecure contexts. Complete removal in insecure contexts and eventually all contexts is planned for Chromium 119.


Things not available when someone blocks all cookies

The other day, I received a harmless-looking Issue for my app SVGcode (announcement blog post). The Issue read: Crash when opened with…

Web custom formats for the Async Clipboard API

Web custom formats let websites read and write arbitrary unsanitized payloads using a standard format applications can opt in to if they wish to support such payloads.

Permissions request chip

Permission prompts demand an answer immediately and are frequently ignored. Chrome 98 adds dedicated space in the location bar for permissions, with the goal of putting all permissions-related UI (prompts, indicators, and controls) in the same place and thereby making the prompts less demanding to reduce the perceived insistence on a decision.

Launch Handler API

Launch handler lets you control how your app is launched, for example, whether it uses an existing or a new window and whether the chosen window is navigated to the launch URL.

Picking colors of any pixel on the screen with the EyeDropper API

Creative application developers can use the EyeDropper API to implement a picker that allows users to select colors from pixels on their screen, including those outside the browser.

Patrick Brosset Thomas Steiner

patrickbrosset, Thomas Steiner

Full control with the VirtualKeyboard API

Manage yourself the browser deals with content occlusion when a touch device's virtual keyboard appears.

High performance storage for your app: the Storage Foundation API

The Storage Foundation API proposed a storage API that resembles a basic file system, with direct access to stored data through buffers and offsets.

PWAs as URL Handlers

After registering a PWA as a URL handler, when a user clicks on a hyperlink that matches one of the registered URL patterns, the registered PWA will open.

Choose how in-scope links open your PWA with Declarative Link Capturing

Declarative Link Capturing is a proposal for a web app manifest property called "capture_links" that lets developers determine declaratively what should happen when the browser is asked to navigate to a URL that is within the application's navigation scope, from a context outside of the navigation scope.

How to set browser flags in Chromium

For some of the new APIs we introduce in Chromium, you need to set a browser flag for experimentation. This article explains how to do this in the various Chromium derivatives like Google Chrome, Microsoft Edge, and others.

Recognize your users' handwriting

The Handwriting Recognition API allows web applications to use advanced handwriting recognition services to recognize text from handwritten input in real time.

URL protocol handler registration for PWAs

After registering a PWA as a protocol handler, when a user clicks on a hyperlink with a specific scheme such as mailto, bitcoin, or web+music from a browser or a platform-specific app, the registered PWA will open and receive the URL.

Insertable streams for MediaStreamTrack

Insertable streams for MediaStreamTrack is about exposing the content of a MediaStreamTrack as a stream that can be manipulated or used to generate new content.

Preparing for the display modes of tomorrow

The display_override property allows developers to define a customized fallback chain of modes their PWAs should be displayed in.

Tabbed application mode for PWAs

Tabbed application mode allows Progressive Web App developers to add a tabbed document interface to their standalone PWAs.

Managing several displays with the Window Management API

The Window Management API allows you to enumerate the displays connected to your machine and to place windows on specific screens.

Use advanced typography with local fonts

The Local Font Access API enumerates the user's installed local fonts and provides low-level access to the various TrueType/OpenType tables

Capture Keys with the Keyboard Lock API

The Keyboard Lock API allows websites to capture keys that are normally reserved by the underlying operating system. It is intended for web applications that provide a full screen immersive experience (like games or remote access apps).

Reading and writing files and directories with the browser-fs-access library

All modern browsers can read local files and directories; however, true write access, that is, more than just downloading files, is limited to browsers that implement the File System Access API. This post introduces a support library called browser-fs-access that acts as an abstraction layer on top of the File System Access API and that transparently falls back to legacy approaches for dealing with files.

Detect inactive users with the Idle Detection API

The Idle Detection API notifies developers when a user is idle, indicating such things as lack of interaction with the keyboard, mouse, screen, activation of a screensaver, locking of the screen, or moving to a different screen. A developer-defined threshold triggers the notification.

WebSocketStream: integrating streams with the WebSocket API

WebSocketStream integrates streams with the WebSocket API. This allows your app to apply backpressure to received messages.

Notification Triggers

The Notification Triggers API allows developers to schedule local notifications that don't require a network connection, which makes them ideal for use cases like calendar apps.

The File System Access API: simplifying access to local files

The File System Access API enables developers to build powerful web apps that interact with files on the user's local device, such as IDEs, photo and video editors, text editors, and more. After a user grants a web app access, this API allows them to read or save changes directly to files and folders on the user's device.

Stay awake with the Screen Wake Lock API

To avoid draining the battery, most devices will quickly fall asleep when left idle. While this is fine most of the time, there are some applications that need to keep the screen awake in order to complete some work. The Screen Wake Lock API provides a way to prevent the device from dimming or locking the screen when an application needs to keep running.

Pete LePage Thomas Steiner

Pete LePage, Thomas Steiner

Sensors for the web

Sensors are used in many applications to enable advanced features like games that take the orientation or the acceleration of the device they run on into account. The Generic Sensor API provides a generic interface for accessing such sensor data on the web.

alexshalamov, pozdnyakov, Thomas Steiner

This site uses cookies to deliver and enhance the quality of its services and to analyze traffic. If you agree, cookies are also used to serve advertising and to personalize the content and advertisements that you see. Learn more about our use of cookies.