Ashley Claymore
ashley-c.bsky.social
Ashley Claymore
@ashley-c.bsky.social
JavaScript Infrastructure & Tooling at Bloomberg. TC39 Delegate. London.
Slides done for one of my two upcoming tc39 agenda items.

Composites comparator choice: docs.google.com/presentation...

(Yet to be finalised) agenda here:
github.com/tc39/agendas...
Composite November 2025
Composites' Comparator Choice For discussion
docs.google.com
November 7, 2025 at 5:21 PM
Reposted by Ashley Claymore
Lovely walk into the office with @ashley-c.bsky.social 🌅
October 28, 2025 at 9:18 AM
Great to get that hour back that we loaned out back in March but can't shake the feeling that should have charged interest
October 26, 2025 at 9:18 AM
. @viteconf.org was the first in-person conference I've been to and it set the bar high!
Excellent talks and really welcoming atmosphere.
Amsterdam is a fantastic city.
Thanks to everyone for the geeky JS chats.
October 11, 2025 at 11:41 AM
If I add `npm run build` to the auto-approve list and it has edit access to package.json - have I auto approved everything?
August 31, 2025 at 7:45 AM
I've found chatting with LLMs very useful. But have had to turn off inline suggestions. Too much time spent reading the suggestion, only to reject it because it's not what I'm trying to do.
If I've only typed two characters, that is not enough to read my mind.
July 31, 2025 at 9:58 AM
Expandable hovers 😍
Know these have been in the works for a while and I'm so excited to try them out.

devblogs.microsoft.com/typescript/a...
July 8, 2025 at 9:31 PM
Capturing for posterity:
I asked ChatGPT "When do you think there will be a best selling novel written entirely by AI?"

A: "You might see a fully AI-authored book in the Amazon Top 100 by the late 2020s, and a New York Times best-seller by early 2030s."
July 6, 2025 at 8:41 PM
First trip to NY!
80/20% nervous/excited.

Watch films or try and code without a copilot on the flight?
June 22, 2025 at 3:38 PM
I'm sure I read somewhere that there was a plan to add a new React hook for getting a representation of the current component stack to help with debugging/error reporting.
But I can't find it anywhere.
Did I dream this?
cc: @en-js.bsky.social @no.lol
June 18, 2025 at 1:32 PM
Back from a week hiding in Wales 🏴󠁧󠁢󠁷󠁬󠁳󠁿. Mostly enjoying the countryside, steam trains, and castles.
Did do a little bit of c++ for the first time in years, having a go at implementing something in v8.
I had not missed preprocessor header includes and macros. JS has made me soft.
June 16, 2025 at 9:19 PM
How long until all the seo companies transition to aio?

chatgpt.com/share/684b29...
June 12, 2025 at 7:28 PM
TIL

assert.partialDeepStrictEqual(
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[4, 5, 8],
);

My gut guess would have been that only common prefix would pass. I can see how this is also useful, just surprised me.

nodejs.org/api/assert.h...
June 2, 2025 at 6:49 PM
What if the JSX transform was:

(x) => <elm prop1={1} prop2={x} />;

to

const _staticProps = { prop1: 1 };

(x) => jsx("elm", {
__proto__: _staticProps,
prop2: x
});

i.e the contract is that the props on the prototype never change so don't need to be diffed.
May 29, 2025 at 8:34 AM
Reposted by Ashley Claymore
Myself and @ashley-c.bsky.social wrote a post on the TypeScript Go port (originally published on LogRocket). If you'd like to read it, it's here:

johnnyreilly.com/typescript-g...
TypeScript is going Go: Why it’s the pragmatic choice | johnnyreilly
TypeScript is being ported to Go. This is a reflection on the port, and what it means for the TypeScript ecosystem.
johnnyreilly.com
May 20, 2025 at 6:25 AM
Reposted by Ashley Claymore
Great explanation of the journey from Records and Tuples to Composites and why they are useful by @mattpocock.com and TC39er @ashley-c.bsky.social

