Advertisement · 728 × 90

Posts by Jonathan Neal

2030645 - Enable container style queries on all channels RESOLVED (jfkthame) in Core - CSS Parsing and Computation. Last updated 2026-04-14.

RESOLVED FIXED - style queries are coming to Firefox

bugzilla.mozilla.org/show_bug.cgi...

1 week ago 65 11 2 0
winamp green head music player

winamp green head music player

If the future of layout is not CSS, it better be this

3 weeks ago 193 18 5 1
Preview
We deserve a better streams API for JavaScript The Web streams API has become ubiquitous in JavaScript runtimes but was designed for a different era. Here's what a modern streaming API could (should?) look like.

After implementing web streams in multiple runtimes, supporting them for years, talking with other implementers, dealing with issues... I think it's well past time we talked about something better blog.cloudflare.com/a-better-web...

1 month ago 83 29 5 5

load-bearing @xkcd.com

1 month ago 255 44 1 2
Preview
How my side project got banned from the internet | Bogdan Chadkin A little piece about dealing with security providers and clearing my side project's reputation after a false positive flagging.

Wrote about how my side project got flagged by 10 security providers (including Google) as a phishing site, and how I got it fixed.

Hope this helps if it ever happens to you.

trysound.io/how-my-side-...

2 months ago 15 3 0 2

npmx is good. There be noticeable dragons on first visit, but thats to be expected in a project this fresh with this many contributors, but I'm sure that'll straighten out in time. Looking beyond that, there's lots to like.

2 months ago 10 1 1 0
Browser window showing the browser-compat-data github repo homepage, which shows that the project now contains 20,000 commits.

Browser window showing the browser-compat-data github repo homepage, which shows that the project now contains 20,000 commits.

The browser-compat-data project (used by MDN, caniuse, and tools) now has:

20,000 commits
1,123 contributors
465 releases
19,148 data entries

That's what comprehensive web compat data looks like.

And it takes well funded teams at @openwebdocs.org and @mozilla.org plus amazing contributors.

4 months ago 84 18 1 3
Preview
Hire Bogdan Chadkin - Software Engineer Software Engineer building fast, accessible user interfaces and scalable front-end architecture.

Hey! I'm looking for my next thing. Could be contract or full-time.

I build design systems, web apps, and design tools.

If you know someone who needs a frontend/fullstack dev, send them my way 🙏

trysound.io/hire-me

2 months ago 15 6 0 0
The following TypeScript:

declare module "*" with { type: "url" } {
	const url: URL;
	export default url;
}

The following TypeScript: declare module "*" with { type: "url" } { const url: URL; export default url; }

PR to add support for import attributes in ambient module declarations.
github.com/microsoft/Ty...

3 months ago 5 0 0 0

Creating a universal app store for PWAs seems like an obvious win here vs. heuristics triggered installs. But think about smaller, more bespoke app stores! An app store for your intranet apps. An app store for your webring of online mutuals. An app store for kid-friendly apps. That's fun territory.

4 months ago 55 6 1 1
Advertisement
The source TypeScript:

export namespace Signal {
	export let isComputed: (value: unknown) => value is Computed;

	export class Computed {
		#brand() {}

		static {
			isComputed = (value): value is Computed => #brand in Object(value);
		}
	}
}

