Migration
Migrating from v3.1 to v3.2
The site URL moves back to app.config.ts
This is the only breaking change of this release, and it only concerns you if you set BASE_URL.
The public URL of your blog is now read from the url key of your app.config.ts, and it takes
precedence over the BASE_URL environment variable:
export default defineAppConfig({
url: 'https://www.example.com',
})
BASE_URL still works as a fallback when url is absent, so a project that never set url keeps
working untouched. But if you set both and they disagree, app.config.ts now wins where
BASE_URL used to. The build warns you when it spots the disagreement, so you are not left guessing.
What to do: check that url in your app.config.ts really is your public URL. Once it is, you
can drop BASE_URL from your .env and your deployment settings.
og:url, the sitemap and the RSS feed.
Pointing it at the wrong domain tells search engines your content belongs to somebody else.Why the change
Version 2.0 moved this setting out of app.config.ts and into BASE_URL. That was a workaround
rather than a design decision: the SEO modules Bloggrify integrates could only read the site URL
from the environment at the time. They now expose a Nitro hook, so the setting can live next to the
rest of your site identity, which is where it belonged in the first place.
Migrating from v1.8 to v2.0
Version 2.0 of Bloggrify introduces a few breaking changes. This guide will help you migrate your existing project to the latest version.
There is two versions of this migration guide:
- one for general users
- one for theme developers
For general users
Configuration
Base URL
The url of the website is now configured in the .env file. You have to define the BASE_URL variable in this file, or available in the environment variables.
It replaces the url property in the app.config.ts file.
app.config.ts again, and BASE_URL is only a
fallback. See Migrating from v3.1 to v3.2.SITE_INDEXABLE
By default, the whole website is not indexable by search engines. The robots.txt disallows all robots to crawl the website and the sitemap is empty.
You can change this by setting the SITE_INDEXABLE option to true in the .env file.
SITE_INDEXABLE=false
Analytics
It is now possible to add several analytics services to your website by adding them in the analytics property of the app.config.ts file.
Before:
analytics: {
provider: 'fathom',
fathom: {
code: 'YOUR_CODE'
}
}
After:
analytics: {
providers: [ {
provider: 'hakanai',
code: 'YOUR_CODE'
}]
}
Alternate links
The format of the alternate links in the frontmatter of the markdown file has changed.
Before:
---
language: "fr"
alternates:
- en: "/2025/01/2024-review"
---
After:
---
alternates:
- hreflang: "en"
href: "/2025/01/2024-review"
- hreflang: "fr"
href: "/fr//2025/01/2024-review"
---
For theme developers
layouts
All layouts have been simplified and needs less props.
default.vue and home.vue layout:
defineProps<{
doc: unknown;
}>()
archives.vue layout don't need any props. You may use the MinimalistListing component to display the list of articles, or you can create your own component.
tag.vue layout:
defineProps<{
tag: string;
}>()
and category.vue layout:
defineProps<{
category: string;
}>()
Both can use the MinimalistListing component to display the list of articles.
Example of tag.vue layout:
<template>
<MinimalistListing format="list" :tag="tag"/>
</template>