> ## Content Index
> Fetch the complete content index at: https://discoverghost.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# Upgrading Legacy Ghost Themes to 6.x: A Practical GScan Checklist
- URL: https://discoverghost.com/blog/ghost-6-theme-upgrade-checklist/
- Published: 2025-09-15T12:00:00.000Z
- Updated: 2026-07-20T00:46:04.000Z
- Description: Legacy Ghost themes need more than a version bump. A GScan-driven checklist for Ghost 6—helpers, cards, members, AMP removal, and deploy verification.
- Author: Harish Chouhan
- Tags: Ghost Themes, #Import 2026-10-22 16:21

Ghost 6 is not a repaint. Themes that passed GScan on 4.x or 5.x may still fail on **Node 22**, **Lexical card markup**, **locale helper changes**, and **AMP removal**. Before you zip and upload, run GScan and walk this checklist.

![Theme folder, GScan checklist, terminal output, and Ghost 6.x badge](https://discoverghost.com/blog/content/images/2026/07/ghost-6-theme-upgrade-checklist-feature.png)

GScan turns Ghost 6 theme upgrades from guesswork into a checklist.

## Step 0: Baseline with GScan

From the theme root, run `gscan content/themes/your-theme`. Fix **errors** before deploy; treat **warnings** as a prioritized backlog. Update `package.json` with `"engines": { "ghost": ">=6.0.0" }`.

## Checklist: package and structure

- `package.json` includes valid `name`, `version`, and `engines.ghost`
- Required templates: `index.hbs`, `post.hbs`
- `default.hbs` includes `{{ghost_head}}`, `{{ghost_foot}}`, `{{body_class}}`, `{{{body}}}`
- Remove **AMP** templates — deprecated in Ghost 6
- `routes.yaml` validates if present

## Checklist: Ghost 6 breaking helper changes

Replace `@lang` with `@site.locale`. Use `{{t "key"}}` with locale files. Adopt `{{social_url}}` helper patterns. Delete AMP-specific partials.

## Checklist: members and Portal

If `@site.members_enabled`, verify Portal triggers, paid content states, `@member` gates, and no duplicate Stripe embeds. See [Portal Explained](https://discoverghost.com/blog/ghost-portal-explained/).

## Checklist: Lexical cards and content

CSS must target current kg-card classes including width variants. Preview real admin posts—not lorem templates.

## Checklist: images and performance

Use `{{img_url}}` with declared sizes in `package.json`. No hard-coded external image URLs in templates.

## Checklist: pages and custom templates

Respect `@page.show_title_and_feature_image`. Verify `custom-*.hbs` mappings and error templates.

## Deploy verification

After GScan passes: activate on staging, browse all template types, test Portal on mobile, verify newsletter links, run Lighthouse—then promote to production.

## When to rebuild vs patch

**Patch** small themes with localized GScan fixes. **Rebuild** when carrying Bootstrap-era markup, AMP forks, or pre-2.0 patterns—the refactor cost exceeds a clean Ghost 6 base.

For platform context, see the [Ghost 6.0 release guide](https://discoverghost.com/blog/ghost-6-0-release-guide/) and [routes.yaml magazine patterns](https://discoverghost.com/blog/ghost-routes-yaml-magazine/).

## Sources and further reading

- [Ghost 6.0 release guide](https://discoverghost.com/blog/ghost-6-0-release-guide/)
- [GScan on GitHub](https://github.com/TryGhost/gscan?ref=discoverghost.com)
- [Ghost Developer Docs — Changes](https://docs.ghost.org/changes?ref=discoverghost.com)