Sign in

Stephen Cooper

@scooper.dev
510 followers 450 following 93 posts

Senior Developer AG Grid @ag-grid.bsky.social Conference speaker and blogger Typescript, Angular and React Performance ✝️ 4 Children, 2 🐕

PostsRepliesMedia
Stephen Cooper @scooper.dev · 08/05/2026
Yes that's a good idea!
030
Reposted by Stephen Cooper
Dominik 🔮 @tkdodo.eu · 13/11/2025
🤔 What if there were a conference without talks? Just hanging out with OSS maintainers & builders, seeing what they’re working on, and learning cool stuff by actually talking to people. 🤯 What if hallway track turned into the whole event! 💡 @tannerlinsley.com is exploring it. Interested? ⬇️
webforgeconf.com
Web Forge Conf - A new kind of web developer conference
A community funded, not for profit event built for creators and the developers who use their work. Less stage. More story. All signal.
1512020
Stephen Cooper @scooper.dev · 15/11/2025
That sounds great!
010
Stephen Cooper @scooper.dev · 16/09/2025
It was a pleasure to be able to speak and share what I had learnt while reducing the bundle size of AG Grid.
040
Stephen Cooper @scooper.dev · 05/08/2025
Sorry to hear that, hope something comes along for you quickly!
010
Reposted by Stephen Cooper
Angular Connect @angularconnect.com · 15/07/2025
🎉 Just 2 months until AngularConnect! @scooper.dev from @ag-grid.bsky.social shares why you should be there! Our Premium Sponsor @ag-grid.bsky.social offers blazing-fast Charts! 🆓 Free forever 🚀 Built for big data 📊 Financial-ready 🏢 Enterprise features - no trial needed 🔗 ag-grid.com/charts
022
Stephen Cooper @scooper.dev · 20/06/2025
Can't wait for this one!!!
060
Stephen Cooper @scooper.dev · 11/06/2025
Ah getting major FOMO now!
020
Stephen Cooper @scooper.dev · 01/06/2025
Oh I didn't quite leave it to the last day to apply then 🤣
010
Stephen Cooper @scooper.dev · 29/05/2025
With an Angular app that includes an Angular lib I am seeing different bundle sizes based on changes in the versions used. Lib 17 + app 19 smaller than lib 18 + app 19 But lib 20 + app 20 is significantly smaller than both. No code changes, just package.json Is this expected / known about?
010
Stephen Cooper @scooper.dev · 15/05/2025
Oh exciting!
020
Stephen Cooper @scooper.dev · 15/05/2025
Just applied to speak @angularconnect.com 2025! Yes it's coming back!!! 🥳
020
Stephen Cooper @scooper.dev · 09/05/2025
What makes this even more interesting is that Chrome 136 looks to have improved things. But also the performance only really goes down when DevTools is open.
010
Stephen Cooper @scooper.dev · 08/05/2025
Ah looks like it has been raised as a Chrome issue but doesn't seem to have gone anywhere issues.chromium.org/issues/40488...
issues.chromium.org
Chromium
120
Stephen Cooper @scooper.dev · 08/05/2025
Ah maybe this is actually a Chrome related issue. Need to work out what is causing the following to take 50% of the performance profile. "Run Console Task" stackoverflow.com/questions/79...
stackoverflow.com
What is "Run console task" in Chrome performance profiling
I'm seeing some very slow performance in my JS code in an electron app I am trying to performance profile my application but the term that comes up is "Run console task" I have attached a
000
Stephen Cooper @scooper.dev · 07/05/2025
When profiling it looks to be related to the improved Error reporting that creates a JavaScript Error for each element. This really starts adding up if you have lots of elements on a page.
010
Stephen Cooper @scooper.dev · 07/05/2025
I am in the process of evaluating the changes in React performance between v18 and v19. Prod fairly stable. Dev 19 is significantly slower. I know we should never measure performance in Dev but in reality a lot of developers are doing just that! Has anyone else noticed this?
331
Stephen Cooper @scooper.dev · 02/05/2025
It's always great to hear how AG Grid has positively impacted not only the applications but a developer too! ❤️
121
Reposted by Stephen Cooper
dan @danabra.mov · 26/04/2025
added a little diagram at the end
2322
Reposted by Stephen Cooper
Lars Hanisch @flensrocker.de · 24/02/2025
I used JS private members for a long time, because they are awesome and really private. But I haven't thought about that the bundler can mangle the names, because they are private! All makes sense now... Thank you, @scooper.dev youtu.be/B8qrGmAbJFU
youtu.be
How We Reduced the Bundle Size of AG Grid w/ Stephen Cooper 🌟 #WeLearnTogether | TechStackNation.com
YouTube video by Tech Stack Nation
041
Stephen Cooper @scooper.dev · 14/02/2025
It's been a good day 😊 Always nice deleting code
638 Files changed  +258 -16,620
030
Reposted by Stephen Cooper
Jason Cohen @asmartbear.com · 07/02/2025
Smart Bear would have failed had I not listened to what customers were really saying. And almost always they were saying it via tech support, not via interviews, not via reviews, not via feature-submission forms. Support == product development
longform.asmartbear.com
Tech Support is sales
Tech support isn’t just troubleshooting; it’s the face of your company. Which means it’s your brand, your positioning, and when it’s excellent, it is sales.
1213
Stephen Cooper @scooper.dev · 02/02/2025
Nice work! 😃
020
Stephen Cooper @scooper.dev · 01/02/2025
I have thought of switching them all private and then fixing the build for the ones that are actually required. Similar approach really 😝
130
Stephen Cooper @scooper.dev · 01/02/2025
Have heard of that, will have to check if it can work on the class level.
020
Stephen Cooper @scooper.dev · 01/02/2025
Does anyone know of a tool that can run over a Typescript code base and suggest possibly unused public methods? What to automate the process of finding unused methods following code changes with the aim of minimal bundle size. (I don't fancy doing find for 500 that are marked public...)
241
Stephen Cooper @scooper.dev · 30/01/2025
I am relieved to see this view point expressed from a testing authority as this is what we have started telling people in support. I can't imagine the time that has been lost to unexpected test failures, especially when "it works fine in my browser" www.epicweb.dev/why-i-won-t-...
epicweb.dev
Why I Won’t Use JSDOM
Explore how JSDOM's browser simulation works, and learn front-end testing approaches using Vitest Browser Mode for direct browser testing and native APIs
041
Stephen Cooper @scooper.dev · 28/01/2025
I spent yesterday converting a load of AG Grid Angular examples to use signals. I love the DX and how easy it has become to enable OnPush with confidence. computed - the way you can just use signals and let Angular take care of the dependency updates is 🔥! Good work @angular.dev team!
192
Stephen Cooper @scooper.dev · 23/01/2025
Thanks for sharing!
020
Stephen Cooper @scooper.dev · 30/12/2024
And then a great follow up to my talk is this blog post tkdodo.eu/blog/ref-cal...
tkdodo.eu
Ref Callbacks, React 19 and the Compiler
Reflecting on useCallback, how the Compiler changed my thinking about it, and what React 19 has in store for Ref Callbacks...
000
Reposted by Stephen Cooper
React Summit @reactsummit.gitnation.org · 30/12/2024
😎Check out the talk recording "What Refs Can Do for You" by @scooper.dev. Watch it here⤵️ gitnation.com/contents/wha...
131
Stephen Cooper @scooper.dev · 17/12/2024
Introduction Over the past 15 years, the JavaScript ecosystem has expanded rapidly,... dev.to/filipsobol/d...
dev.to
Downsize your JavaScript: Mastering Bundler Optimizations
Introduction Over the past 15 years, the JavaScript ecosystem has expanded rapidly,...
010
Stephen Cooper @scooper.dev · 17/12/2024
Where can I find out more about how this is being used? Is this used to drop code during an application build?
010
Stephen Cooper @scooper.dev · 14/12/2024
And finally we have worked hard on providing codemods to do the majority of the upgrade for you, so do try and take advantage of that! Especially if you are an existing module user, the codemod will update all you import statements for you! ag-grid.com/react-data-g...
ag-grid.com
React Grid: Upgrading to AG Grid 33 | AG Grid
See whats new in AG Grid, view a full list of changes and migrate your React Data Grid to v33 with our Codemods. Download AG Grid v33.0.0 today: The best React Table & React Data Grid in the world.
010
Stephen Cooper @scooper.dev · 14/12/2024
Also should call out the new Theming API which means no more need for importing those CSS files above your component/ somewhere in the app. Having the CSS in the code also means it is split per module adding even more savings. ag-grid.com/react-data-g...
ag-grid.com
React Grid: Migrating to the Theming API | AG Grid
Migrating to the Theming API Download AG Grid v33.0.0 today: The best React Table & React Data Grid in the world.
110
Stephen Cooper @scooper.dev · 14/12/2024
Re-working our internals means we can now tree shake from a single bundle, greatly simplifying the path to minimal bundle size for our users. Not to mention the simplicity gains for us internally being able to work with just 2 packages instead of getting close to 20 separate ones.
110
Stephen Cooper @scooper.dev · 14/12/2024
This release has to be one of the greatest step forwards we have ever implemented! Really proud of what we have managed to achieve here. blog.ag-grid.com/whats-new-in...
blog.ag-grid.com
What's New in AG Grid 33
What's new in AG Grid 33 - bundle size reduction via modularization, async context menu items, customization of default column header content
100
Stephen Cooper @scooper.dev · 09/12/2024
You did ng-cruise!! That's one I remember dreaming of!
110
Stephen Cooper @scooper.dev · 09/12/2024
Some excellent additional information concerning ref callbacks
010
Stephen Cooper @scooper.dev · 09/12/2024
Thanks for writing this update!
010
Stephen Cooper @scooper.dev · 05/12/2024
Looking forward to making that change soon. Just having to give users time to update their legacy build tools.
000
Stephen Cooper @scooper.dev · 05/12/2024
Do you also touch on the difference between build target output? For example using #private syntax but down leveling under es2022 is a big no no
110
Stephen Cooper @scooper.dev · 05/12/2024
Yes a little of that, but also some cases of removing ... spread operators as that looked to prevent the object being spread from being tree shaken if the target object was not used.
000
Stephen Cooper @scooper.dev · 05/12/2024
The difference can be huge, I am currently updating our library to make the code more "resilient" to these differences. The changes involved are so small which is even scarier to be honest as a library author. Definitely need strong tests around this as it can be so easy to regress.
120
Stephen Cooper @scooper.dev · 05/12/2024
Is this a trade off for speed of build times with esbuild becoming the default in v19? Or is this offset by people using deferable components and hydration?
110
Stephen Cooper @scooper.dev · 04/12/2024
This is another ticket that describes more details and has some useful examples. github.com/evanw/esbuil...
github.com
Not able to treeshake library bundled with esbuild · Issue #2171 · evanw/esbuild
Awesome work on the esbuild library. It has saved us lot of time with deployments. // src/Checkbox.ts export const Checkbox = { Root: CheckboxRoot, // this is a component defined above Indicator: C...
110
Stephen Cooper @scooper.dev · 04/12/2024
bsky.app/profile/scoo...
010
Stephen Cooper @scooper.dev · 04/12/2024
This might actually be relevant github.com/evanw/esbuil...
github.com
How to handle esbuild tree shaking in author library · Issue #1573 · evanw/esbuild
I am the author of https://github.com/straker/kontra/ and would like to know what I need to change in my library in order for esbuild to properly tree shake it. Tree shaking works as expected when ...
120
Stephen Cooper @scooper.dev · 04/12/2024
Actually also looks like spreading into an object can cause items from the spread object not to be shaken. This is something I want to try just in esbuild itself to see if this is separate from Angular. But that might need to wait for tomorrow
110
Stephen Cooper @scooper.dev · 04/12/2024
Yes, definitely heard that too. In fact our bundle size tests caught a regression where an import like import * as _utils from 'path'; Caused none of that code to be tree shaken. This may also be dependent on the tsconfig build target and the format of the output code
110