Skip to content

Docs: How we develop features and release Storybook #31662

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: next
Choose a base branch
from

Conversation

vanessayuenn
Copy link
Contributor

@vanessayuenn vanessayuenn commented Jun 4, 2025

What I did

Add documentation pages on our feature and release cycles.

Checklist for Contributors

Testing

The changes in this PR are covered in the following automated tests:

  • stories
  • unit tests
  • integration tests
  • end-to-end tests

Manual testing

Not needed

Documentation

  • Add or update documentation reflecting your changes
  • If you are deprecating/removing a feature, make sure to update
    MIGRATION.MD

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/lib/cli-storybook/src/sandbox-templates.ts

  • Make sure this PR contains one of the labels below:

    Available labels
    • bug: Internal changes that fixes incorrect behavior.
    • maintenance: User-facing maintenance tasks.
    • dependencies: Upgrading (sometimes downgrading) dependencies.
    • build: Internal-facing build tooling & test updates. Will not show up in release changelog.
    • cleanup: Minor cleanup style change. Will not show up in release changelog.
    • documentation: Documentation only changes. Will not show up in release changelog.
    • feature request: Introducing a new feature.
    • BREAKING CHANGE: Changes that break compatibility in some way with current major version.
    • other: Changes that don't fit in the above categories.

🦋 Canary release

This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the @storybookjs/core team here.

core team members can create a canary release here or locally with gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=<PR_NUMBER>

Greptile Summary

Added new documentation pages that detail Storybook's feature lifecycle and release processes, providing clearer guidance on versioning strategy and feature maturity stages.

  • Added docs/releases/features.mdx describing feature lifecycle stages (Experimental, Preview, Stable, Deprecated)
  • Added docs/releases/index.mdx outlining versioning strategy and release channels (major, minor, patch, pre-releases)
  • Documentation aligns with semantic versioning principles and support policies
  • Content helps users understand feature evolution through Storybook ecosystem
  • Clear definitions provided for each feature stage's commitment level and quality expectations

@vanessayuenn vanessayuenn changed the title Add documentation on how we develop features and release Storybook [Docs] How we develop features and release Storybook Jun 4, 2025
@vanessayuenn vanessayuenn changed the title [Docs] How we develop features and release Storybook Docs: How we develop features and release Storybook Jun 4, 2025
@vanessayuenn vanessayuenn added documentation ci:docs Run the CI jobs for documentation checks only. labels Jun 4, 2025
Copy link

nx-cloud bot commented Jun 4, 2025

View your CI Pipeline Execution ↗ for commit 3f6a06c.

Command Status Duration Result
nx run-many -t build --parallel=3 ✅ Succeeded 1m 13s View ↗

☁️ Nx Cloud last updated this comment at 2025-06-12 23:00:19 UTC

@vanessayuenn vanessayuenn marked this pull request as ready for review June 11, 2025 14:40
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 files reviewed, 3 comments
Edit PR Review Bot Settings | Greptile

title: Feature Lifecycle
---

This page explains how the Storybook team classifies features using three lifecycle labels —— **Experimental**, **Preview**, **Stable**, and **Deprecated**. These labels help users understand our level of commitment, the expected quality, likelihood of breaking changes, and anticipated timeline for each feature. By making this process transparent, we aim to support better adoption decisions and build trust in how Storybook evolves.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

logic: The introduction mentions 'three lifecycle labels' but proceeds to list four stages (Experimental, Preview, Stable, and Deprecated). Update the text to say 'four lifecycle labels' for accuracy.

Suggested change
This page explains how the Storybook team classifies features using three lifecycle labels —— **Experimental**, **Preview**, **Stable**, and **Deprecated**. These labels help users understand our level of commitment, the expected quality, likelihood of breaking changes, and anticipated timeline for each feature. By making this process transparent, we aim to support better adoption decisions and build trust in how Storybook evolves.
This page explains how the Storybook team classifies features using four lifecycle labels —— **Experimental**, **Preview**, **Stable**, and **Deprecated**. These labels help users understand our level of commitment, the expected quality, likelihood of breaking changes, and anticipated timeline for each feature. By making this process transparent, we aim to support better adoption decisions and build trust in how Storybook evolves.