The source TypeScript: export namespace Signal { export let isComputed: (value: unknown) => value is Computed; export class Computed { #brand() {} static { isComputed = (value): value is Computed => #brand in Object(value); } } }

The resulting JavaScript:

export var Signal = __ns("Signal"); {
	let isComputed;

	class Computed {
		#brand() {}

		static {
			isComputed = (value) => #brand in Object(value);
		}
	}

	__nsassign(Signal, { isComputed, Computed });
}

The resulting JavaScript: export var Signal = __ns("Signal"); { let isComputed; class Computed { #brand() {} static { isComputed = (value) => #brand in Object(value); } } __nsassign(Signal, { isComputed, Computed }); }

The helper JavaScript:

const __ns = (value) => Object.defineProperty(
	{},
	Symbol.toStringTag,
	{ value, configurable: true }
)

const __nsassign = (target, source) => Object.defineProperties(
	target,
	Object.fromEntries(Object.entries(source).map(
		([key, value]) => [
			key,
			{ value, writable: true, configurable: true }
		]
	))
)

The helper JavaScript: const __ns = (value) => Object.defineProperty( {}, Symbol.toStringTag, { value, configurable: true } ) const __nsassign = (target, source) => Object.defineProperties( target, Object.fromEntries(Object.entries(source).map( ([key, value]) => [ key, { value, writable: true, configurable: true } ] )) )

What do you think of this transform for TypeScript namespace? It’s meant to more accurately reflect the runtime it becomes.

5 months ago 2 0 0 0
Preview
Webflow Donates $150,000 to Support Astro's Open Source Mission | Astro We are happy to announce Webflow's $150,000 donation to Astro and selection of Astro to power their new AI code gen capabilities, coming soon.

Thrilled to announce Webflow's $150,000 donation to support Astro's open source development! PLUS... Webflow chooses Astro to power their just-announced AI app gen tool, coming soon.

7 months ago 56 9 3 1
That HTML Blog (@vanillaweb@intuitivefuture.com) And now, the post you've all been waiting for… (probably not, but you get it anyway!) 😂 The #CSS Framework Wars™ have come to an end. And we can thank…#Tailwind v4 for that! 🤯 Freely compose UI usi...

He did! Just found his repost of this... intuitivefuture.com/@vanillaweb/...

7 months ago 2 1 1 0
Preview
Don't Inherit the Box Model It's time to stop spreading this out-dated practice

Please stop inheriting the box-model. The supposed use-case for that is extremely out-dated, inheritance doesn't really help, and it actively makes real box-sizing use-cases more difficult!

This #CSS best practice was never the best to begin with:

www.oddbird.net/2025/09/04/b...

7 months ago 112 22 7 1

More Astro core at @viteconf.org!

Learn how your contributions make Astro what it is with @sarah11918.rainsberger.ca

7 months ago 13 2 0 0
Preview
GitHub - csskit/csskit: Refreshing CSS Refreshing CSS. Contribute to csskit/csskit development by creating an account on GitHub.

The thing about working on a big project like "the last CSS toolchain we'll ever need, built from ground up" is that there's a literal endless list of all the things that need doing.

I've found myself knee deep in ASM, to writing tech docs, to dreaming up new syntax.

github.com/csskit/csskit

7 months ago 26 4 4 0

I'm always thankful that Babel exists. To me it's the unsung hero of the JS ecosystem. It's so easy to prototype something quickly with it!

8 months ago 25 2 1 0

Go on… 🙃

8 months ago 1 0 0 0
A screenshot of successful arm64 and x64 builds for ubuntu, macos, and windows. Building everything takes 10 minutes, 25 seconds, but that’s all on ubuntu arm64, because most other systems take less than 5 minutes.

A screenshot of successful arm64 and x64 builds for ubuntu, macos, and windows. Building everything takes 10 minutes, 25 seconds, but that’s all on ubuntu arm64, because most other systems take less than 5 minutes.

I’ll be home tonight to package a private demo to collect feedback. Would you be interested, and would these builds cover your systems?

8 months ago 1 0 1 0
Advertisement

What do you wish local development could do? These are my pain points. What are yours?

8 months ago 1 0 0 0

I really don’t want to bundle anymore, but I want bundling performance (smaller payloads, faster starts), and I want them in my dev environment…

And I want my dev environment to closer match production.

I dunno. Maybe it will suck. Or maybe it can push the needle on local dev.

8 months ago 2 0 2 0

It will use module graphs to build a Zstandard shared dictionary (CDCH), so the server can tell the client all the imports up front, using 103 Early Hints headers.

This means the browser knows what imports are coming before HTML even begins, because…

8 months ago 1 0 1 0

Side Project Alert —

I built an HTTP/3 server for NodeJs, compiled from C++ to run on Windows, Linux, & macOS (x64 & arm64), so weI can local dev over H3.

There’s a small twist: it will accept module graphs for each endpoint, because…

8 months ago 6 0 2 1

Slightly diminish a band:

grins for wins

(known for “Spout” and “I mean, who really wants to rule the world, if you think about it”)

8 months ago 1 0 0 0

This popped up in a search, so wanted to let you and folks know it has been a standard:
www.w3.org/TR/mediaquer...

Looks like it’s coming to Chrome (merged July 2025).
chromium-review.googlesource.com/c/chromium/s...

8 months ago 2 0 1 0

Lazy dev question: Firefox supports style queries behind a flag, but is there any indicator on when they’ll ship it?

Asking for a cross browser friend.

8 months ago 1 0 0 0
Preview
modifierKey for KeyboardEvent — 164 bytes / 140 bytes gzipped modifierKey for KeyboardEvent — 164 bytes / 140 bytes gzipped - modifierKey.js

The detectioj isn’t too painful, tho i wouldn’t necessarily recommend modifying the prototype, as is done here.
gist.github.com/jonathantnea...

8 months ago 1 0 0 0
Preview
Proposal: Way to determine if any modifier key is pressed · Issue #151 · w3c/uievents (From whatwg/html#2856) Use Case Often times, when adding keyboard event listeners, one would like to determine if a modifier key is pressed (one of ctrlKey, metaKey, altKey, shiftKey) to create ke...

I have lived this. I feel your pain. I hope the platform can addresses this eventually.

github.com/w3c/uievents...

8 months ago 4 0 1 0
Advertisement

Turns out they were bugs, but amazing people are already on it. Go web!

github.com/web-platform...

8 months ago 2 0 0 0

Rewritten to use DSD to make the "structure" clearer.

codepen.io/paramagicdev...

:host() has some pretty annoying bugs, but this seems like the case where `:host()` doesn't get to hook into `exportparts` mappings 🤔

Also fascinating that chrome has divergent behavior from FF / Safari for me.

8 months ago 3 1 1 0