youtu.be/hFenspfGLTk?...
Arrays, objects... now ‘composites’?
YouTube video by Matt Pocock
youtu.be
May 10, 2025 at 7:00 AM
Reposted by Ashley Claymore
ECMAScript explanations 😉

@mattpocock.com and proposal champion @ashley-c.bsky.social explain why TC39 Stage 2 Record & Tuple has been withdraw and replaced with the new Stage 1 Composites proposal 👍

Contains discussion of performance expectations and constraints.

youtu.be/hFenspfGLTk
Arrays, objects... now ‘composites’?
YouTube video by Matt Pocock
youtu.be
May 10, 2025 at 12:33 AM
YIRL* that in V8 even empty functions hold the context they were created in. Had misremembered that part of mrale.ph/blog/2012/09...

* yesterday I relearned
Grokking V8 closures for fun (and profit?)
mrale.ph
May 7, 2025 at 8:58 AM
Reposted by Ashley Claymore
@ashley-c.bsky.social and I have written a @logrocket.bsky.social post on our take on the TypeScript Go port. Many thanks to @joshuakgoldberg.com and @jakebailey.dev for their very useful input ❤️

blog.logrocket.com/typescript-g...
TypeScript is going Go: Why it's the pragmatic choice - LogRocket Blog
Explore why the TypeScript team is porting the compiler to Go in TypeScript 7. Learn how this shift impacts performance, tooling, and the future of the TypeScript ecosystem.
blog.logrocket.com
April 17, 2025 at 5:34 AM
Reposted by Ashley Claymore
ECMAScript excitement 😉

Congrats to @ashley-c.bsky.social on advancing the Composites proposal to Stage 1 at TC39 today 🎉

This is the evolution of Stage 2 Record & Tuple which has now been withdrawn.

A key difference is that Composites are objects, not primitives.

github.com/tc39/proposa...
GitHub - tc39/proposal-composites
Contribute to tc39/proposal-composites development by creating an account on GitHub.
github.com
April 14, 2025 at 7:11 PM
Fantastic interview. Great questions and lots of information. I'm so pleased such high quality content was available right after the announcement.
your @typescriptlang.org just got 10 times faster. We sat down with Anders Hejlsberg to ask questions library authors, power users, tooling makers, and compiler contributors might have.
TypeScript is being ported to Go | interview with Anders Hejlsberg
YouTube video by Michigan TypeScript
youtu.be
March 11, 2025 at 8:54 PM
A CLI was taking a while to exit, the awesome www.npmjs.com/package/why-... to the rescue.

Found some code using this pattern:

```
await Promise.race([someRequest, setTimeoutPromise(15_000)]);
```

Even though the outer promise resolves, the timer promise keeps the process alive.
why-is-node-running
Node is running but you don't know why? why-is-node-running is here to help you.. Latest version: 3.2.2, last published: 2 months ago. Start using why-is-node-running in your project by running `npm i...
www.npmjs.com
March 7, 2025 at 3:16 PM
Reposted by Ashley Claymore
Myself and @pcwilliams.net continue to be humbled by the response we had at @perfnow.bsky.social. Our talk “Bloomberg Becomes Browser” has been published! You can watch it here: youtu.be/y1MCLZm8yAY?...
Bloomberg Becomes Browser | Jason Williams & Paul Williams | performance.now() 2024
YouTube video by Web Conferences Amsterdam
youtu.be
January 24, 2025 at 1:31 PM
Most wanted: a way to improve IDE JSON schema error messages
January 16, 2025 at 6:47 PM
Reposted by Ashley Claymore
Oh god no. It was shit like this that made it clear we needed something like the extensible web manifesto.

It's a high level DB type, which needed a promise-like thing, but they created something bespoke for this one API. It's the antithesis of the extensible web.
January 2, 2025 at 1:20 PM