Joaquín Sánchez

Joaquín Sánchez

@userquin.bsky.social

A fullstack and android developer, Vite's fanatical follower. Core team → @unocss.dev • @vitest.dev • @vuejs.org • elk.zone • @tresjs.org • vuetifyjs.com Ecosystem Team → @nuxt.com Mantainer → nuxt.vuetifyjs.com • https://vite-pwa-org.netlify.app

1.7K followers987 following186 posts

🚀 The PWA update train continues! @vite-pwa/vitepress v2.0.0 is officially out. Bringing all the latest PWA goodness and core improvements straight to your VitePress docs. Time to upgrade! ⚡️🛠️ github.com/vite-pwa/vit...

github.comReleases · vite-pwa/vitepressZero-config PWA Plugin for VitePress. Contribute to vite-pwa/vitepress development by creating an account on GitHub.
Joaquín Sánchez@userquin.bsky.social

After a few months of hard work, we're happy to announce the initial @unplugin-pwa v0.0.2 packages! We completely rearchitected the core. Just look at the diet: we went from 321 total dependencies down to just 22, cutting the install size from 43.3MB to 4.1MB. Leaner, faster, and bundler-agnostic.

After a few months of hard work, we're happy to announce the initial @unplugin-pwa v0.0.2 packages! We completely rearchitected the core. Just look at the diet: we went from 321 total dependencies down to just 22, cutting the install size from 43.3MB to 4.1MB. Leaner, faster, and bundler-agnostic.

Fixed color constrast (wcag-aa) adding some changes to the button layout: streamable.com/ed5kjm

streamable.comWatch Vite App - Google Chrome 2026-06-23 18-29-28 | StreamableWatch "Vite App - Google Chrome 2026-06-23 18-29-28" on Streamable.
Joaquín Sánchez@userquin.bsky.social

This is amazing, I'm speechless, this is the new `@vite-pwa/unplugin-pwa` UI Service Worker UI Switcher when enabling dev options, just a few HMR @vite.dev plugins and some client logic. We need to add support for @webpack.bsky.social and @rspack.dev , stay tuned. streamable.com/ue4qx1 #pwa

This is amazing, I'm speechless, this is the new `@vite-pwa/unplugin-pwa` UI Service Worker UI Switcher when enabling dev options, just a few HMR @vite.dev plugins and some client logic. We need to add support for @webpack.bsky.social and @rspack.dev , stay tuned. streamable.com/ue4qx1 #pwa

streamable.comWatch Vite App — Mozilla Firefox Navegación privada 2026-06-23 14-48-06 | StreamableWatch "Vite App — Mozilla Firefox Navegación privada 2026-06-23 14-48-06" on Streamable.

The workbox fork at Vite PWA Org. is ESM only (all its packages). Here a CJS example with webpack 5 using require(<esm>) to load the workbox-build webpack plugin (node ^22.14.0, and @rolldown.rs ^1.0.0.0-0 required for the build): #webpack #pwa

patak@patak.cat

Massive jump on ESM-only adoption! The difference with previous years growth shows how important @joyeecheung.bsky.social pragmatic require(esm) approach is going to be for the npm ecosystem (thanks a ton, once more!). If you are a maintainer, drop your dual setup and move to ESM-only, too 🙏

Joaquín Sánchez reposted

Joaquín Sánchez reposted

Massive jump on ESM-only adoption! The difference with previous years growth shows how important @joyeecheung.bsky.social pragmatic require(esm) approach is going to be for the npm ecosystem (thanks a ton, once more!). If you are a maintainer, drop your dual setup and move to ESM-only, too 🙏

Titus 🇵🇸@wooorm.com

Hello friends and welcome to another “how’s ESM vs CJS doing?!” A big win this time, at a year of `require(esm)` available! 38.0% of the popular npm packages now have ESM, up from 33.4% half a year ago. ESM-only is up from 12.6% to 16.0%. Particularly this non-dual, “vanilla” growth is very big!

Joaquín Sánchez reposted

The Vuetify project has experienced a major hack of it's Discord server, which has served as the glue for a thriving OSS community for a decade. The scope and scale of the damage that has been done is hard to describe.

🐐 Here @rspack.dev app building the service worker via @rolldown.rs with the workbox fork at @vite.dev PWA. Thank to Néstor (ZEPH) for the webpack/rsbuild examples and plugins review ❤️.

Joaquín Sánchez@userquin.bsky.social

🐐 Building dual service worker with webpack v5 via @rolldown.rs : - workbox runtime code splitting - import.meta.env using generateSW strategy (only ESM version) - env vars working: added those starting with VITE_ and PUBLIC_ prefix - SW build manifest (ala @vite.dev manifest) - tree shakeable #pwa

And here the build output: #webpack #workbox

Joaquín Sánchez@userquin.bsky.social

🐐 Building dual service worker with webpack v5 via @rolldown.rs : - workbox runtime code splitting - import.meta.env using generateSW strategy (only ESM version) - env vars working: added those starting with VITE_ and PUBLIC_ prefix - SW build manifest (ala @vite.dev manifest) - tree shakeable #pwa

🐐 Building dual service worker with webpack v5 via @rolldown.rs : - workbox runtime code splitting - import.meta.env using generateSW strategy (only ESM version) - env vars working: added those starting with VITE_ and PUBLIC_ prefix - SW build manifest (ala @vite.dev manifest) - tree shakeable #pwa

Daniel is amazing! After his talk at MadVue, he sat next to me and I watched him testing the new workflow live. I finally met some friends in person yesterday at MadVue, great day.

