Skip to content

🔥 Breaking Changes for 6.0 #23924

Closed
Closed

Description

@ErisDS

We're working towards releasing Ghost 6.0. As with all major version bumps, there will be some breaking changes, especially around the API.

This issue is a placeholder where we'll keep track of all the breaking changes we are making. The intention is to have one place to point to - but also make this transparent for the community.

Breaking changes

This list isn't final until 6.0 is shipped.

  1. Dropping support for Node.js v18
    v18 is EOL now, and no longer supported upstream, we're updating to reflect this
  2. Dropping support for Node.js v20
    Node.js v22 includes some important new features that we want to use to make building Ghost easier - including TypeScript and ESM support. Maintaining backwards compatibility with v20 in this case doesn't feel super valuable given the advantages of being v22 only and the timing of the 6.0 release means we get to call it out loud as a breaking change.
  3. Return max 100 results from Ghost's APIs (deprecating ?limit=all)
    Having the ability to return all results made sense when Ghost was a small blogging tool. Now it has significant performance issues. ?limit=all will be deprecated, and if used will only return max 100 results. Setting limit to a number higher than 100 will also result in a max of 100 results.
  4. Removing AMP
    Our AMP feature has been deprecated for quite some time. It will be removed in 6.0
  5. Removing GET /ghost/api/admin/session/ endpoint - this is an unused endpoint. Use GET /ghost/api/admin/users/me/ instead.
  6. Removing created_by & updated_by from everywhere
    These fields were deprecated a while ago and are not used in any meaningful way in the codebase. Audit logging is done via the actions system which replaced usage of these fields
  7. Ensuring that all users have an ObjectID for their ID. This means migrating any existing users who had an ID of 1 to an ObjectID, and changing the system so that the first user created no longer has a hardcoded ID of 1. This allows us to remove codepaths that had to check whether the ID was 1 or an ObjectID (and allow us to properly type this field) as well as remove any assumptions that the owner ID is always 1. It is no longer safe to assume the user with an ID of 1 is the default/owner user
  8. Stopped serving files without extensions from the theme root folder & correctly 404 for missing theme assets.

Activity

  1. added
    core team[triage] Being looked at by the core Ghost team
    on Jun 19, 2025
  2. changed the title [-]Breaking Changes for 6.0[/-] [+]🔥 Breaking Changes for 6.0[/+] on Jun 19, 2025
  3. cathysarisky commented on Jun 19, 2025

    @cathysarisky
    Member

    @ErisDS , it might be kind to self hosters to update what's here: https://ghost.org/docs/faq/node-versions/

    A version of node that'll be discontinued this summer probably shouldn't be the recommended version today? Are there any blockers to recommending 22 now, while still on Ghost 5.x?

  4. pinned this issue on Jun 20, 2025
  5. ErisDS commented on Jun 20, 2025

    @ErisDS
    MemberAuthor

    You're correct, in an ideal world that would be the case. But also, we do usually change the recommended node version and drop node versions outside of majors (although in line with Node itself, roughly).

    We haven't yet finished the internal process we use internally in order to officially declare v22 "recommended", so I wouldn't feel comfortable changing it yet, and I do think it's all going to come together at the same time as 6.0.

  6. 137 remaining items

  7. ngeorger commented on Jul 21, 2025

    @ngeorger

    @ngeorger sorry, done! Need to look into a way to automate that 🤔

    Thank you very much, regards!

  8. ErisDS commented on Aug 4, 2025

    @ErisDS
    MemberAuthor

    The breaking changes list is final and officially published here now: https://docs.ghost.org/changes#ghost-6-0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    core team[triage] Being looked at by the core Ghost team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions