Sign in

Hugo Campos

@hugocampos.bsky.social
445 followers 836 following 111 posts

Principal Software Engineer at the Esri R&D Center in Zurich. Working on the ArcGIS Maps SDK for JavaScript. Typescript, CSS, Web Components, WebGL, GIS. He/Him

PostsRepliesMedia
Reposted by Hugo Campos
Rob Palmer @robpalmer.bsky.social · 13h
ECMAScript excitement 😉 Congrats to @ashley-c.bsky.social from TechAtBloomberg on advancing the Composites proposal to Stage 2 at @tc39.es today 🎉 Composites are objects that are compared by value instead of identity. They are an evolution of Record & Tuple proposal.
const pos1 = Composite({ x: 1, y: 4 });
const pos2 = Composite({ x: 1, y: 4 });
pos1 === pos2; // true

const positions = new Set(); // the standard ES Set
positions.add(pos1);
positions.has(pos2); // true
58914
Reposted by Hugo Campos
Artem Zakharchenko @kettanaito.com · 8h
I'm excited to announce MSW v3.0! 🥳 - Leaner dependency graph and smaller size; - ESM-only; - Granular entrypoints; - GraphQL subscriptions; - Socket-based network interception in Node.js; - And much more! mswjs.io/blog/introd...
mswjs.io
Introducing MSW 3.0
ESM, GraphQL subscriptions, and the best interception algorithm in the world.
3537
Reposted by Hugo Campos
VoidZero @voidzero.dev · 28/09/2026
Vite+ 1.0 is here 🚀 A single `vp` CLI for managing your Node.js runtime, package manager, and frontend toolchain. Built on top of Vite, Vitest, Rolldown, Oxc, and tsdown. All with a single config. Free and open source under the MIT license. Start with `vp create` or migrate with `vp migrate`.
voidzero.dev
Announcing Vite+ 1.0
Vite+ 1.0 is here. One CLI manages your runtime, package manager, and frontend toolchain.
213532
Reposted by Hugo Campos
Artem Zakharchenko @kettanaito.com · 21/09/2026
This is such a silly mistake and yet I see you making it all the time in your tests. ❌ Do NOT run cleanup after assertions ✅ Schedule the cleanup via hooks or use Disposable Objects A seemingly tiny change that'll have tremendous impact on your tests, especially memory-wise.
Code snippets illustrate proper and improper cleanup methods for WebSocket tests, emphasizing memory management in asynchronous operations.
2364
Reposted by Hugo Campos
Anthony Fu @antfu.me · 16/09/2026
It's been a while... Introducing Devframe v1.0 🚀 The framework for building DevTools that can run everywhere, for any meta-framework, for both humans and agents. Check out the announcement post and join our Discord 👇
devfra.me
Pluggable, Extensible, and Playful DevTools
Introduction to Devframe, a framework for building pluggable, extensible, and playful DevTools.
614630
Reposted by Hugo Campos
Seb ⚛️ ThisWeekInReact.com @sebastienlorber.com · 15/09/2026
💡 OpaqueRange is nice This inspired me this universal syntax highlighter that works with a gpu model to highlight a <textarea> The fun part is that you can mix multiple languages within the same <textarea> 🤪 github.com/slorber/gpu-...
2122
Reposted by Hugo Campos
Laurie Voss @seldo.com · 14/09/2026
For the last 2 years I have been tracking a generational change in the nature of software development, and I think I've finally decided where all of this turmoil is going to end up. It's good news, but not for everybody. seldo.com/posts/we-are-all-product-…
seldo.com
We are all Product Engineers now | Seldo.com
Agents are eating the software development lifecycle from the bottom up — code generation already gone, review and ops following fast. What remains is figuring out what people actually want, which can&#x27;t be automated or scaled. That job is called product engineering, it pays $240k, and nobody&#x27;s training for it.
87318
Reposted by Hugo Campos
Camille Roux @camilleroux.com · 14/09/2026
gpu-lexer : coloration syntaxique expérimentale via WebGPU, sans grammaire par langage. Un modèle devine le type de chaque token selon le contexte, même sur du code inédit. Bundle de 27.5KB, 90,2% d'accord avec Shiki. ⬇️ gpu-lexer.vercel.app 📬 Recevoir ma veille
Un highlighteur de syntaxe expérimental et multilingue basé sur WebGPU, montrant un exemple de code JavaScript avec la fonction highlight() et une explication de son fonctionnement utilisant l'intelligence artificielle pour identifier les types de tokens dans le code source.
111
Reposted by Hugo Campos
Justin Fagnani @justinfagnani.com · 09/09/2026
I wrote about what I've been up to with my new programming language! Zena targets WebAssembly GC, with a TypeScript-like syntax, sound type system, and lots of cool features like pattern matching, async cancellation, borrow checking, WASI integration, and more! justinfagnani.com/2026/09/09/z...
justinfagnani.com
Zena: A new Wasm-first programming language
410526
Reposted by Hugo Campos
Vitest @vitest.dev · 03/09/2026
Vitest 5 is here! 🎉 - Big performance improvements (vm pools up to 53% faster, ~18% boost across the board including Browser Mode) - New builtin Trace View in Browser Mode - Nested projects support - New benchmarking API - New `vi.when` API - Better defaults - And a lot of bug fixes!
vitest.dev
Announcing Vitest 5.0
Vitest 5.0 Release Announcement
221744
Reposted by Hugo Campos
Lars @webpro.nl · 26/08/2026
✂️ Knip v6.32.3 is out Some 🔥 fixes by no less than 8 new contributors 🧡 Still in awe how the downloads keep ramping up (2.5M/day!) — hopefully means both hoomans and agents cleaning up after 'emselves... 🧹 Watch this space, moar is coming! Changelogs: github.com/webpro-nl/kn... Knip: knip.dev
02710
Reposted by Hugo Campos
Ryan Carniato @ryansolid.bsky.social · 19/08/2026
For those looking for more details after the release announcement here they are. Solid's approach to Async is one of kind. And more than that it has real implications. www.solidjs.com/blog/async-s...
37314
Reposted by Hugo Campos
Andrew Branch @andrewbran.ch · 15/08/2026
If you’re not stalking TypeScript PRs, you might be surprised how much you can do with the API in nightlies (and even in 7.0 stable), so here’s a tiny demo that I think hits some of the highlights. 🧵
A package.json in VS Code after npm installing typescript@next
412720
Reposted by Hugo Campos
SolidJS @solidjs.com · 13/08/2026
🚨 Solid 2.0 has reached Release Candidate! 🎉🥳 Async is first-class — computations return promises, the graph suspends and resumes itself. Plus optimistic mutations and a reactive core rebuilt from scratch. The Big Reveal 👇 www.solidjs.com/blog/solid-2... 1/3
615225
Reposted by Hugo Campos
TypeScript @typescriptlang.org · 28/07/2026
Have you been using TypeScript 7? @ahejlsberg.bsky.social shows off what 10x faster build & editing experiences look like with @vscode.dev!
youtube.com
TypeScript 7 Is Here (And It's 10× Faster)
YouTube video by Microsoft Developer
57018
Reposted by Hugo Campos
VoidZero @voidzero.dev · 22/07/2026
Type-aware Linting via Oxlint is now stable 🎉 oxc.rs/blog/2026-07...
oxc.rs
Type-Aware Linting Stable
A collection of high-performance JavaScript tools written in Rust
220728
Hugo Campos @hugocampos.bsky.social · 08/07/2026
I've been waiting for this for so long. The previews have worked wonderfully for us and it's so awesome to see 7.0.0 finally being released! Congrats to the whole team on this huge milestone.
060
Reposted by Hugo Campos
Lars @webpro.nl · 07/07/2026
✂️ Knip v6.25.0 is out → New cycles reporter (circular dependencies) → New plugins: eve, fumadocs → Many plugins significantly improved → Tons of UX + DX feats & fixes Let's go! Thank you 9️⃣ contributors 🫶 Changelogs: github.com/webpro-nl/kn... Knip: knip.dev
0454
Reposted by Hugo Campos
Vite @vite.dev · 23/06/2026
🚀 Vite 8.1 is out ⚡ Experimental Full Bundle Mode: ~15x faster dev server startup & ~10x faster full reloads on large apps 🧩 Chunk Import Map to keep chunks stable & improve caching 🦀 WASM ESM integration 💡 Lightning CSS on the road to default 👀 and more! vite.dev/blog/announc...
vite.dev
Vite 8.1 is out!
Vite 8.1 Release Announcement
119935
Reposted by Hugo Campos
Astro @astro.build · 22/06/2026
Astro 7 is here! A new Rust compiler, a new Rust Markdown/MDX processor, Vite 8 and more. Get ready for 60%+ faster builds. astro.build/blog/astro-7/
astro.build
Astro 7.0 | Astro
Astro 7.0 brings faster builds with Vite 8, a new Rust compiler, Advanced Routing, background dev server support, and structured logging.
224162
Reposted by Hugo Campos
TypeScript @typescriptlang.org · 18/06/2026
📣 TypeScript 7's Release Candidate is now out! 📣 The new native rewrite is almost here. Try it out on your codebases, and make sure your team is ready for the upcoming 7.0 release!
devblogs.microsoft.com
Announcing TypeScript 7.0 RC - TypeScript
The Release Candidate for TypeScript 7.0 is now available!
525152
Reposted by Hugo Campos
Visual Studio Code @vscode.dev · 17/06/2026
⚡ Every token matters in agentic coding workflows. Learn how the GitHub Copilot team is improving token efficiency in VS Code through smarter caching, tool search, WebSockets, and specialized subagents. 📖 Read the full post: aka.ms/vscode/blog/...
aka.ms
Improving token efficiency in GitHub Copilot
Learn how we're improving token efficiency in GitHub Copilot to reduce costs and latency for users.
1143
Reposted by Hugo Campos
Bramus @bram.us · 15/06/2026
New demo: Animated CSS Grid Layout. codepen.io/bramus/pen/o... Here’s the thing: No View Transitions. No JS at all. Instead, it uses Anchor Positioning to anchor the cell contents to the cell. Then, CSS transitions are used to animate the contents to their new location as the grid re-layouts.
416422
Reposted by Hugo Campos
Jen Simmons @jensimmons.bsky.social · 08/06/2026
What web technology is coming in Safari 27.0? Find out here. webkit.org/blog/17967/n...
webkit.org
News from WWDC26: WebKit in Safari 27 beta
Safari 27 beta is here.
68012
Reposted by Hugo Campos
VoidZero @voidzero.dev · 04/06/2026
VoidZero is joining Cloudflare. Our mission stays the same: to make JavaScript developers more productive than ever before. Vite, Vitest, Rolldown, Oxc, and Vite+ remain MIT-licensed. Evan and the VoidZero team will continue leading them.
VoidZero + Cloudflare
1027756
Hugo Campos @hugocampos.bsky.social · 03/06/2026
www.esri.com/en-us/softwa...
esri.com
Why AI Orchestration Belongs in the Browser Why AI Orchestration Belongs in the Browser
How browser-native orchestration enables AI agents to interact directly with live map state.
030
Reposted by Hugo Campos
Chrome for Developers @developer.chrome.com · 19/05/2026
With the HTML-in-Canvas API announced at #GoogleIO, add DOM elements directly to your 3D environment, inheriting native support for screen readers, translation, and even autofill → goo.gle/3RQ8v49
0143
Reposted by Hugo Campos
Sarah Drasner @sarahedo.bsky.social · 19/05/2026
💥 Game changer for Web Development announced at GoogleIO- Modern Web Guidance! It’s expert-vetted skills for web development based on best practices of latest specs and APIs. It ensures your agent/coding harness doesn’t default to older and out of date patterns to build sites.
612016
Reposted by Hugo Campos
Marvin Hagemeister @marvinh.dev · 17/05/2026
Speeding up the JS ecosystem OXC edition 🚀 We made both oxfmt and oxlint 50% faster on projects with >50k directories. marvinh.dev/blog/speedin...
marvinh.dev
Speeding up the JavaScript ecosystem - oxlint and oxfmt
Future versions of oxlint and oxfmt will be ~50% faster on projecs with many (>=20k) directories.
618024
Reposted by Hugo Campos
VoidZero @voidzero.dev · 07/05/2026
🚀Rolldown 1.0 is here!🚀 Rust-based high-performance JavaScript bundler. 🏎️ Runs at native speed that’s up 30x faster than Rollup 🤝 Compatible with existing Rollup & Vite plugins ⚡The underlying bunder for Vite After 2 years, Rolldown is officially stable and has 20+M weekly downloads.
535168
Reposted by Hugo Campos
Vladimir @vladimir.berlin · 05/05/2026
@vitest.dev is going framework agnostic, and we need your feedback!
github.com
[Proposal] Framework-Agnostic Vitest · vitest-dev vitest · Discussion #10271
Vitest's tight coupling with Vite has historically been one of its greatest strengths: instant HMR, a unified config, and a shared plugin ecosystem made it the natural choice for projects already i...
69022
Reposted by Hugo Campos
James @43081j.com · 27/04/2026
we launched a new @e18e.dev mini-site today! replacements.fyi acts as a super simple frontend to the module replacements data. we noticed the data wasn't very discoverable, so this is a focused tool for when you want to quicky look up if something has alternatives (esp. native ones!)
e18e.dev
replacements.fyi - A new module replacements website
A look at the new module replacements website and the collaboration that went into it
412230
Reposted by Hugo Campos
TypeScript @typescriptlang.org · 21/04/2026
TypeScript 7.0 Beta is here! Built on a new native and parallelized foundation, it's already being used on multi-million line codebases. Read up more here and try it on your projects today! devblogs.microsoft.com/typescript/a...
devblogs.microsoft.com
Announcing TypeScript 7.0 Beta - TypeScript
Today we are absolutely thrilled to announce the release of TypeScript 7.0 Beta! If you haven’t been following TypeScript 7.0’s development, this release is significant in that it is built on a comple...
232773
Reposted by Hugo Campos
Storybook @storybook.js.org · 08/04/2026
Storybook 10.3 is out! ✨ Storybook MCP for React ♿ A11y overhaul fixes 100s of issues 🧑‍💻 CLI overhaul for faster, more reliable install 💅 New Viewports and Zoom UI ✅ New onboarding guide 🏭 Type-safe CSF factories for Vue, Angular, and Web Components Take a look ⤵️
storybook.js.org
Storybook 10.3: MCP, a11y improvements, & workflow upgrades
Component-driven development for humans and agents
14611
Reposted by Hugo Campos
Una Kravets @una.im · 03/04/2026
Real DOM content in a canvas: fully searchable, translatable, inspectable. You can have forms, add WebGL effects & much more. Imagine if this was a customizable select 🤯 A little WIP exploration (not finished) for a very exciting API. github.com/WICG/html-in...
414511
Hugo Campos @hugocampos.bsky.social · 27/03/2026
This article is so nice! It really goes deep into reactivity and how signals work. And those little animations showing state and notification propagation are soooo beautiful 🤩
130
Reposted by Hugo Campos
TypeScript @typescriptlang.org · 23/03/2026
TypeScript 6.0 is now available! This release brings better type-checking for methods, new standard library features, new module features for Node.js, and more! But most important, this release brings us one step closer to the upcoming native-speed 7.0! devblogs.microsoft.com/typescript/a...
devblogs.microsoft.com
Announcing TypeScript 6.0 - TypeScript
TypeScript 6.0 is now available! TypeScript 6 is a stepping-stone release, aligning with the upcoming native-speed 7.0 release.
631687
Reposted by Hugo Campos
Vitest @vitest.dev · 12/03/2026
Vitest 4.1 is out! 🚀 ✅ Vite 8 support from day 1 🏷️ Test tags to organize, filter & apply shared options 🪝 New hooks for easier tracing, transactions and AsyncLocalStorage 🔍 Async leak detection 🤖 Agent reporter to reduce token usage And much more! Full blog post at vitest.dev/blog/vitest-...
vitest.dev
Announcing Vitest 4.1
Vitest 4.1 Release Announcement
116732
Reposted by Hugo Campos
Evan You @evanyou.me · 12/03/2026
It’s here. github.com/vitejs/vite/...
github.com
Release v8.0.0 · vitejs/vite
Please refer to CHANGELOG.md for details.
724420
Reposted by Hugo Campos
TC39 @tc39.es · 11/03/2026
ECMAScript Euphoria! 🎉 We don't always post when a single proposal advances, but when we do, it's Temporal -> Stage 4. Just days shy of 9 years from Stage 1, a herculean effort on the part of many champions, delegates, invited experts, and contributors, past and present. Thank you all! 🙌
220948
Reposted by Hugo Campos
Justin Fagnani @justinfagnani.com · 10/03/2026
🎉 I'm so excited that scoped custom element registries is landing in Chrome and Edge! 🥳 This solves one of the biggest complaints with the web components APIs: the global tag name namespace. Standards is a long game though: I first proposed this in 2017! 😲 developer.chrome.com/blog/scoped-...
developer.chrome.com
Make custom elements behave with scoped registries  |  Blog  |  Chrome for Developers
You can now encapsulate custom elements.
35915
Reposted by Hugo Campos
TypeScript @typescriptlang.org · 06/03/2026
The Release Candidate for TypeScript 6.0 is now available! Read up on what's coming up with 6.0 & 7.0, and try it out on your codebase today! devblogs.microsoft.com/typescript/a...
devblogs.microsoft.com
Announcing TypeScript 6.0 RC - TypeScript
Today we are excited to announce the Release Candidate (RC) of TypeScript 6.0! To get started using the RC, you can get it through npm with the following command: npm install -D typescript@rc TypeScri...
214223
Reposted by Hugo Campos
Boshen @boshen.github.io · 24/02/2026
Announcing Oxfmt Beta * 100% Prettier Compatibility * Additional File Formats * Tailwind CSS Integration * Import Sorting * package.json Sorting * Embedded Language Formatting * Node.js API * `--migrate prettier` * config overrides * Full IDE support oxc.rs/blog/2026-02...
oxc.rs
Oxfmt Beta
A collection of high-performance JavaScript tools written in Rust
420434
Reposted by Hugo Campos
VoidZero @voidzero.dev · 19/02/2026
Chunks are now entry-aware in Rolldown 1.0.0-rc.5 ⚡ What does that mean? When grouping chunks via `codeSplitting`, they can now be automatically split per entry point (usually per page), so users download less unused JavaScript. Just set `entriesAware: true`.
Infographic showing Rolldown's entriesAware code splitting feature in 3 steps. Step 1 shows three entry points (Dashboard using chart.js, Admin using marked, Landing using gsap - all sharing es-toolkit). Step 2 shows the problem: without entriesAware, all entries load a single 305KB vendor.js containing all libraries. Step 3 shows the solution: with entriesAware enabled, chunks are split by usage - a shared 8KB chunk for es-toolkit plus entry-specific chunks (195KB for dashboard, 40KB for admin, 63KB for landing), reducing average page load to 107KB and eliminating unused library downloads. Code snippet shows the configuration: entriesAware: true and entriesAwareMergeThreshold: 20000.
3504
Reposted by Hugo Campos
TypeScript @typescriptlang.org · 11/02/2026
TypeScript 6.0 beta is now published! This release brings - inference improvements for functions - updates to package.json 'imports' - the Temporal APIs - alignments for the upcoming TypeScript 7.0 - & more! Try it today! devblogs.microsoft.com/typescript/a...
devblogs.microsoft.com
Announcing TypeScript 6.0 Beta - TypeScript
Today we are announcing the beta release of TypeScript 6.0! To get started using the beta, you can get it through npm with the following command: npm install -D typescript@beta TypeScript 6.0 is a uni...
314835
Reposted by Hugo Campos
VoidZero @voidzero.dev · 22/01/2026
Rolldown 1.0 RC is here 🎉 🔒 Stable API: No breaking changes planned before 1.0 ⚡ 10-30x faster than Rollup while staying compatible 🧩 Multiple chunking algorithm improvements 📦 3,400+ commits since beta: 749 features, 682 fixes, 109 perf optimizations
420840
Hugo Campos @hugocampos.bsky.social · 22/01/2026
@rolldown.rs just released the first RC version 🎉 We’ve been using the betas for a while for our custom dev server and it has been great. It’s awesome to see it stabilize! github.com/rolldown/rol...
rolldown.rs
Rolldown | Rust bundler for JavaScript
Fast Rust-based bundler for JavaScript with Rollup-compatible API
030
Reposted by Hugo Campos
VoidZero @voidzero.dev · 21/01/2026
The first beta for @vitest.dev 4.1 is out! 🧪 ◆ Chai-style spy assertions (`toHaveBeenCalled`, etc.) ◆ `userEvent.wheel()` for browser mode ◆ Enhanced retry options ◆ Disposable returned from `doMock()` ◆ Coverage ignore start/stop hints ◆ and more 👀 Try now by installing vitest@beta
github.com
Release v4.1.0-beta.1 · vitest-dev/vitest
🚀 Features Return a disposable from doMock()  -  by @kirkwaiblinger in #9332 (e3e65) Added chai style assertions for spying  -  by @ronnakamoto and @sheremet-va in #8842 (841df) Update to sinon...
2486
Reposted by Hugo Campos
Rob Palmer @robpalmer.bsky.social · 20/01/2026
ECMAScript excitement 😉 Congrats to Dan Minor @mozilla.org on advancing the Upsert proposal to Stage 4 at TC39 today 🎉 let map = new Map(); map.getOrInsert(key, defaultVal); It lets you set a default value on a map key without overwriting an existing value 👍
// Currently
let prefs = new getUserPrefs();
if (!prefs.has("useDarkmode")) {
  prefs.set("useDarkmode", true); // default to true
}

// Using getOrInsert
let prefs = new getUserPrefs();
prefs.getOrInsert("useDarkmode", true); // default to true
1658