💥 just released a github action: `uppt` it aims to be a very simple, secure release workflow for maintainers that adheres to best security practices ⚪ trusted, staged publishing on npmjs.com ⚪ github environment protection ⚪ generated release PR + changelog ⚪ automatic release + publish on merge ✨

Joaquín Sánchez reposted

💥 just released a github action: `uppt` it aims to be a very simple, secure release workflow for maintainers that adheres to best security practices ⚪ trusted, staged publishing on npmjs.com ⚪ github environment protection ⚪ generated release PR + changelog ⚪ automatic release + publish on merge ✨

Joaquín Sánchez reposted

What do you think of a dev tool that helps you inspect components in your live app and then save that snapshot as a story in Storybook? 🤔 Backed by the incredible Vite devtools of course @antfu.me <3

Joaquín Sánchez reposted

Recent supply-chain poisoning incidents made one thing obvious: CI should not blindly trust floating @main refs. actionspack brings a pnpm-like lockfile to GitHub Actions: author in .github/workflows/src, inline safe workflows/actions, pin the rest to SHAs, and review updates with git diff.

github.comGitHub - sxzz/actionspack: Lockfile-first GitHub Actions workflow packerLockfile-first GitHub Actions workflow packer. Contribute to sxzz/actionspack development by creating an account on GitHub.

In case you need to enforce sha pinning, take a look at this package (la Anthony Fu's taze).

Andrey Sitnik@en.sitnik.es

Another GitHub Action hack where old versions were swapped to infect CI. socket.dev/blog/trivy-u... It’s another example of why you should pin actions in your workflows by commit SHA, not by version tags. For JS projects, use actions-up: github.com/azat-io/acti... For everything else: pinact.

Looks like we've got @rolldown.rs working natively with: ✅ envDir & envPrefix support. ✅ Full import.meta.env injection. ✅ Aggressive Tree-shaking (Dead Code Elimination). The best part? This isn't just for manual scripts. We can now use import.meta.env even with the generateSW strategy! 🤯

Joaquín Sánchez@userquin.bsky.social

We're adding legacy support for Vite < 8 via Rolldown, but we need to add the following features to Rolldown manually: - envDir and enfPrefix - import.meta.env

We've decimated the workbox-build footprint: 📦 From 350+ dependencies down to ~30. 🚀 ESM-first, Vite 8 ready, and powered by Node 22+. #PWA #ViteJS #Rolldown #WebDev #BuildTools

We're adding legacy support for Vite < 8 via Rolldown, but we need to add the following features to Rolldown manually: - envDir and enfPrefix - import.meta.env

Joaquín Sánchez@userquin.bsky.social

PWA Plugin v2 will be a necessary "clean break": Vite 8 + Rolldown required. ⚡️ 🚀 Native "Dual Service Worker" support: we serve native ESM to modern browsers and automatically fallback to Classic for the rest. The best of both worlds with zero config! ✅🚀 @vite.dev #PWA

@vite.dev 8 build almost done (it is fast running 2 builds in parallel), working on @rolldown.rs build:

Joaquín Sánchez@userquin.bsky.social

PWA Plugin v2 will be a necessary "clean break": Vite 8 + Rolldown required. ⚡️ 🚀 Native "Dual Service Worker" support: we serve native ESM to modern browsers and automatically fallback to Classic for the rest. The best of both worlds with zero config! ✅🚀 @vite.dev #PWA

PWA Plugin v2 will be a necessary "clean break": Vite 8 + Rolldown required. ⚡️ 🚀 Native "Dual Service Worker" support: we serve native ESM to modern browsers and automatically fallback to Classic for the rest. The best of both worlds with zero config! ✅🚀 @vite.dev #PWA

How did we do it? Our new Workbox fork is pure muscle: 📦 Tree-shakeable: Even when using the "@vite-pwa/workbox-swkit" barrel. 🛡️ IIFE Isolation: Runtime is auto-wrapped to prevent global scope collisions when using classic service worker. 🪓 Ultra-lean: From 346 dependencies down to just 14.

Just hacking ESM service worker support works with classic:

Joaquín Sánchez@userquin.bsky.social

After reviewing the custom build strategy at workbox-build fork, I have dual SW working at @vite.dev VanillaJS example with a custom pwa plugin 🎉: @tomayac.com @jeff.posnick.org #pwa

View full thread

The examples/workbox-cli/generate.ts module is working fine when using `swType: 'classic'` or `swType: 'module'` , but not with `swType: 'classic-and-module'`. You can find the esm-sw-detector module at packages/core/src/client/esm-sw-detector.ts.

The packages/core folder is the current vite-plugin-pwa, I need to add the node/vite stuff using my PR for vite environment api. I can give access to anyone at google, just reply to this message with the github username. #pwa

Joaquín Sánchez reposted

Replying to @patak.cat

Awesome projects, great teams ✌️

We're working on vite-plugin-pwa v2 version: - 🦾 workbox fork: from 340+ to just 20 dependencies ( @e18e.dev ) 🤯 - ⚡ @vite.dev 8 + Environment API support (v1 works with Vite 8) - 🔌 pwa plugin becomes modular, we don't need to hack integrations anymore (ala npmx.dev/package/serw... )

Joaquín Sánchez@userquin.bsky.social

👀 I have no idea what's going on, but 2.5 million downloads per week is insane🎉🥳 🤗: npmx.dev/package/vite...

Moving packages to a monorepo is great... until you hit the GitHub Releases page. 🫠 ​Come on @github, it's 2026! We need real workspace support: 🏷️ Mark MULTIPLE packages as latest 🔄 Better sorting for tags/releases (save us from the alphanumeric inferno 🔥) ​#monorepos #github