Torna al blog

Vite 7.0: Node.js 20+, Rolldown e Baseline Widely Available - Release Giugno 2025

Scopri Vite 7.0: Node.js 20+ richiesto, integrazione Rolldown, Baseline Widely Available target, ESM-only, Environment API stabile e tutte le novità di giugno 2025.

Edoardo Midali

Edoardo Midali

Developer · Content Creator

7 min di lettura
Vite 7.0: Node.js 20+, Rolldown e Baseline Widely Available - Release Giugno 2025

Vite 7.0 è stato rilasciato il 24 giugno 2025. Questa major release introduce Node.js 20.19+ / 22.12+ richiesto, Rolldown bundler (Rust-based), target Baseline Widely Available, distribuzione ESM-only, e miglioramenti alla Environment API. Vite ora ha 31M download/settimana!

🎯 Novità Principali

Node.js 20.19+ / 22.12+ Richiesto

Dropped Node.js 18 (EOL Aprile 2025)!

# ❌ Node.js 18 - Non più supportato
node --version
# v18.20.0 ❌

# ✅ Node.js 20.19+ o 22.12+
node --version
# v20.19.0 ✅
# v22.12.0 ✅

Perché il cambio:

Node.js 20.19+ e 22.12+ supportano require(esm) senza flag!

// ✅ Node.js 20.19+ / 22.12+
// Vite può essere distribuito come ESM-only
// e comunque essere richiesto da CJS modules

// CommonJS file
const vite = require("vite"); // ✅ Funziona!

// ESM file
import vite from "vite"; // ✅ Funziona!

Benefici ESM-only:

  • Modern architecture - Codebase più pulito
  • Tree-shaking migliore - Bundle più piccoli
  • Dynamic imports nativi - Performance migliorate
  • Interoperabilità - CJS può ancora usare Vite

Rolldown Bundler (Rust-based)

Next-gen bundler costruito in Rust!

# ❌ Vite 6 - Default bundler
npm install vite

# ✅ Vite 7 - Rolldown (preview)
npm install rolldown-vite

# Drop-in replacement!
# Rolldown diventerà il bundler default in futuro

Vantaggi Rolldown:

# Before (Rollup)
Building for production...
✓ 1247 modules transformed.
dist/index.html                   0.45 kB
dist/assets/index-abc123.js      142.37 kB │ gzip: 45.82 kB
✓ built in 8.34s

# After (Rolldown)
Building for production...
✓ 1247 modules transformed.
dist/index.html                   0.45 kB
dist/assets/index-xyz789.js      142.37 kB │ gzip: 45.82 kB
✓ built in 2.41s  ← 3.5x più veloce! 🚀

Performance gains:

Project Size Rollup Rolldown Speedup
Small (500 modules) 3.2s 1.1s 2.9x 🚀
Medium (2000 modules) 8.3s 2.4s 3.5x 🚀
Large (5000+ modules) 24.1s 5.8s 4.2x 🚀

Come provarlo:

# Install
npm install rolldown-vite --save-dev

# Replace vite with rolldown-vite in scripts
# package.json
{
  "scripts": {
    "dev": "rolldown-vite",
    "build": "rolldown-vite build",
    "preview": "rolldown-vite preview"
  }
}

Compatibility:

  • Drop-in replacement - Nessun cambio config necessario
  • Rollup plugins - Compatibilità completa
  • Future-proof - Diventerà default in Vite 8+

Baseline Widely Available Target

Nuovo default browser target basato su Web Features Baseline!

// vite.config.js

// ❌ Vite 6 - Default 'modules'
export default {
  build: {
    target: "modules", // Chrome 87, Firefox 78, Safari 14
  },
};

// ✅ Vite 7 - Default 'baseline-widely-available'
export default {
  build: {
    target: "baseline-widely-available", // Aggiornato automaticamente!
  },
};

Cambio browser support:

Browser Vite 6 (modules) Vite 7 (baseline) Diff
Chrome 87 107 +20 versions
Edge 88 107 +19 versions
Firefox 78 104 +26 versions
Safari 14.0 16.0 +2 versions

Cosa significa:

// ✅ Ora disponibili nativamente (senza polyfill):

// Modern JavaScript features
const result = array.findLast((x) => x > 0);
const lastIndex = array.findLastIndex((x) => x > 0);

// CSS features
/* Container queries */
@container (width > 400px) {
  .card {
    grid-template-columns: 1fr 1fr;
  }
}

/* :has() selector */
.parent:has(.child:hover) {
  background: blue;
}

/* CSS color spaces */
color: oklch(70% 0.15 150);

Benefici:

  • Predictable: Default aggiornato ogni major
  • Modern features: Accesso a API più recenti
  • Smaller bundles: Meno transpiling/polyfills
  • Better performance: Codice nativo più veloce

Backward compatibility:

// vite.config.js
export default {
  build: {
    // Puoi tornare al vecchio target se necessario
    target: "modules", // O 'es2015', 'chrome87', etc.
  },
};

Vite DevTools (Preview)

Debugging avanzato per progetti Vite!

// Sviluppato da Anthony Fu (VoidZero + NuxtLabs partnership)
// Features:
// - Inspector grafico per module graph
// - Performance profiling
// - Hot reload debugging
// - Plugin analysis
// - Environment inspection

