doc/development/documentation/release_notes.md
GitLab release notes are stored in the gitlab repository.
Release notes are organized into one directory for each release with an index.md file and individual
files for each feature. For example, the structure is similar to:
doc/
└─ releases/
└─ 19/
└─ gitlab-19-0-released/
│ ├── index.md
│ └── featureA-Beta.md
└─ gitlab-19-1-released/
├── index.md
├── featureB.md
└── featureA-GA.md
For each release, the product manager is responsible for creating the MR and files for the feature release note. The Technical writing team is responsible for creating all other directories and files.
To create a feature release note:
/doc/releases/19/gitlab-19-1-released/.Release Notes Item template to populate the description and track progress.[!note] All release notes should be merged by 23:59 UTC on the Friday before the release day to be included in the appropriate release.
If you need to update or entirely remove a feature release note, make a merge request with the requested changes, and assign to a Technical Writer for review.
To remove a feature release note, you only need to delete the associated file. No other files need to be adjusted.
Developer Relations creates a merge request for each release that adds a few sentences about the notable contributor.
This information needs to be added to the minor release index file.
For example, doc/releases/19/gitlab-19-1-released/index.md.
Use the following template after the existing introductory text:
## Notable contributor
We are excited to recognize [Name](https://gitlab.com/<username>)
as this month's [Notable Contributor](https://contributors.gitlab.com/notable-contributors)! ...
This merge request can be merged at any point before the release, though you can check with the author to confirm.
After the merge request is created, a Technical Writer must review the metadata and body text. This process is similar to other documentation changes.
On release day, the Technical Writer assigned to the upcoming release creates three merge requests:
gitlab.
Can be done before release day.docs-gitlab-com.
Can be done before release day.19-1-stable-ee.
Must be done on release day.[!warning] Do not merge the changes until the release manager confirms that the packages are publicly available, usually around 14:00 UTC. Release managers add a note in the
#release-postchannel when it's time to publish.
As part of the publishing process, you must update the minor release index file.
To update the content for the current release:
Open the minor release index file. For example doc/releases/19/gitlab-19-0-released/index.md.
In the metadata, after the group, add the release date. For example:
date: 2026-05-21
This addition makes the pipeline fail until the date of release. This failure is expected.
Update the description metadata:
# Original
description: Summary of features included in <version>
# New
description: GitLab <version> released with <top feature title>
Replace the version and top feature title with the relevant information.
Update the title metadata:
# Original
title: GitLab <version> - not yet released
# New
title: GitLab <version>
Update the introductory text:
# Original
The following features are being delivered for GitLab <version>.
These features are now available on GitLab.com.
# New
On <release date>, GitLab <version> was released with the following features.
Replace the date and version with the relevant information.
As part of the publishing process, you must create the directory and content for the next release. For example, when publishing 19.1, you would create the directory and index file for 19.2.
To create content for the upcoming release:
Identify the major version directory in /doc/releases/. For example /doc/releases/19/.
Create content for the upcoming version:
19/gitlab-19-1-released/.index.md file for the upcoming release.
For example, 19/gitlab-19-1-released/index.md.Add the file to the major version index page.
/doc/releases/. For example /doc/releases/19/._index.md, update the cards shortcode to reference the upcoming release file. For example:{{</* cards */>}}
- [GitLab 19.0](gitlab-19-0-released/index.md)
- [GitLab 19.1](gitlab-19-1-released/index.md)
{{</* /cards */>}}
Update the upcoming redirect page to reference the upcoming release.
In doc/releases/upcoming.md, update the redirect metadata to point to the upcoming release file. For example:
---
redirect_to: '19/gitlab-19-1-released/index.md'
---
Create a merge request and assign to a Technical Writer for review.
In the docs-gitlab-com repository, add the current release to data/en-us/navigation.yaml.
For example:
- title: GitLab 19
url: 'releases/19/'
submenu:
- title: GitLab 19.0
url: 'releases/19/gitlab-19-0-released/'
- title: GitLab 19.1
url: 'releases/19/gitlab-19-1-released/'
You can now push your commit. This merge request is complete.
After the release notes are published, you must backport them. You must do this work on release day and not before.
The final cutoff for the gitlab repository happens the Friday before the release.
If a user selects the version from the upper-right corner of the documentation site, they cannot get the final notes.
Backporting makes the notes visible and up-to-date when users select the newly released version.
19-1-stable-ee.gitlab repository and copy the file contents.19-1-stable-ee).#release-post channel,
or wait a few hours until the branch is available to merge.19.1,
then select New pipeline.To update, add, or remove a release note after the release deadline:
gitlab repository.
gitlab repository.19-0-stable-ee.19-0-stable-ee).docs-gitlab-com.
For Run for branch name or tag, select the version to deploy. In this example, choose 19.0,
then select New pipeline.In the release post, each feature release note is grouped into a section based on the stage
metadata defined in the feature release note. Each stage
maps to one of the following sections:
| Section | Stages |
|---|---|
| Primary features | - |
| Agentic Core | ai-powered, modelops |
| Unified DevOps and Security | analytics, application_security_testing, create, deploy, knowledge_graph, package, plan, security_risk_management, software_supply_chain_security, verify |
| Scale and Deployments | data_access, database_excellence, developer_experience, foundations, fulfillment, gitlab_dedicated, gitlab_delivery, growth, production_engineering, tenant_scale, unlisted/unknown |
Sections appear in the order listed in the table, with Primary features first. Any stage that
isn't mapped appears in the Scale and Deployments section. To add features to the Primary features section,
use the level metadata.
In each section, feature release notes are listed alphabetically by title. To override this order, define a value
for the weight metadata, where lower numbers go first.
Generally, use multiples of 10 (such as 10, 20, 30) to leave room for future insertions, and avoid single-digit
values unless a note must absolutely appear first.
| Metadata | Format | Description |
|---|---|---|
title | Pre-release: GitLab <version> - not yet released | |
Post-release: GitLab <version> | Page title. Uses the first format before release, and the second on release day. | |
description | Pre-release: Summary of features included in <version> | |
Post-release: GitLab <version> released with <top feature title> | Short summary displayed on cards for the index page. | |
group | Monthly Release, Patch Release | Used for analytics and feedback. Always uses Monthly Release; patch releases are created through a different process. |
stage | Release Notes | Used for analytics and feedback. Always uses Release Notes. |
| Metadata | Format | Description |
|---|---|---|
title | string | Feature title. Displayed as a section heading. Ideally seven words or fewer. |
tier | array, formatted like [ Free, Premium, Ultimate ] | Feature tier. Requires at least one. Always follow this order. |
offering | array, formatted like [ gitlab_com, self_managed, gitlab_dedicated, gitlab_dedicated_for_government ] | Feature offerings. Formatting matters. Requires at least one. Always follow this order. |
documentation_link | relative URL | Link to the feature documentation. Don't use https://-style links, and omit _index.md or the .md extension. |
work_item | absolute URL | Link to the related work item. Must not be confidential. |
categories | array | An array with the Name value of one or more categories. Values are case-sensitive, separate multiple values with commas. If a related category doesn't exist, make another merge request to add it. For 19.1, also add the categories information to an HTML comment in the body text. For more information, see the template. |
stage | string | Name of the stage that created the feature. Used to organize the section the release note appears in. |
level | One of: primary or secondary | Optional. Controls placement in the Primary features section. If undefined, defaults to secondary. |
weight | number | Optional. Controls ordering in each section. Lower numbers go first. To force a feature release note first in a section, use a lower number such as 10. To avoid sorting issues with other feature release notes, avoid using single-digit numbers unless the note must absolutely appear first. |
ignore_in_report | boolean | Required to be true by internal tooling. Has no impact on rendering the feature release note. |
---
title: "GitLab <version> - not yet released"
description: "Summary of features included in <version>"
group: Monthly Release
stage: Release Notes
---
The following features are being delivered for GitLab <version>.
These features are now available on GitLab.com.
## Notable contributor
[!note] For the 19.1 release, also add the categories information to an HTML comment in the body text. Use this format:
<!-- categories: System Access, Permissions -->.
---
title:
tier: [ Free, Premium, Ultimate ]
offering: [ gitlab_com, self_managed, gitlab_dedicated, gitlab_dedicated_for_government ]
stage: application_security_testing
documentation_link: "../../../user/permissions/#groups"
work_item: https://gitlab.com/groups/gitlab-org/-/work_items/<work-item-number>
categories: [ System Access, Permissions ]
level: primary or secondary
weight: 50
ignore_in_report: true
---
<!-- categories: System Access, Permissions -->
The text of the feature release note.
Explain the value of this improvement with 125 words or fewer.
Use phrases that start with, "In previous versions of GitLab, you couldn't... Now you can..."