{"id":"e8226b80-7fe3-4b28-80ad-77795cef296e","shortId":"pLC5XC","kind":"skill","title":"vite","tagline":"Configure and optimize Vite 7 for React projects. Covers build tooling, dev server, plugins, HMR, chunk splitting, Environment API, and Rolldown integration. Use when setting up Vite, configuring builds, optimizing bundles, managing plugins, or troubleshooting dev server. Trigger","description":"# Vite 7\n\nBuild tooling and dev server for React projects. Vite 7 (June 2025) is ESM-only, requires Node.js 20.19+ / 22.12+, and defaults browser target to `baseline-widely-available`. The user's stack uses `rolldown-vite` (Rust-based drop-in replacement), `@vitejs/plugin-react`, `@tailwindcss/vite`, `@tanstack/router-plugin`, `@cloudflare/vite-plugin`, and `@tanstack/react-start`.\n\n## Critical Rules\n\n### Plugin Order Matters\n\nTanStack Start or TanStack Router plugin MUST come before `@vitejs/plugin-react`:\n\n```ts\nplugins: [\n  tanstackStart(),      // or tanstackRouter() for SPA\n  tailwindcss(),\n  react(),              // ALWAYS last among framework plugins\n]\n```\n\nWrong order causes route generation failures and HMR breakage.\n\n### Vite 7 is ESM-Only\n\nVite 7 distributes as ESM only. Your `vite.config.ts` must use `import`/`export` syntax. CJS `require()` is not supported in config files. Node.js 20.19+ supports `require(esm)` natively, so Vite can still be required by CJS consumers.\n\n### No `tailwind.config.js`\n\nTailwind CSS v4 uses CSS-first configuration. Never create `tailwind.config.js`/`tailwind.config.ts`. Use `@tailwindcss/vite` plugin and configure in CSS via `@theme`, `@utility`, `@plugin`.\n\n### Environment Variables Need VITE_ Prefix\n\nOnly variables prefixed with `VITE_` are exposed to client code via `import.meta.env`. Server-only secrets must NOT use this prefix. For type safety, augment `ImportMetaEnv` in `vite-env.d.ts`.\n\n### splitVendorChunkPlugin Is Removed\n\nRemoved in Vite 7. Use `build.rollupOptions.output.manualChunks` for custom chunk splitting.\n\n## Configuration\n\n### vite.config.ts (Full Stack with TanStack Start)\n\n```ts\nimport { defineConfig } from 'vite'\nimport { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport { cloudflare } from '@cloudflare/vite-plugin'\nimport tailwindcss from '@tailwindcss/vite'\nimport react from '@vitejs/plugin-react'\n\nexport default defineConfig({\n  plugins: [\n    tanstackStart(),\n    cloudflare(),\n    tailwindcss(),\n    react(),\n  ],\n  resolve: {\n    alias: {\n      '@': new URL('./src', import.meta.url).pathname,\n    },\n  },\n})\n```\n\n### vite.config.ts (SPA with TanStack Router)\n\n```ts\nimport { defineConfig } from 'vite'\nimport { tanstackRouter } from '@tanstack/router-plugin/vite'\nimport tailwindcss from '@tailwindcss/vite'\nimport react from '@vitejs/plugin-react'\n\nexport default defineConfig({\n  plugins: [\n    tanstackRouter({ autoCodeSplitting: true }),\n    tailwindcss(),\n    react(),\n  ],\n  resolve: {\n    alias: {\n      '@': new URL('./src', import.meta.url).pathname,\n    },\n  },\n})\n```\n\n### React Compiler\n\n```ts\nreact({\n  babel: {\n    plugins: [['babel-plugin-react-compiler', {}]],\n  },\n})\n```\n\nInstall: `pnpm add -D babel-plugin-react-compiler`. Auto-memoizes components and hooks - no manual `useMemo`/`useCallback`.\n\n### Path Aliases\n\nUse `import.meta.url` for ESM-compatible resolution (no `__dirname` in ESM):\n\n```ts\nresolve: {\n  alias: {\n    '@': new URL('./src', import.meta.url).pathname,\n  },\n}\n```\n\nMirror in `tsconfig.json`: `\"paths\": { \"@/*\": [\"./src/*\"] }`\n\n### Environment Variables\n\nFiles: `.env`, `.env.local`, `.env.[mode]`, `.env.[mode].local`. Only `VITE_`-prefixed vars exposed to client. Built-in constants: `import.meta.env.MODE`, `.DEV`, `.PROD`, `.SSR`, `.BASE_URL`.\n\nType augmentation in `src/vite-env.d.ts`:\n\n```ts\ninterface ImportMetaEnv {\n  readonly VITE_API_URL: string\n}\ninterface ImportMeta {\n  readonly env: ImportMetaEnv\n}\n```\n\n## Plugin Ecosystem\n\n### @vitejs/plugin-react\n\nProvides Fast Refresh (HMR for React), JSX transform, and optional Babel plugin pipeline. Always place last among framework plugins.\n\n```ts\nimport react from '@vitejs/plugin-react'\n\nreact()                          // zero-config default\nreact({ fastRefresh: false })    // disable for debugging HMR issues\n```\n\n### @tailwindcss/vite\n\nNative Vite integration for Tailwind CSS v4. Replaces PostCSS-based setup - no `postcss.config.js` needed.\n\n```ts\nimport tailwindcss from '@tailwindcss/vite'\n\ntailwindcss()  // zero-config, reads @theme from CSS\n```\n\n### @tanstack/router-plugin/vite\n\nFile-based route generation for TanStack Router. Must come before `react()`.\n\n```ts\nimport { tanstackRouter } from '@tanstack/router-plugin/vite'\n\ntanstackRouter({ autoCodeSplitting: true })\n```\n\n### @tanstack/react-start/plugin/vite\n\nFull-stack plugin for TanStack Start. Includes router plugin internally - do NOT add both.\n\n```ts\nimport { tanstackStart } from '@tanstack/react-start/plugin/vite'\n\ntanstackStart()                           // default SSR\ntanstackStart({ spa: { enabled: true } }) // SPA mode (no SSR)\n```\n\n### @cloudflare/vite-plugin\n\nRuns Worker code inside `workerd` during dev, matching production behavior. Uses Vite's Environment API for runtime integration.\n\n```ts\nimport { cloudflare } from '@cloudflare/vite-plugin'\n\ncloudflare()  // reads wrangler.jsonc by default\n\n// Programmatic config (no wrangler file needed)\ncloudflare({\n  config: {\n    name: 'my-worker',\n    compatibility_flags: ['nodejs_compat'],\n  },\n})\n```\n\n## Dev Server\n\n### Proxy Configuration\n\n```ts\nserver: {\n  proxy: {\n    '/api': {\n      target: 'http://localhost:8787',\n      changeOrigin: true,\n      rewrite: (path) => path.replace(/^\\/api/, ''),\n    },\n    '/ws': { target: 'ws://localhost:8787', ws: true },\n  },\n}\n```\n\n### HMR Troubleshooting\n\n| Symptom | Fix |\n|---------|-----|\n| Full reload instead of HMR | Check `plugin-react` is loaded |\n| HMR not connecting | Set `server.hmr.clientPort` if behind reverse proxy |\n| Stale state after edit | Component must export a single component |\n| CSS not updating | Ensure `@tailwindcss/vite` is in plugins |\n\nBehind a reverse proxy:\n\n```ts\nserver: {\n  hmr: { protocol: 'ws', host: 'localhost', port: 5173, clientPort: 443 },\n}\n```\n\n### File Warmup\n\n```ts\nserver: {\n  warmup: {\n    clientFiles: ['./src/components/*.tsx', './src/routes/__root.tsx'],\n  },\n}\n```\n\n## Build Optimization\n\n### Default Browser Target\n\nVite 7 targets `baseline-widely-available` (Chrome 107+, Edge 107+, Firefox 104+, Safari 16+). Override: `build.target: 'es2020'` or `['chrome90', 'safari14']`.\n\n### Manual Chunks\n\n```ts\nbuild: {\n  rollupOptions: {\n    output: {\n      manualChunks: {\n        'react-vendor': ['react', 'react-dom'],\n        'tanstack': ['@tanstack/react-router', '@tanstack/react-query'],\n      },\n    },\n  },\n}\n```\n\nDynamic splitting by function:\n\n```ts\nmanualChunks(id) {\n  if (id.includes('node_modules')) {\n    if (id.includes('react')) return 'react-vendor'\n    if (id.includes('@tanstack')) return 'tanstack'\n    return 'vendor'\n  }\n}\n```\n\n### Bundle Analysis\n\n```bash\npnpm add -D rollup-plugin-visualizer\n```\n\n```ts\nimport { visualizer } from 'rollup-plugin-visualizer'\n\n// Add to plugins array\nvisualizer({ filename: 'stats.html', open: true, gzipSize: true })\n```\n\nSee [build-optimization.md](references/build-optimization.md) for detailed chunking strategies, CSS splitting, asset inlining, source maps, and performance tuning.\n\n## Rolldown Integration\n\n### What is rolldown-vite\n\n`rolldown-vite` is a Rust-based drop-in replacement for Vite's bundler, developed by the Vite team (sponsored by VoidZero). It replaces both esbuild and Rollup with a single high-performance tool built on Rolldown and the Oxc toolkit. Build time reductions of 3x to 16x have been reported, with memory usage cut by up to 100x on large projects.\n\nRolldown will become the default bundler in Vite 8 (currently in beta). Using `rolldown-vite` today prepares your project for the transition.\n\n**Note:** Vite 7 requires Vitest 3.2+ for compatibility. Earlier Vitest versions will not work.\n\n### Installation\n\nIn `package.json`, alias `vite` to `rolldown-vite`:\n\n```json\n{\n  \"devDependencies\": {\n    \"vite\": \"npm:rolldown-vite@latest\"\n  }\n}\n```\n\nFor monorepos or frameworks with Vite as a peer dependency, use overrides:\n\n```json\n{\n  \"pnpm\": {\n    \"overrides\": {\n      \"vite\": \"npm:rolldown-vite@latest\"\n    }\n  }\n}\n```\n\nThen run `pnpm install`. No config changes needed - it is a drop-in replacement.\n\n### Key Differences from Standard Vite\n\n- **No esbuild dependency** - Oxc handles all transforms and minification (config still shows `minify: 'esbuild'` but the underlying engine is Oxc)\n- **Faster builds** - Rust-native bundling, especially for large projects\n- **Same plugin API** - Rollup/Vite plugins work without changes in most cases\n- **Patch versions may break** - `rolldown-vite` follows Vite major/minor but patches are independent\n\n### Compatibility Notes\n\nMost frameworks and Vite plugins work out of the box. Check the [rolldown-vite repo](https://github.com/nicepkg/rolldown-vite) for known issues and changelog. Some warnings about unsupported options may appear during the transition period.\n\n## Environment API\n\nExperimental API introduced in Vite 6, improved in Vite 7 with the `buildApp` hook. Enables multi-target builds (browser, Node.js, edge runtimes) from a single Vite config.\n\n### How It Works\n\nEach environment has its own module graph, plugin pipeline, and build config. The `@cloudflare/vite-plugin` uses this to run Worker code inside `workerd` during dev, matching production behavior.\n\n### buildApp Hook (Vite 7)\n\nFrameworks coordinate building multiple environments. Config-level form (most common):\n\n```ts\nexport default defineConfig({\n  builder: {\n    async buildApp(builder) {\n      await builder.build(builder.environments.client)\n      await builder.build(builder.environments.server)\n    },\n  },\n})\n```\n\nPlugin hook form (for plugin authors):\n\n```ts\n{\n  name: 'my-framework',\n  buildApp: async (builder) => {\n    const environments = Object.values(builder.environments)\n    return Promise.all(\n      environments.map((env) => builder.build(env))\n    )\n  },\n}\n```\n\n### Multi-Environment Config\n\n```ts\nexport default defineConfig({\n  environments: {\n    client: {\n      build: { outDir: 'dist/client' },\n    },\n    server: {\n      build: { outDir: 'dist/server' },\n    },\n  },\n})\n```\n\nFor most projects, the `@cloudflare/vite-plugin` or `@tanstack/react-start` handles environment configuration automatically. Direct Environment API usage is for framework authors.\n\n## Deployment\n\n### Cloudflare Workers (via TanStack Start)\n\nAdd `cloudflare()` to plugins and create `wrangler.jsonc`:\n\n```jsonc\n// wrangler.jsonc\n{\n  \"name\": \"my-app\",\n  \"compatibility_date\": \"2025-01-01\",\n  \"compatibility_flags\": [\"nodejs_compat\"],\n  \"main\": \"./dist/server/index.js\",\n  \"assets\": { \"directory\": \"./dist/client\" }\n}\n```\n\n```bash\npnpm vite build && pnpm wrangler deploy\n```\n\n### Static SPA\n\nBuild produces `dist/`. Deploy to any static host (Cloudflare Pages, Vercel, Netlify).\n\n### Prerendering (SSG)\n\n```ts\ntanstackStart({ prerender: { enabled: true, crawlLinks: true } })\n```\n\n## Best Practices\n\n1. **Plugin order** - framework plugins first, then utilities, then `react()` last\n2. **Use rolldown-vite** - drop-in replacement with 3-16x faster builds\n3. **Set `staleTime` in dev** - avoid unnecessary refetches during HMR reloads\n4. **Warm up critical files** - use `server.warmup` for frequently accessed modules\n5. **Split vendor chunks** - separate `react`, `@tanstack/*` into stable chunks for caching\n6. **Never use `transition-all`** - specific properties only for CSS transitions\n7. **Use `import.meta.url`** for path resolution in ESM config files\n8. **Analyze bundles regularly** - use `rollup-plugin-visualizer` before deploys\n9. **Keep `VITE_` prefix discipline** - only public values; secrets go in server functions\n10. **Set `build.sourcemap` for production** - `'hidden'` for error tracking without exposing source\n\n## Resources\n\n- **Vite Docs**: https://vite.dev/guide/\n- **Vite 7 Blog**: https://vite.dev/blog/announcing-vite7\n- **Migration Guide**: https://vite.dev/guide/migration\n- **Build Options**: https://vite.dev/config/build-options\n- **Server Options**: https://vite.dev/config/server-options\n- **Env Variables**: https://vite.dev/guide/env-and-mode\n- **Rolldown-Vite**: https://voidzero.dev/posts/announcing-rolldown-vite\n- **Cloudflare Vite Plugin**: https://developers.cloudflare.com/workers/vite-plugin/\n- **Plugin React**: https://github.com/vitejs/vite-plugin-react\n- **GitHub**: https://github.com/vitejs/vite","tags":["vite","skills","tenequm","agent-skills","ai-agents","claude-code","claude-skills","clawhub","erc-8004","mpp","openclaw","solana"],"capabilities":["skill","source-tenequm","skill-vite","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-claude-skills","topic-clawhub","topic-erc-8004","topic-mpp","topic-openclaw","topic-skills","topic-solana","topic-x402"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/tenequm/skills/vite","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add tenequm/skills","source_repo":"https://github.com/tenequm/skills","install_from":"skills.sh"}},"qualityScore":"0.461","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 23 github stars · SKILL.md body (12,205 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T01:01:41.588Z","embedding":null,"createdAt":"2026-04-18T23:05:31.220Z","updatedAt":"2026-04-22T01:01:41.588Z","lastSeenAt":"2026-04-22T01:01:41.588Z","tsv":"'-01':1223,1224 '-16':1288 '/api':598,607 '/blog/announcing-vite7':1395 '/config/build-options':1405 '/config/server-options':1410 '/dist/client':1233 '/dist/server/index.js':1230 '/guide/':1389 '/guide/env-and-mode':1415 '/guide/migration':1400 '/nicepkg/rolldown-vite)':1035 '/posts/announcing-rolldown-vite':1421 '/src':283,321,372,379 '/src/components':677 '/src/routes/__root.tsx':679 '/vitejs/vite':1436 '/vitejs/vite-plugin-react':1432 '/workers/vite-plugin/':1427 '/ws':608 '1':1266 '10':1372 '100x':861 '104':697 '107':693,695 '16':699 '16x':850 '2':1277 '20.19':60,158 '2025':53,1222 '22.12':61 '3':1287,1292 '3.2':893 '3x':848 '4':1303 '443':670 '5':1314 '5173':668 '6':1059,1326 '7':6,41,51,131,137,236,686,890,1063,1115,1338,1391 '8':873,1348 '8787':601,611 '9':1359 'access':1312 'add':337,528,752,766,1207 'alia':280,318,369,905 'alias':355 'alway':116,440 'among':118,443 'analysi':749 'analyz':1349 'api':20,416,561,992,1053,1055,1195 'app':1219 'appear':1047 'array':769 'asset':786,1231 'async':1132,1153 'augment':226,408 'author':1146,1200 'auto':345 'auto-memo':344 'autocodesplit':313,512 'automat':1192 'avail':70,691 'avoid':1297 'await':1135,1138 'babel':328,331,340,437 'babel-plugin-react-compil':330,339 'base':81,405,475,496,807 'baselin':68,689 'baseline-widely-avail':67,688 'bash':750,1234 'becom':867 'behavior':556,1111 'behind':635,656 'best':1264 'beta':876 'blog':1392 'box':1026 'break':1004 'breakag':129 'browser':64,683,1073 'build':11,30,42,680,709,844,981,1072,1095,1118,1175,1179,1237,1243,1291,1401 'build-optimization.md':778 'build.rollupoptions.output.manualchunks':238 'build.sourcemap':1374 'build.target':701 'buildapp':1066,1112,1133,1152 'builder':1131,1134,1154 'builder.build':1136,1139,1163 'builder.environments':1158 'builder.environments.client':1137 'builder.environments.server':1140 'built':398,837 'built-in':397 'bundl':32,748,985,1350 'bundler':815,870 'cach':1325 'case':1000 'caus':123 'chang':946,997 'changelog':1040 'changeorigin':602 'check':623,1027 'chrome':692 'chrome90':704 'chunk':17,241,707,782,1317,1323 'cjs':149,170 'client':210,396,1174 'clientfil':676 'clientport':669 'cloudflar':260,276,567,570,581,1202,1208,1251,1422 'cloudflare/vite-plugin':89,262,546,569,1098,1186 'code':211,549,1104 'come':104,503 'common':1126 'compat':361,587,590,895,1015,1220,1225,1228 'compil':325,334,343 'compon':347,642,647 'config':155,454,488,576,582,945,969,1081,1096,1122,1168,1346 'config-level':1121 'configur':2,29,181,190,243,594,1191 'connect':631 'const':1155 'constant':400 'consum':171 'coordin':1117 'cover':10 'crawllink':1262 'creat':183,1212 'critic':92,1306 'css':175,179,192,470,492,648,784,1336 'css-first':178 'current':874 'custom':240 'cut':857 'd':338,753 'date':1221 'debug':461 'default':63,272,309,455,536,574,682,869,1129,1171 'defineconfig':252,273,293,310,1130,1172 'depend':928,962 'deploy':1201,1240,1246,1358 'detail':781 'dev':13,37,45,402,553,591,1108,1296 'devdepend':912 'develop':816 'developers.cloudflare.com':1426 'developers.cloudflare.com/workers/vite-plugin/':1425 'differ':956 'direct':1193 'directori':1232 'dirnam':364 'disabl':459 'disciplin':1363 'dist':1245 'dist/client':1177 'dist/server':1181 'distribut':138 'doc':1386 'dom':719 'drop':83,809,952,1283 'drop-in':82,808,951,1282 'dynam':723 'earlier':896 'ecosystem':425 'edg':694,1075 'edit':641 'enabl':540,1068,1260 'engin':977 'ensur':651 'env':383,385,387,422,1162,1164,1411 'env.local':384 'environ':19,197,380,560,1052,1086,1120,1156,1167,1173,1190,1194 'environments.map':1161 'error':1379 'es2020':702 'esbuild':827,961,973 'esm':56,134,140,161,360,366,1345 'esm-compat':359 'esm-on':55,133 'especi':986 'experiment':1054 'export':147,271,308,644,1128,1170 'expos':208,394,1382 'failur':126 'fals':458 'fast':428 'faster':980,1290 'fastrefresh':457 'file':156,382,495,579,671,1307,1347 'file-bas':494 'filenam':771 'firefox':696 'first':180,1271 'fix':617 'flag':588,1226 'follow':1008 'form':1124,1143 'framework':119,444,922,1018,1116,1151,1199,1269 'frequent':1311 'full':245,516,618 'full-stack':515 'function':726,1371 'generat':125,498 'github':1433 'github.com':1034,1431,1435 'github.com/nicepkg/rolldown-vite)':1033 'github.com/vitejs/vite':1434 'github.com/vitejs/vite-plugin-react':1430 'go':1368 'graph':1091 'guid':1397 'gzipsiz':775 'handl':964,1189 'hidden':1377 'high':834 'high-perform':833 'hmr':16,128,430,462,614,622,629,662,1301 'hook':349,1067,1113,1142 'host':665,1250 'id':729 'id.includes':731,735,742 'import':146,251,255,259,263,267,292,296,300,304,447,481,507,531,566,759 'import.meta.env':213 'import.meta.env.mode':401 'import.meta.url':284,322,357,373,1340 'importmeta':420 'importmetaenv':227,413,423 'improv':1060 'includ':522 'independ':1014 'inlin':787 'insid':550,1105 'instal':335,902,943 'instead':620 'integr':23,467,564,794 'interfac':412,419 'intern':525 'introduc':1056 'issu':463,1038 'json':911,931 'jsonc':1214 'jsx':433 'june':52 'keep':1360 'key':955 'known':1037 'larg':863,988 'last':117,442,1276 'latest':918,939 'level':1123 'load':628 'local':389 'localhost':600,610,666 'main':1229 'major/minor':1010 'manag':33 'manual':351,706 'manualchunk':712,728 'map':789 'match':554,1109 'matter':96 'may':1003,1046 'memoiz':346 'memori':855 'migrat':1396 'minif':968 'minifi':972 'mirror':375 'mode':386,388,543 'modul':733,1090,1313 'monorepo':920 'multi':1070,1166 'multi-environ':1165 'multi-target':1069 'multipl':1119 'must':103,144,218,502,643 'my-app':1217 'my-framework':1149 'my-work':584 'name':583,1148,1216 'nativ':162,465,984 'need':199,479,580,947 'netlifi':1254 'never':182,1327 'new':281,319,370 'node':732 'node.js':59,157,1074 'nodej':589,1227 'note':888,1016 'npm':914,935 'object.values':1157 'open':773 'optim':4,31,681 'option':436,1045,1402,1407 'order':95,122,1268 'outdir':1176,1180 'output':711 'overrid':700,930,933 'oxc':842,963,979 'package.json':904 'page':1252 'patch':1001,1012 'path':354,378,605,1342 'path.replace':606 'pathnam':285,323,374 'peer':927 'perform':791,835 'period':1051 'pipelin':439,1093 'place':441 'plugin':15,34,94,102,108,120,188,196,274,311,329,332,341,424,438,445,518,524,625,655,756,764,768,991,994,1021,1092,1141,1145,1210,1267,1270,1355,1424,1428 'plugin-react':624 'pnpm':336,751,932,942,1235,1238 'port':667 'postcss':474 'postcss-bas':473 'postcss.config.js':478 'practic':1265 'prefix':201,204,222,392,1362 'prepar':882 'prerend':1255,1259 'prod':403 'produc':1244 'product':555,1110,1376 'programmat':575 'project':9,49,864,884,989,1184 'promise.all':1160 'properti':1333 'protocol':663 'provid':427 'proxi':593,597,637,659 'public':1365 'react':8,48,115,268,278,305,316,324,327,333,342,432,448,451,456,505,626,714,716,718,736,739,1275,1319,1429 'react-dom':717 'react-vendor':713,738 'read':489,571 'readon':414,421 'reduct':846 'references/build-optimization.md':779 'refetch':1299 'refresh':429 'regular':1351 'reload':619,1302 'remov':232,233 'replac':85,472,811,825,954,1285 'repo':1032 'report':853 'requir':58,150,160,168,891 'resolut':362,1343 'resolv':279,317,368 'resourc':1384 'return':737,744,746,1159 'revers':636,658 'rewrit':604 'rolldown':22,77,793,798,801,839,865,879,909,916,937,1006,1030,1280,1417 'rolldown-vit':76,797,800,878,908,915,936,1005,1029,1279,1416 'rollup':755,763,829,1354 'rollup-plugin-visu':754,762,1353 'rollup/vite':993 'rollupopt':710 'rout':124,497 'router':101,290,501,523 'rule':93 'run':547,941,1102 'runtim':563,1076 'rust':80,806,983 'rust-bas':79,805 'rust-nat':982 'safari':698 'safari14':705 'safeti':225 'secret':217,1367 'see':777 'separ':1318 'server':14,38,46,215,592,596,661,674,1178,1370,1406 'server-on':214 'server.hmr.clientport':633 'server.warmup':1309 'set':26,632,1293,1373 'setup':476 'show':971 'singl':646,832,1079 'skill' 'skill-vite' 'sourc':788,1383 'source-tenequm' 'spa':113,287,539,542,1242 'specif':1332 'split':18,242,724,785,1315 'splitvendorchunkplugin':230 'sponsor':821 'src/vite-env.d.ts':410 'ssg':1256 'ssr':404,537,545 'stabl':1322 'stack':74,246,517 'stale':638 'staletim':1294 'standard':958 'start':98,249,521,1206 'state':639 'static':1241,1249 'stats.html':772 'still':166,970 'strategi':783 'string':418 'support':153,159 'symptom':616 'syntax':148 'tailwind':174,469 'tailwind.config.js':173,184 'tailwind.config.ts':185 'tailwindcss':114,264,277,301,315,482,485 'tailwindcss/vite':87,187,266,303,464,484,652 'tanstack':97,100,248,289,500,520,720,743,745,1205,1320 'tanstack/react-query':722 'tanstack/react-router':721 'tanstack/react-start':91,1188 'tanstack/react-start/plugin/vite':258,514,534 'tanstack/router-plugin':88 'tanstack/router-plugin/vite':299,493,510 'tanstackrout':111,297,312,508,511 'tanstackstart':109,256,275,532,535,538,1258 'target':65,599,609,684,687,1071 'team':820 'theme':194,490 'time':845 'today':881 'tool':12,43,836 'toolkit':843 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-claude-skills' 'topic-clawhub' 'topic-erc-8004' 'topic-mpp' 'topic-openclaw' 'topic-skills' 'topic-solana' 'topic-x402' 'track':1380 'transform':434,966 'transit':887,1050,1330,1337 'transition-al':1329 'trigger':39 'troubleshoot':36,615 'true':314,513,541,603,613,774,776,1261,1263 'ts':107,250,291,326,367,411,446,480,506,530,565,595,660,673,708,727,758,1127,1147,1169,1257 'tsconfig.json':377 'tsx':678 'tune':792 'type':224,407 'under':976 'unnecessari':1298 'unsupport':1044 'updat':650 'url':282,320,371,406,417 'usag':856,1196 'use':24,75,145,177,186,220,237,356,557,877,929,1099,1278,1308,1328,1339,1352 'usecallback':353 'usememo':352 'user':72 'util':195,1273 'v4':176,471 'valu':1366 'var':393 'variabl':198,203,381,1412 'vendor':715,740,747,1316 'vercel':1253 'version':898,1002 'via':193,212,1204 'visual':757,760,765,770,1356 'vite':1,5,28,40,50,78,130,136,164,200,206,235,254,295,391,415,466,558,685,799,802,813,819,872,880,889,906,910,913,917,924,934,938,959,1007,1009,1020,1031,1058,1062,1080,1114,1236,1281,1361,1385,1390,1418,1423 'vite-env.d.ts':229 'vite.config.ts':143,244,286 'vite.dev':1388,1394,1399,1404,1409,1414 'vite.dev/blog/announcing-vite7':1393 'vite.dev/config/build-options':1403 'vite.dev/config/server-options':1408 'vite.dev/guide/':1387 'vite.dev/guide/env-and-mode':1413 'vite.dev/guide/migration':1398 'vitejs/plugin-react':86,106,270,307,426,450 'vitest':892,897 'voidzero':823 'voidzero.dev':1420 'voidzero.dev/posts/announcing-rolldown-vite':1419 'warm':1304 'warmup':672,675 'warn':1042 'wide':69,690 'without':996,1381 'work':901,995,1022,1084 'worker':548,586,1103,1203 'workerd':551,1106 'wrangler':578,1239 'wrangler.jsonc':572,1213,1215 'wrong':121 'ws':612,664 'x':1289 'zero':453,487 'zero-config':452,486","prices":[{"id":"b5711e76-74ea-4659-911e-174ea7bc7fd4","listingId":"e8226b80-7fe3-4b28-80ad-77795cef296e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"tenequm","category":"skills","install_from":"skills.sh"},"createdAt":"2026-04-18T23:05:31.220Z"}],"sources":[{"listingId":"e8226b80-7fe3-4b28-80ad-77795cef296e","source":"github","sourceId":"tenequm/skills/vite","sourceUrl":"https://github.com/tenequm/skills/tree/main/skills/vite","isPrimary":false,"firstSeenAt":"2026-04-18T23:05:31.220Z","lastSeenAt":"2026-04-22T01:01:41.588Z"}],"details":{"listingId":"e8226b80-7fe3-4b28-80ad-77795cef296e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"tenequm","slug":"vite","github":{"repo":"tenequm/skills","stars":23,"topics":["agent-skills","ai-agents","claude-code","claude-skills","clawhub","erc-8004","mpp","openclaw","skills","solana","x402"],"license":"mit","html_url":"https://github.com/tenequm/skills","pushed_at":"2026-04-14T16:24:57Z","description":"Agent skills for building, shipping, and growing software products","skill_md_sha":"9c3fec9be362a69d7742c41e0d5a28ea543be9b7","skill_md_path":"skills/vite/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/tenequm/skills/tree/main/skills/vite"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"vite","description":"Configure and optimize Vite 7 for React projects. Covers build tooling, dev server, plugins, HMR, chunk splitting, Environment API, and Rolldown integration. Use when setting up Vite, configuring builds, optimizing bundles, managing plugins, or troubleshooting dev server. Triggers on vite, vite config, vite plugin, HMR, dev server, build optimization, chunk splitting, rolldown, vite proxy, environment api, rolldown-vite."},"skills_sh_url":"https://skills.sh/tenequm/skills/vite"},"updatedAt":"2026-04-22T01:01:41.588Z"}}