Coming soon:

  • 🔮 Visual module graph navigator
  • 🔮 Real-time performance metrics
  • 🔮 Plugin debugging tools
  • 🔮 Framework-specific insights

📊 Altre Novità

Environment API Migliorata

buildApp hook per coordinare build di ambienti!

// vite.config.js
export default {
  environments: {
    client: {},
    ssr: {},
  },
  plugins: [
    {
      name: "custom-plugin",
      buildApp(builder) {
        // ✅ Coordina build di client + SSR environments
        builder.on("build", async (env) => {
          if (env.name === "client") {
            console.log("Building client...");
          }
          if (env.name === "ssr") {
            console.log("Building SSR...");
          }
        });
      },
    },
  ],
};

Use case - Cloudflare Workers:

// Cloudflare Vite Plugin 1.0 (basato su Environment API)
import { cloudflare } from "@cloudflare/vite-plugin";

export default {
  plugins: [
    cloudflare({
      runtime: "workers",
      // ✅ Environment API permette runtime-specific optimizations
    }),
  ],
};

Vitest 3.2 Supporto

# ✅ Vite 7.0 richiede Vitest 3.2+
npm install vitest@3.2

Compatibilità completa con nuove API Vite 7!

Rimossi Features Deprecati

// ❌ Rimossi in Vite 7:

// 1. Sass Legacy API
// Usa modern Sass API invece
css: {
  preprocessorOptions: {
    sass: {
      api: 'modern'  // ✅ Usa questo
    }
  }
}

// 2. splitVendorChunkPlugin
// Usa manualChunks invece
build: {
  rollupOptions: {
    output: {
      manualChunks(id) {
        if (id.includes('node_modules')) {
          return 'vendor'
        }
      }
    }
  }
}

🔄 Migrazione da Vite 6

Update Node.js

# 1. Verifica versione Node.js
node --version

# 2. Se < 20.19, aggiorna Node.js
# Usa nvm:
nvm install 20
nvm use 20

# O scarica da nodejs.org

Update Vite

# Install Vite 7
npm install vite@7 --save-dev

# O con altre package manager
pnpm update vite@7
yarn upgrade vite@7

Update Dependencies

# Aggiorna plugin ecosystem
npm install @vitejs/plugin-react@latest
npm install @vitejs/plugin-vue@latest
npm install vite-plugin-*@latest

# Vitest users
npm install vitest@3.2

Testa Rolldown (Opzionale)

# Try Rolldown per build più veloci
npm install rolldown-vite --save-dev

# Update scripts in package.json
{
  "scripts": {
    "build": "rolldown-vite build"
  }
}

# Test build
npm run build

Checklist Migrazione

Pre-migrazione:

  • [ ] Node.js 20.19+ o 22.12+ installato
  • [ ] Backup progetto corrente
  • [ ] Test suite funzionante

Durante migrazione:

  • [ ] npm install vite@7 --save-dev
  • [ ] Aggiorna plugin Vite all'ultima versione
  • [ ] Rimuovi splitVendorChunkPlugin se usato
  • [ ] Aggiorna Sass API se usi preprocessor
  • [ ] Update build.target se customizzato

Post-migrazione:

  • [ ] npm run dev - Verifica dev server
  • [ ] npm run build - Verifica production build
  • [ ] Testa su tutti i browser target
  • [ ] Verifica bundle size (dovrebbe essere simile)
  • [ ] Run test suite completa

Breaking Changes

// 1. Browser target changed
// Prima: Chrome 87, Firefox 78, Safari 14
// Ora: Chrome 107, Firefox 104, Safari 16

// Fix: Specifica target custom se necessario
export default {
  build: {
    target: "modules", // Old behavior
  },
};

// 2. Sass legacy API rimosso
// Prima: Sass legacy API (deprecated)
// Ora: Solo modern API

// Fix: Update config
css: {
  preprocessorOptions: {
    sass: {
      api: 'modern'
    }
  }
}

// 3. splitVendorChunkPlugin rimosso
// Prima: splitVendorChunkPlugin()
// Ora: Usa manualChunks

// Fix: Custom chunking strategy
build: {
  rollupOptions: {
    output: {
      manualChunks: {
        'react-vendor': ['react', 'react-dom']
      }
    }
  }
}

💡 Conclusioni

Vite 7.0 rappresenta un passo verso il futuro:

Node.js 20+ - Modern runtime required ✅ Rolldown - Next-gen Rust bundler (3-4x faster) ✅ Baseline Widely Available - Predictable browser support ✅ ESM-only - Cleaner architecture ✅ Environment API - Framework flexibility ✅ Smooth migration - Da Vite 6 senza breaking changes major

Performance gains:

  • 🚀 Build time: 3-4x più veloce con Rolldown
  • 📦 Bundle size: Più piccolo con modern target
  • Startup: Migliore con ESM-only
  • 🔧 DX: DevTools avanzati in arrivo

Inizia ora:

# Nuovo progetto
pnpm create vite my-app

# Update progetto esistente
npm install vite@7 --save-dev

# Try Rolldown
npm install rolldown-vite --save-dev

Link utili: