Skip to content

🔥 Breaking Changes for 6.0 #23924

@ErisDS

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.

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