import { Meta } from '@storybook/addon-docs/blocks'
import { LifecycleTag } from './components/LifecycleTag'

<Meta title="Introduction/Component Lifecycle" />

# Component Lifecycle

Blocks components move through different stages throughout their lifecycle. Within each stage, components meet different requirements and receive different levels of support.

## <LifecycleTag variant="Stable" />

Stable components solve a proven use case. They meet all of our quality standards and include and documentation. Breaking changes to the component API are unlikely and follow semantic versioning.

## <LifecycleTag variant="In Development" />

These components are actively being worked on and are not yet feature-complete. They may be used in production, however, changes to the API are possible without following semantic versioning.

This is a good time to provide feedback.

## <LifecycleTag variant="Internal" />

Internal components are lower-level, partial building blocks, or components for internal use. They are intended for advanced use cases that aren't covered by the regular, feature-complete components. Developers are responsible for ensuring accessibility, browser support, and localization. Changes to the component API are possible without following semantic versioning.

## <LifecycleTag variant="Legacy" />

Legacy components are going to be phased out eventually, but don't have a stable replacement yet. You can continue to use them in existing code until a stable alternative becomes available. We don't recommend adopting legacy components in new code. Legacy components won't receive any updates apart from bugfixes.

## <LifecycleTag variant="Deprecated" />

Deprecated components are going to be removed in the next major release. When used, they log a deprecation warning during local development. Replace them with the alternative that's suggested in the components' documentation. Deprecated components won't receive any updates or bugfixes.
