Three months after v1, RicoFast v1.2 ships today. This release is mostly polish — but the kind of polish you notice ten minutes into using the template, not on the screenshot.
Here’s what changed.
Content system — Astro v5 Content Layer
We moved blog and changelog to the new Content Layer API with the glob loader. If you’re forking from an older version, the migration is straightforward:
entry.slug→entry.identry.render()→render(entry)(imported fromastro:content)Astro.glob()→import.meta.glob()
The benefit isn’t just modernization — Content Layer makes it much easier to source content from outside the repo later (CMS, external Markdown, REST endpoints) without changing the rest of the site.
Dark mode contrast pass
We re-audited every component against WCAG AA contrast in both light and dark mode. Specific changes:
--color-text-secondary-darklifted from#a8b5c8to#c5cedb(better for body copy at small sizes)--color-primary-darkbrightened from#3478d4to#3884ebso links remain readable against the deep navy background- Card borders in dark mode switched from
neutral-800toneutral-700for a softer edge
The Elements page now shows side-by-side light/dark previews for every component, so you can verify before shipping.
Performance wins
A few specific changes added up to a noticeably faster experience:
- Cold build time: 21s → 14s on a clean CI runner. Most of the saving came from removing unused dependencies and reducing the number of files Vite processes.
- First-load JS: Home page dropped from 31KB → 24KB gzipped after we split AnimatedText into a dynamic chunk.
- Image pipeline: switched all blog cards to lazy-loaded
loading="lazy"by default.
Lighthouse on a fresh install now scores 98 / 100 / 100 / 100 (Performance / Accessibility / Best Practices / SEO) on Home, Features, and Pricing.
New components
Two new additions live in src/components/:
BrowserFrame.astro— the Mac-style window chrome we use in the Hero, abstracted into a reusable component. Drop it around any image to give it that product-screenshot framing.Steps.astro— already existed as inline markup; now it’s a proper component with astepsprop, easier to reorder.
Migration notes
If you’re upgrading an existing fork:
pnpm installto pick upastro@5.15- Run
pnpm build— type-check will flag any places you’re still usingentry.slug - Search-replace
entry.render()→await render(entry)(note theawait) - Re-check your custom colors against the contrast table in
docs/DESIGN.md
The full changelog with file-level diffs lives at /changelog.
What’s coming in v1.3
Roadmap items being actively built:
- Component variants — multiple Hero, Pricing, and FAQ layouts swappable from a config flag
- Sample dashboard pages — for templates that need to ship an app-shell preview alongside the marketing site
- i18n scaffolding — opt-in locale routing without forcing a dependency
If there’s something you’d like prioritized, open an issue. The roadmap is steered by what people actually build.