Setting up Vercel Analytics in an Astro project
I have recently migrated my website to host it on Vercel. I was interested in experimenting with the analytics service that tracks Web Vitals. It’s not crucial for this lightweight static website—it even adds a JavaScript script—but I wanted to see what data we get from it.
It was straightforward to set up following the Astro documentation page:
- Install the dependency
 
pnpm add @astrojs/vercel
- Update the 
astro.config.mjs 
import { defineConfig } from 'astro/config';
import vercel from '@astrojs/vercel/static';
export default defineConfig({
  output: 'static',
  adapter: vercel({ analytics: true }),
});
- Enable Vercel Analytics in the project in the Vercel interface
 - Deploy and profit!
 
Well, not yet for me—I got the error [Analytics] VERCEL_ANALYTICS_ID not found in the dev tools console.
When running the build command, the line const analyticsId = import.meta.env.PUBLIC_VERCEL_ANALYTICS_ID got minified to e={}.PUBLIC_VERCEL_ANALYTICS_ID. To fix it, I needed define the custom variable in the astro.config.mjs to replace it with process.env.VERCEL_ANALYTICS_ID env var passed by Vercel on build time.
import vercel from '@astrojs/vercel/static';
import { defineConfig } from 'astro/config';
export default defineConfig({
  output: 'static',
  adapter: vercel({ analytics: true }),
  vite: {
    define: {
      'import.meta.env.PUBLIC_VERCEL_ANALYTICS_ID': JSON.stringify(process.env.VERCEL_ANALYTICS_ID),
    },
  },
});
Alright, now it works!