Major releases introduce breaking changes and significant new features. We use major releases to keep up with ecosystem changes, evolve Storybook’s architecture and APIs, and make the tool faster, leaner, and easier to use.

Once we start working on a major release, we pause minor releases but continue to ship patch releases as needed. Major releases go through a sequence of prereleases —— `alpha`, `beta`, and `rc` (release candidate) —— before landing in the stable channel. We aim to include automated migrations and provide [a comprehensive migration guide](../migration-guide/index.mdx) when manual changes are necessary.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: Double em dash '——' should be a single em dash '—' or double hyphen '--'

Suggested change
Once we start working on a major release, we pause minor releases but continue to ship patch releases as needed. Major releases go through a sequence of prereleases — `alpha`, `beta`, and `rc` (release candidate) — before landing in the stable channel. We aim to include automated migrations and provide [a comprehensive migration guide](../migration-guide/index.mdx) when manual changes are necessary.
Once we start working on a major release, we pause minor releases but continue to ship patch releases as needed. Major releases go through a sequence of prereleases — `alpha`, `beta`, and `rc` (release candidate) — before landing in the stable channel. We aim to include automated migrations and provide [a comprehensive migration guide](../migration-guide/index.mdx) when manual changes are necessary.

Comment on lines 1 to 6
---
title: 'Features Lifecycle'
sidebar:
order: 13
title: Feature Lifecycle
---
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: The frontmatter title 'Features Lifecycle' and sidebar title 'Feature Lifecycle' are inconsistent. Consider using the same form (plural or singular) for both.

kylegach added 3 commits June 12, 2025 15:00
* next: (350 commits)
  Update CHANGELOG.md for v9.0.9 [skip ci]
  fix scripts test
  Next.js: Add styled-jsx to optimize Vite dependencies in configuration
  Next.js: Update styled-jsx resolution method in Vite configuration
  Prevent destructuring of undefined
  Next.js: Enhance Vite configuration with styled-jsx aliasing
  Next.js: Add webpack alias to resolve Next.js package conflicts
  dont at-mention users in release PR descriptions
  cleanup, fix unit tests
  Angular: Update MiniCssExtractPlugin configuration for cache busting
  remove unneeded preview entrypoints for core addons
  relatively import preview annotations of core addons
  Refactor import statements in find-implicit-spies.ts to consolidate Babel imports
  Update dependencies in yarn.lock and package.json
  use babel from core in codemods
  bundle in giget
  Bump version from "9.1.0-alpha.5" to "9.1.0-alpha.6" [skip ci]
  prebundle more in cli-storybook package
  Write changelog for 9.1.0-alpha.6 [skip ci]
  fix package manager instance in empty dir flow
  ...

## Supported Versions

- We only support the **latest major** version of Storybook.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vanessayuenn — Can you clarify what this means, exactly?

Let's say that latest is currently 9.2.1. Is any 9.x.x version supported? Given that there are no breaking changes in the minors, I'd expect only the absolute latest, 9.2.1 to be supported.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What I meant is: we only provide active maintenance (bug fixes, patches, etc.) for the current major version. So if the latest release is 9.2.1, only 9.2.x is getting patched. Earlier minors like 9.1.x or 9.0.x won’t receive updates unless it’s a critical bug or a critical security fix. But I think this sentence is not conveying what I meant.

How about if we replace this whole section with:

We actively maintain only the latest major version of Storybook (e.g. 9.x).

  • Within the current major, we patch only the latest minor (e.g. 9.2.x).
  • Most fixes and new work go into the next minor (e.g. 9.3-alpha) and are not backported.
  • Critical security fixes may be backported more broadly across 9.x, and in rare cases, to the previous major.

Better?


Patch releases include critical bug fixes and security updates. These are issued only for the current minor version and are not pre-released.

#### Pre-release
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vanessayuenn — Should we add our definitions of "alpha", "beta", and "rc" to this section? And, umm, do we have those? 😅

Copy link
Contributor Author

@vanessayuenn vanessayuenn Jun 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't have definitions of the different prereleases yet but we were just talking about formalizing them at retro today! We can add that in later when we have consensus.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ci:docs Run the CI jobs for documentation checks only. documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants