Skip to content

Changelog

Velocity reaches 1.0.0 — all Astro 6 beta dependencies replaced with stable releases. No code changes needed; this is a dependency-only upgrade from v0.5.0-beta.

  • Astro upgraded from 6.0.0-beta.20 to 6.0.0 (stable)
  • @astrojs/mdx upgraded from 5.0.0-beta.12 to 5.0.0 (stable)
  • @astrojs/react upgraded from 5.0.0-beta.4 to 5.0.0 (stable)
  • @astrojs/check upgraded from 0.9.7-beta.1 to 0.9.7 (stable)
  • @astrojs/sitemap bumped to ^3.7.1
  • Version-gated migration system — the CLI upgrade flow now uses fromVersion/toVersion fields to show only migrations relevant to your current version
  • Protected file notices — upgrade flow warns about files it won’t overwrite (pages, content, config)
  • Updated fallback safe list — includes src/styles/themes/, src/config/nav.config.ts, and deployment configs

Upgrade guide: Beta to v1.0.0 Stable


  • Astro upgraded from 6.0.0-beta.11 to 6.0.0-beta.20
  • @astrojs/mdx upgraded from beta.7 to beta.12
  • @astrojs/react upgraded from beta.2 to beta.4
  • Vitest upgraded from v2 to v3.2+ (required by Vite 7)
  • 15 React island components — GoogleMap, FloatingHeader, MobileMenu, ThemeToggle, CookieConsent, SearchDialog, Accordion, Tabs, Toast, and more
  • Floating header with scroll-aware show/hide behavior
  • Extended theme systemsrc/styles/themes/ directory for multi-theme support
  • ClientRouter integration for view transitions
  • GoogleMap component with API key support via astro:env
  • Simplified README
  • Lint fixes across the codebase
  • Version-gated migrations in velocity-manifest.json
  • Astro 6 beta.20 changed image defaults: cropping enabled by default, no upscaling
  • Heading ID generation algorithm changed — verify anchor links in MDX content
  • Script and style tags now render in definition order

  • Cookie Consent Manager — Full consent banner with Accept All / Decline All / Customize, per-category settings panel via Dialog, Google Consent Mode v2 integration, localStorage persistence with versioned re-consent
  • Two consent modesconsent_mode_v2 (cookieless pings with denied defaults) and strict (full script blocking until consent)
  • Consent configurationsrc/config/consent.config.ts for categories, UI text, GCM type mapping, and show delay
  • New env varsPUBLIC_CONSENT_ENABLED to toggle consent on/off, PUBLIC_PRIVACY_POLICY_URL for the privacy link
  • Removed Astro CSP — Auto-hashing of <style> blocks makes 'unsafe-inline' ineffective per the CSP spec. Will revisit when the Astro CSP API is stable.
  • Simplified security headers — 4 zero-maintenance headers via vercel.json: X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy
  • Dropped X-XSS-Protection — Deprecated header that can introduce vulnerabilities in older browsers
  • Kept checkOrigin: true — CSRF protection via Astro’s origin checking
  • Fixed mobile menu backdrop blur.mobile-menu-blur was in a scoped <style> block but applied to elements outside the Header component; changed to <style is:global>
  • Fixed Analytics race conditions and duplicate event listeners
  • Fixed dynamic consent mapping bugs in GCM integration

Upgrade guide: v0.4.x-beta to v0.4.5-beta


  • Astro upgraded from 6.0.0-beta.9 to 6.0.0-beta.11
  • @astrojs/mdx upgraded from beta.5 to beta.7
  • @astrojs/check upgraded from 0.9.6 to 0.9.7-beta.1
  • Replaced @resvg/resvg-js with sharp for OG image generation — Sharp is already bundled by Astro, removing the need for a platform-specific native binding and its Vite workarounds
  • Removed stale image.png from project root
  • Removed ssr.external and optimizeDeps.exclude entries for @resvg/resvg-js from astro.config.mjs

Upgrade guide: v0.3.x-beta to v0.4.0-beta


  • Standardized component extensibility — Badge, Avatar, AvatarGroup, Skeleton, Table, Pagination, Progress, Alert, Tooltip, and Separator now extend HTMLAttributes and forward data-*, aria-*, and all other HTML attributes via ...attrs spread — matching the pattern already used by Button, Input, and Card
  • Landing page cleanup — Removed deprecated Navbar.astro and LandingFooter.astro (dead code replaced by Header/Footer in LandingLayout)
  • Design token consistency — Replaced hardcoded hex colors in Credibility (#FF5F56, #FFBD2E, #27C93F) and LighthouseScores (#0cce6b) with CSS custom properties (var(--error), var(--warning), var(--success))
  • Landing: 5 (was 7, removed deprecated Navbar and LandingFooter)
  • Total: 55 components across all categories

  • UI component directory restructure — Components moved from flat src/components/ui/ into 8 subcategory folders: form/, data-display/, feedback/, overlay/, layout/, primitives/, content/, marketing/
  • Import paths changed — Direct imports like import Button from '@/components/ui/Button.astro' no longer work. Use barrel imports: import { Button } from '@/components/ui'
  • CVA variant system — All UI components now use class-variance-authority for type-safe variant management
  • New UI components — Switch, Table, Pagination, Progress, Toast, Accordion, Separator, NpmCopyButton, AvatarGroup, Icon
  • New pattern components — SearchInput, PasswordInput, StatCard, EmptyState
  • Barrel exports — All UI components re-exported from @/components/ui index
  • UI: 31 (was 33, reorganized with subcategories)
  • Patterns: 7 (was 3, added SearchInput, PasswordInput, StatCard, EmptyState)
  • Hero: 1 (was 2)
  • Total: 57 components across all categories

Upgrade guide: Update all direct imports to barrel imports. See upgrade guide for CVA migration details.


  • pnpm only — Removed package-lock.json, pnpm is now the sole package manager
  • Zod migration — Replaced standalone zod with astro/zod (Zod 4); z.string().email() is now z.email()
  • Removed astro-seo — Replaced with native <meta> tags in SEO.astro
  • Removed env.d.ts — Replaced by astro:env type-safe environment variables
  • ESLint --ext removed — Legacy flag dropped (not supported in ESLint v9)
  • experimental.contentIntellisense removed — Flag was stabilized in Astro beta.9
  • Astro 6.0.0-beta.9 with @astrojs/mdx v5 and @astrojs/react v5 betas
  • Content Security Policy (CSP) with auto-hashed inline scripts and explicit external allowlists
  • astro:env for build-time validated, type-safe environment variables
  • Native SEO component with full Open Graph and Twitter Card meta tags
  • Twitter Card meta tags added to SEO component
  • Fixed duplicate canonical URL in BaseLayout.astro
  • Fixed ZodError.errors.issues for Zod 4 compatibility
  • Removed legacy --ext flag from ESLint scripts
  • Removed stabilized experimental.contentIntellisense flag

Upgrade guide: v0.1.0-beta to v0.2.0-beta


Initial beta release

  • Astro 6.0.0-beta.5 with Tailwind CSS v4.0
  • 56 components across 7 categories
  • Three-tier design token system with OKLCH colors
  • Inverted color scheme for dark sections on light pages
  • Type-safe routing with routes.ts configuration
  • Full SEO toolkit:
    • Dynamic OG image generation with Satori
    • JSON-LD structured data schemas
    • Automatic sitemap and robots.txt
  • Content collections:
    • Blog posts with i18n support
    • Pages collection
    • Authors (JSON)
    • FAQs (JSON)
  • 4 layout variants:
    • BaseLayout
    • PageLayout
    • BlogLayout
    • LandingLayout
  • Dark mode with system preference detection
  • API routes for contact and newsletter forms
  • Deploy configurations for:
    • Vercel
    • Netlify
    • Cloudflare Pages

Button, Input, Textarea, Select, Checkbox, Radio, Card, Badge, Alert, Avatar, Skeleton, Icon, Logo, Dialog, Dropdown, Tooltip, Tabs, VerticalTabs, CodeBlock, CTA, SocialProof, NpmCopyButton, TerminalDemo, and more.

Header, Footer, ThemeToggle, Analytics

ContactForm, NewsletterForm, FormField

ArticleHero, BlogCard, ShareButtons, RelatedPosts

Hero, Credibility, LighthouseScores, TechStack, FeatureTabs, Navbar, LandingFooter, CTA

SEO, JsonLd, Breadcrumbs

Hero variants

None (initial release)

  • OG image generation may be slow for large sites
  • Some Tailwind v4 features are in beta

  • Stable Astro 6 release support
  • CLI scaffolding tool ✅ (create-velocity-astro)
  • Additional component variants ✅ (60+ components)
  • Multi-language documentation
  • Component playground / Storybook integration
  • Premium themes and templates
  • E2E test suite with Playwright
  • Performance benchmarking dashboard