Sign in

Joaquín Sánchez

@userquin.bsky.social
1.7K followers 987 following 182 posts

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 • vite-pwa-org.netlify.app

PostsRepliesMedia
Joaquín Sánchez @userquin.bsky.social · 30/07/2026
😎
New unplugin-pwa inspecto running inside nuxt devtools v4 in a nuxt 5 app
150
Joaquín Sánchez @userquin.bsky.social · 18/07/2026
Integrating Vite PWA Inspector with @vite.dev devtools, the inspector can run also as a seperated middleware (ala vite-plugin-inspect or UnoCSS inspector). @tomayac.com #PWA
Vite PWA Inspector showing PWA web manifest including icons (like chrome devtools) integrated with Vite devtools.
1102
Joaquín Sánchez @userquin.bsky.social · 14/06/2026
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
webpack CJS configuration using require to load workbox-build ESM plugin to build the service worker
061
Joaquín Sánchez @userquin.bsky.social · 26/05/2026
🐐 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 ❤️.
rsbuild app build output using vite-pwa workbox via rspack plugin
061
Joaquín Sánchez @userquin.bsky.social · 24/05/2026
And here the build output: #webpack #workbox
build output in the terminal, just 148 miliseconds to build the classic and the module service worker; webpack 5.107 took 450 miliseconds
021
Joaquín Sánchez @userquin.bsky.social · 24/05/2026
🐐 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
an screenshot with 3 parts using webpack plugin on a webpack app v5 using type module (.mjs config file) using dual service worker build: on the left generated output with workbox runtime chunk code split; on the center some proces.env variables; and on the right, the classic service worker chunk showing those env variables, only exposing those starting with VITE_ and PUBLIC_
072
Joaquín Sánchez @userquin.bsky.social · 23/05/2026
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.
Picture at MadVue: Juan Nuñez, Alex Jover, Eduardo, Daniel and me
1190
Joaquín Sánchez @userquin.bsky.social · 17/05/2026
Added support for custom chunks fr both @vite.dev or @rolldown.rs , not just workbox; inlineWorkboxRuntime is just a shortcut for custom chunks: #pwa
service worker using multiple custom chunksservice worker dependency using custom chunk
141
Joaquín Sánchez @userquin.bsky.social · 14/05/2026
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! 🤯
screenshot with the code for generate service worker strategy using import.meta.env inside a runtimeConfig handler and the classic-sw generated with the import.meta.env data inside the registerRoute callbackscreenshot with the code for build service worker strategy using import.meta.env.DEV inside an if statement and the classic-sw generated with the if using import.meta.env.DEV  removed
110
Joaquín Sánchez @userquin.bsky.social · 13/05/2026
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
workbox-build fork dependencies adding back support from Vite 3.1 to Vite 8
050
Joaquín Sánchez @userquin.bsky.social · 07/05/2026
@vite.dev 8 build almost done (it is fast running 2 builds in parallel), working on @rolldown.rs build:
Vite 8 building 2 classic and module service workers in parallel with workbox chunk and sourcemap (35 milisenconds and 28 milesconds respectivelly)
061
Joaquín Sánchez @userquin.bsky.social · 03/05/2026
Just hacking ESM service worker support works with classic:
forcing classic service worker using supportsESM at registerSW optionsusing classic service worker with firefoxusing classic service worker with chrome
040
Joaquín Sánchez @userquin.bsky.social · 03/05/2026
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
Vite VanillaJS example with the main.js entry point with dual service worker (classic and module) and service worker ESM detector.Vite VanillaJS project with service worker type module at chromeVite VanillaJS project with service worker type module at firefoxcustom pwa plugin with Vite VanillaJS
071
Joaquín Sánchez @userquin.bsky.social · 01/05/2026
😎😁 Adding some vitest test at workbox (build) fork. #pwa
Vite PWA workbox-build fork preparing classic SW build with a warning when using @vite-pwa/worbox-swkit barrel export: 
[Vite PWA] Oh, you sweet summer child...
You're using the '@vite-pwa/workbox-swkit' barrel export in IIFE format.
Your users will need a NASA-grade connection to download this beast.
Switch to subpackage imports (e.g., '@vite-pwa/workbox-swkit/core') to save some souls.
150
Joaquín Sánchez @userquin.bsky.social · 27/04/2026
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
esm service worker at firefox
011
Joaquín Sánchez @userquin.bsky.social · 26/04/2026
👀 What's this? 😁 @jeff.posnick.org @tomayac.com @ducanh2912.bsky.social we need to talk ;) #pwa
adding dual service worker detection (module and classic) and trusted script url to pwa plugin
030
Joaquín Sánchez @userquin.bsky.social · 16/04/2026
arggg, photo too large, here small one:
void 0 swag box with stckers, a t-shirt with vite plus, vite, vitest,rolldown and oxc logos an umbrella with logos
020
Joaquín Sánchez @userquin.bsky.social · 16/04/2026
👀 Finally, swag box arrived 🤗
void 0 swag box with stckers, a t-shirt with vite plus, vite, vitest,rolldown and oxc logos an unbrella with logos
100
Joaquín Sánchez @userquin.bsky.social · 31/03/2026
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... )
@vite-pwa/workbox-build with 9 dependencies at npmgraph.js.org
1304
Joaquín Sánchez @userquin.bsky.social · 14/08/2025
WTF so, using Safari, your data is not your data, can be deleted without any notice at any time, I'm adding in all my apps using PWA or indexedDB a big warning about using Safari, and a custom notice in the data processing policy page. This should be illegal: forced to add backup and restoration.
180
Joaquín Sánchez @userquin.bsky.social · 17/07/2025
doing some crazy experiment at work with vite-ssg app, with a custom service worker (with fallback page per page) and kotlin backend, simulating 3G: LCP 0.11 seconds 😍🤯 (with 20x CPU throttling LCP 2.1 seconds)
page refresh on 3G: Largest Contentful Paint 0.11 seconds
050
Joaquín Sánchez @userquin.bsky.social · 18/05/2025
👀 Working on the next @vuetify.bsky.social @nuxt.com module (v1.0.0) using `@unvuetify` packages. The new version will use the Vuetify options directly, the module will merge inlined Vuetify configuration and external configuration file:
merging Vuetify inlined configuration with Vuetify externacl configuration
071
Joaquín Sánchez @userquin.bsky.social · 17/04/2025
Talking with @goede.dev about i18n, more utilities in next incoming days (http-client-hints, date adapters, blueprints):
conversation with Bobbie (i18n core team): use unvuetify packages to allow build custom Nuxt modules (Plug & Play)
030
Joaquín Sánchez @userquin.bsky.social · 05/03/2025
Just firefox: open dev tools, select Accesibility tab, then click on the left button and mouse over the target element
Firefox devtools and accesibility tab
130
Joaquín Sánchez @userquin.bsky.social · 05/03/2025
At least on light theme:
low color contrast on light theme
120
Joaquín Sánchez @userquin.bsky.social · 07/02/2025
I just added typesVersions with the following content: "typesVersions": { "*": { "*": ["./dist/*.mts", "./dist/index.mts"] } }, The .mts extension is about fixing the resolution:
node10 resolution tracenode 10 implementation resolution
000
Joaquín Sánchez @userquin.bsky.social · 07/02/2025
It is weird to see TypeScript switching to bundler module resolution when resolving node10 subpackages exports implementations, no idea if it is an arethetypeswrong thing or just TS. Any hint @andrewbran.ch ? I was trying to fix node10 types at `@shikijs/langs`, check L46 in the screenshot:
node10 implementation trace
200
Joaquín Sánchez @userquin.bsky.social · 24/01/2025
I need to remove the test folder 😜:
create-pwa test folder, 3 gigabytes and 20 folders
030
Joaquín Sánchez @userquin.bsky.social · 21/12/2024
I don't have 58K stars on GH: git-wrapped.com/profiles/use...
@userquin
2024 Year in Code
070
Joaquín Sánchez @userquin.bsky.social · 20/12/2024
There is no better way to start the day, thank you @evanyou.me
Invitation to join Vue organization
10892
Joaquín Sánchez @userquin.bsky.social · 18/11/2024
👀 github.com/filrak/astro...
Astro layers working
110
Joaquín Sánchez @userquin.bsky.social · 16/11/2024
I forgot to mention that we will have also directives inside @nuxt.com devtools:
010
Joaquín Sánchez @userquin.bsky.social · 15/11/2024
schedule a post to X with a single 🦋 toast
110
Joaquín Sánchez @userquin.bsky.social · 15/11/2024
Vite 3
Terminal running PWA Plugin with Vite 3
020
Joaquín Sánchez @userquin.bsky.social · 15/11/2024
Vite 4
Terminal running PWA Plugin with Vite 4
120
Joaquín Sánchez @userquin.bsky.social · 15/11/2024
Vite 5
Terminal running PWA Plugin with Vite 5
120
Joaquín Sánchez @userquin.bsky.social · 15/11/2024
Looks like I can run pwa plugin with @vite.dev 3, 4, 5 and 6 versions, HMR working when using on the fly PWA Assets 😍.
Terminal running PWA Plugin with Vite 6Vite 6 WS HMR custom event
150
Joaquín Sánchez @userquin.bsky.social · 06/11/2024
I've seen you removing X from your gh profile, Vite and e18e: I'm also removing X from UnoCSS and PWA docs (gh link also removed):
PR removing X link from UnoCSS docs
0161
Joaquín Sánchez @userquin.bsky.social · 06/11/2024
140