Destinations
Explore handpicked luxury destinations around the globe

One CLI, one config file: adding browser tests to a Vite+ project
A typical frontend setup has an ESLint config, a Prettier config, lint-staged and Husky for the...

Game dev techniques that made our Vue web app 20x faster
Before web dev I made video games for about 5 years. Unity, C#, real-time multiplayer, frame budgets....

Making a 240k-record org chart load in a browser
At Agentnoon we build org chart software for large enterprises. Our customers range from 5,000 to...

300 Installs of DX Toolkit 🚀
Last week, I shared an update when DX Toolkit crossed its first major milestone. Today, we've...

A Vue Upload Workflow: Axios Progress and Private Storage Keys
Short answer: a Vue frontend can upload a file directly with Axios and a presigned URL while showing...

One Small Accessibility Fix in VitePress - My First Open-Source PR
I’ve spent most of my time building personal projects, so I wanted to try something different:...

EliteGrid 0.2.0: a modular TypeScript data grid (77 kB, zero deps, 32 features)
We've been building EliteGrid, a TypeScript data grid for React, Vue and plain JavaScript. 0.2.0 is...

Why Your Loading Spinner Flashes, and the Two Numbers That Fix It in Vue
You click a button, the request takes 80ms, and a spinner appears for a single frame. It doesn't look...

Third-Party Game iframe White Screen: How I Tracked Down the Root Cause with sandbox and postMessage Protocol
When integrating third-party HTML5 games, I ran into two seemingly unrelated problems: the game...

How to keep VitePress docs in sync with your code
To keep VitePress docs in sync with your code, import every code sample from your source files and...