---
title: "Components — Release notes"
canonical: https://sky-ui.cf.sky.com/components/release-notes
---

# Components — Release notes

Release history and breaking changes for the Sky UI Core component package.

This page summarises releases for `@sky-uk/ui-core`. Releases are grouped by major version and
listed newest first, with breaking changes highlighted at the start of each major version.

Use `@sky-uk/ui-codemods` for major-version upgrades. Changes it cannot automate are marked
**Manual update required**.

[Find out more about Sky UI codemods](https://github.com/sky-uk/sky-ui/tree/main/packages/codemod).

## v13

<a id="core-v12-to-v13"></a>

### Breaking changes: v12 to v13

_Codemod preset: `v12-to-v13/all-breaking-changes`._

- Removed `$trim` and `$theme` from components that no longer support branded treatments,
  including `Card`, `Carousel`, `Carousel.Slide`, `InfoCard`, `Signpost`, and `Tabs.Tab`.
- `products.glass` → `surfaces.blue` for the renamed colour token.
- **Manual update required:** Removed colour tokens `products.tv`, `products.mobile`, and
  `products.broadband`, including `.regular` and `.dark` forms. Choose supported replacements.
- **Manual update required:** Removed gradients `environmental`, `primary`, `sky.accessible`,
  `products.broadband`, `products.glass`, `products.mobile`, `products.protect`, and `products.tv`,
  including `.regular` and `.accessible` forms where previously supported. Choose supported
  replacements; broadband tier gradients `products.broadband-essential`,
  `products.broadband-superfast`, and `products.broadband-ultrafast` remain available.
  The `products.glass` → `surfaces.blue` rename applies only to colours.
  For both token removals, check helpers, system props, styles, and configuration: removed keys
  can return `null` even when TypeScript passes.
- **Manual update required:** From v13.0.0, `Modal.onClose` receives
  `React.MouseEvent | React.KeyboardEvent`. Update native DOM event annotations and native-only
  event usage.
- **Manual update required:** From v13.1.0, `Modal.Content` no longer exposes the full styled
  `div` API. Move DOM attributes and handlers to an inner element; use `Modal.stopEventPropagation`
  where appropriate and verify click behaviour.
- **Manual update required:** From v13.2.0, `Button` uses `forwardRef` with explicit `ButtonProps`.
  Check custom `as` components and refs against the target types, preserving client-side routing.
- `showIndicator` → `$hideIndicator` (with inverse boolean values) on standalone `RadioCard` and
  `ControlField.Option` when rendered as a `RadioCard`.
- Removed `$displayPagination` from `Table`; pagination is now managed internally.
- Removed `$colorGradient` from `Text`; gradient typography is no longer supported.
- **Manual update required:** `useTranslations` types are restricted to supported translation keys.
  Rebuild TypeScript and fix callers that previously passed undeclared keys.
- **Manual update required:** `hasSuffix` was removed from the `TypographyStyle` return type in
  v13.0.2. Remove consumer type logic that reads this property.

### v13.3.0

_21 August 2026 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4013.3.0)_

#### Features

- Added an optional `cta` object to `ProductCard.Legals`, with link text, click handling, and an
  accessible label. Use it to open expanded legal content or link to a Legal Accordion.

---

### v13.2.0

_18 June 2026 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4013.2.0)_

#### Features

- Added React Server Component support to `Button`, `IconButton`, and `InfoCard`.
- Added an optional thumbnail to `Accordion`.

#### Updates

- Updated `ProductCard` thumbnail layout.
- Updated the `display-5` line height and moved all packages to styled-components 6.4.1.
- Installation prerequisite: Core v13.2.0 requires `styled-components >= 6.4`. If upgrading that
  dependency too, check consumer types and tests against both updates before completing the migration.

#### Bug fixes

- Corrected `RadioCard`'s `onChange` handling.

---

### v13.1.1

_11 May 2026 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4013.1.1)_

#### Updates

- Updated Core to the latest UI Tokens release.

#### Accessibility

- Form validation now uses `role="alert"` so screen readers prioritise validation messages.
- Updated `ProgressTracker` and `SkeletonLoader` colours to meet minimum contrast requirements.

---

### v13.1.0

_31 March 2026 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4013.1.0)_

#### Features

- Added `useDragToScroll` for drag-scrolling interfaces such as `Rail`.
- Added `$selectable` to `Card`, allowing uncontrolled interactive content such as `RadioCard`
  without requiring `href` or `onClick`.

#### Updates

- Added a thin styled scrollbar to overflowing `Tabs`.
- Jest environments without `CSS.supports` need a test-setup polyfill when exercising
  `useDocumentScrollLock`.

#### Bug fixes

- Fixed falsy values being dropped by `useResponsiveProps` and Safari issues in
  `useDocumentScrollLock`.

---

### v13.0.2

_26 February 2026 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4013.0.2)_

#### Updates

- Reduced the width of the `Tabs` scrollbar.

#### Bug fixes

- Fixed `Popover` remaining open when focus moved to another element.
- Fixed `Markdown` formatting when content contains newline characters.
- Removed `hasSuffix` from `TypographyStyle` to resolve styled-components TypeScript errors.

---

### v13.0.1

_5 February 2026 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4013.0.1)_

#### Updates

- Applied 62.5% opacity to disabled `Card` content while removing the duplicate opacity effect
  from the `RadioCard` indicator.
- Removed the opacity treatment from read-only `Card`.

#### Bug fixes

- Fixed `ComparisonTable` pagination on mobile and a layout shift in `Text`.

---

### v13.0.0

_16 January 2026 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4013.0.0)_

#### Features

- Added the Sky Headline font through `Text`'s `headline` variant and the `typography` helper;
  removed gradient typography.
- Added `moveNext`, `movePrevious`, `moveTo`, and `snapTo` controls to `Carousel`, plus custom
  thumbnail `aria-label` support in `ProductGallery`.
- Added `forwardRef` to `VideoOnIntersection`.

#### Updates

- Delivered the Sky rebrand: removed the primary `Button` sheen/glass effect, removed branded
  `$trim` and `$theme` treatments, and renamed `products.glass` to `surfaces.blue`.
- Updated `RadioCard` indicator, disabled, and error-state APIs and removed `Table`'s
  `$displayPagination` prop.
- Migrated `ProductCard` to TypeScript and standardised test IDs on `data-test-id`.

#### Bug fixes

- Restored missing `data-skyui-core` attributes.
- Aligned `Modal`'s `onClick` and `onClose` event handling.

## v12

<a id="core-v11-to-v12"></a>

### Breaking changes: v11 to v12

_Codemod preset: `v11-to-v12/all-breaking-changes`._

- **Manual update required:** `ComparisonTable` was rebuilt. Every table requires a unique
  `$tableId`, and `$columnsInView` must provide `xs`, `sm`, `md`, `lg`, `xl`, and `xxl` values.
  `Table.Group` no longer accepts `title`; place the title in `Table.GroupHeader` and wrap its rows
  in `Table.GroupContent`.
- Deprecated `@sky-uk/ui-animation` and `@sky-uk/ui-animation-framer`. Move
  `VideoOnIntersection`, `useIntersectionProgress`, `useIntersection`,
  `useIsomorphicLayoutEffect`, `useReducedMotion`, `useStaticContent`, `useVideoIntersection`, and
  `useKeyboardUser` into the existing `@sky-uk/ui-core` import. `Parallax` remains in the animation
  package. **Manual update required:** Migrate imports from `@sky-uk/ui-animation`.
- Removed `$theme` from `Highlight`.
- Replaced `react-input-mask` with `@react-input/mask`. Update mask characters from `a`, `9`, and
  `*` to `@`, `#`, and `_`, and add the corresponding `replacement` patterns to `TextInput` and
  `Field.Control`.
  **Manual update required:** From v12.0.1, stricter input types may require consumer fixes:
  `state` must be `'error' | 'confirmed' | undefined`, `aria-invalid` must use a valid ARIA value
  (not an empty string), and `value` must satisfy React's input value type. Preserve
  controlled/uncontrolled behaviour when adjusting values.
- `Tabs.onTabClick` → `Tabs.onTabChange`. The callback now runs for both pointer and keyboard
  navigation.
- Removed `flex-parent` system props from `RadioCard`, including flex direction, wrapping,
  alignment, and gap props. **Manual update required:** Move any required layout styles to a wrapper.
- `primary.light` → `interaction.focus` for the renamed colour token.

### v12.2.1

_29 December 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4012.2.1)_

#### Features

- Added responsive `src` support to `Video` and `VideoOnIntersection`.

#### Bug fixes

- Restored the missing `margin`, `flex-child`, and `grid-child` system props on `Tag`.
- Fixed `Modal` expanding the document body and repeatedly triggering `IntersectionObserver`.
- Fixed the `DealCard` background beneath `Bestseller` and `ComparisonTable` multiline row-header
  backgrounds and `lg` breakpoint overlap.

#### Accessibility

- Improved screen-reader feedback on the `ComparisonTable` “Show more” control.

---

### v12.2.0

_6 November 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4012.2.0)_

#### Features

- Added an optional `as` prop to `Markdown` for selecting its wrapper element.

#### Updates

- Converted `Rail` to TypeScript and allowed `InfoCard` list items to use variable widths.
- Changed the `ProductCard` offer colour from `attention` to `attention.dark`.

#### Bug fixes

- Fixed `ComparisonTable` snapshots when `$hideRowHeaders` is used and restored the missing sticky
  header keyline.

---

### v12.1.1

_16 October 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4012.1.1)_

#### Features

- Added and exported `useDocumentScrollLock` to prevent document scrolling on iOS; `Modal` now
  uses it to fix background-body scrolling.

#### Updates

- Updated the `DealCard` subgrid so titles and thumbnails align across cards, and updated its
  countdown timer.

---

### v12.1.0

_10 October 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4012.1.0)_

#### Features

- Ported `InputGroup` from `@sky-uk/ui-concepts` into Core.
- Added `InlineAlert` as an `InfoCard` child and label support to `Switch`.
- Exposed animation hooks formerly provided by `ui-animation` from Core.

#### Bug fixes

- Fixed `Accordion` cleanup behaviour.

---

### v12.0.3

_18 September 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4012.0.3)_

#### Bug fixes

- Fixed content overlap when `Table.GroupContent` is expanded.
- Corrected invalid `InlineAlert` variant names.

---

### v12.0.2

_10 September 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4012.0.2)_

#### Bug fixes

- Restored the `scrollend` polyfill after tree-shaking incorrectly removed it from builds. The
  polyfill is required by Safari and all WebKit browsers on iOS.

---

### v12.0.1

_5 September 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4012.0.1)_

#### Features

- Added `ProductCard` inline price content and `Switch.$defaultChecked`.

#### Updates

- Reworked `ComparisonTable` structure, identity, responsive column counts, and pagination to
  improve accessibility and prevent layout shift.
- Moved commonly used animation hooks and `VideoOnIntersection` into Core and deprecated the two
  animation packages.
- Removed obsolete `Highlight` and `RadioCard` props, updated UI Token keys, replaced the
  input-mask implementation, and renamed the `Tabs` callback.
- Refreshed `Blockquote` and the `cinema.dark` gradient.

#### Bug fixes

- Restored inherited `Markdown` font sizes.

## v11

<a id="core-v10-to-v11"></a>

### Breaking changes: v10 to v11

_Codemod preset: `v10-to-v11/all-breaking-changes`._

- `Price.$inline` → `Price.$inlinePrefix`; use `$inlineSuffix` when only the suffix should
  remain inline.
- Moved `Rail` `$theme` and `$appearance` from `Rail.Heading` to the top-level `Rail`; pagination now
  inherits `$appearance`. `Rail.Heading.$alignment` → `Rail.Heading.$textAlign`.
- **Manual update required:** `Tabs` no longer generates an ID with `useId`. Give every instance a
  unique, stable `id`.
- **Manual update required:** `Highlight` supports one accessible colour variant from v11.3.0.
  Remove `$appearance` and `$theme` usage.

### v11.8.1

_19 August 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.8.1)_

#### Features

- Made `Price.$size`, `$inlinePrefix`, and `$inlineSuffix` responsive.
- Allowed `Field` using `InputGroup` to receive a `LoadingSpinner` and added custom element support
  to message props.

#### Bug fixes

- Fixed `Accordion` system-prop types, the `ProductGallery` accessible label, and breakpoints in
  `Feature`, `Notification`, `Tabs`, and `Toast`.

#### Accessibility

- `Markdown` images now default to an empty alt attribute when none is supplied.

---

### v11.8.0

_9 July 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.8.0)_

#### Features

- Added the `DealCard` component.

#### Updates

- Made `InlineAlert` responsive and added responsive `$size` support to `Rail`.

#### Bug fixes

- Fixed `ProductGallery` scrolling the page to its track during navigation.

#### Accessibility

- Added `$scrollableRegionTabIndex` to `Carousel` and `ProductGallery` and aligned the existing
  `Rail` and `Table` implementations.

---

### v11.7.1

_23 June 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.7.1)_

#### Bug fixes

- Restored compatibility for applications using styled-components newer than v5 after a regression
  in v11.7.0.

---

### v11.7.0

_20 June 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.7.0)_

#### Features

- Added `InlineAlert`.

#### Updates

- Migrated Core's package build from Rollup to Vite, updated the mobile `Accordion` font size to
  `display-7`, and allowed consumers to configure
  `Rail`'s `tabIndex`.

#### Bug fixes

- Fixed the `Popover.$popoverWidth` type and changed the `Markdown` wrapper from a fragment to a
  `div`, allowing data attributes to be applied.

#### Accessibility

- Added reduced-motion support to `Toast` and `Notification`; replaced the `Accordion` transition
  with a keyframe animation to improve SEO performance.

---

### v11.6.1

_6 June 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.6.1)_

#### Features

- Added `$inlinePrefix` and `$inlineSuffix` support to `ProductCard` pricing.

#### Bug fixes

- Fixed `InputGroup` composition inside `Field` and made `Markdown` respect inherited `$fontSize`.

---

### v11.6.0

_22 May 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.6.0)_

#### Features

- Added `Rail.moveNext` and `movePrevious`, `Tabs.onTabChange`, and Sky UI focus rings for `Tabs`
  and `Rail`.

#### Updates

- Replaced Carousel's Framer dependency with native scrolling and CSS animations and moved layout
  decisions to container queries with media-query fallbacks.

#### Bug fixes

- Updated disabled `Button` styles and fixed `RadioInput`, `ProductGallery`, `RadioCard`, `Tabs`, and
  the sticky `ComparisonTable` header.

---

### v11.5.0

_29 April 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.5.0)_

#### Features

- Allowed the Concepts `InputGroup` to be used inside `Field`.
- Added `flex-child`, `grid-child`, and `margin` system props to `Tag`.

#### Bug fixes

- Improved `Price` suffix wrapping, removed the `LegacyTabs` warning, exposed Carousel navigation to
  assistive technology, aligned the `Tabs` focus ring, and stopped `Modal` from resetting focus on
  every re-render.

---

### v11.4.3

_9 April 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.4.3)_

#### Features

- Added `$bgImage`, `$bgPosition`, `$bgSize`, `$bgAttachment`, `$bgRepeat`, `$bgClip`, `$bgOrigin`,
  and `$bgBlendMode` system props.

#### Bug fixes

- Fixed `Accordion` focus clipping, duplicate `RadioCard.onClick` calls, and controlled
  `Switch.$checked`; added pricing-prefix support to `ProductCard`.

#### Accessibility

- Increased focus-ring visibility by changing its colour and stroke width.

---

### v11.4.1

_28 March 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.4.1)_

#### Bug fixes

- Stopped `Tabs.onTabClick` firing on initial render.
- Prevented closed Firefox `Accordion` content from remaining tabbable and fixed opening when
  reduced motion is enabled.

#### Accessibility

- Prevented disabled `RadioCard` clicks and improved screen-reader navigation of partially visible
  `Rail.Item` content.

---

### v11.4.0

_14 March 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.4.0)_

#### Features

- Added `ProductGallery` and `SkeletonLoader`.

#### Accessibility

- Added an accessible status to `LoadingSpinner`, defaulting to “Loading”.

---

### v11.3.0

_6 March 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.3.0)_

#### Features

- Added `Swatch.$outline`; `$unavailable` now takes precedence over `$selected`.

#### Accessibility

- Added `cinema.accessible` and updated accessible gradients to meet APCA contrast requirements.
- Reduced `Highlight` to one accessible colour variant using `attention.dark`.
- Restricted `Text.$colorGradient` to `display-5` and larger text.

---

### v11.2.1

_24 February 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.2.1)_

#### Bug fixes

- Fixed a v11.2.0 regression that prevented `useResponsiveProps` fallback attributes from working.

---

### v11.2.0

_19 February 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.2.0)_

#### Features

- Introduced the pre-release, Style Dictionary-based UI Tokens package with CSS, Sass, JavaScript,
  TypeScript, and Core-specific outputs.

#### Accessibility

- Improved semantics for interactive `Swatch`, indicators, `LoadingSpinner`, `Switch`, and
  `ControlField`; `Accordion.Heading` now defaults to `h3`.
- Required `Accordion.id`, added `hidden="until-found"`, and fixed responsive props, Rail keyboard
  scrolling, Modal focus trapping, and Notification alignment.

---

### v11.1.4

_6 February 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.1.4)_

#### Bug fixes

- Fixed an incorrect dependency in `Popover`'s `useMemo` call.

---

### v11.1.3

_29 January 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.1.3)_

#### Updates

- Replaced internal `useLayoutEffect` calls with `useIsomorphicLayoutEffect`.

#### Bug fixes

- Replaced `ControlField.Option` margin with layout gap and supplied a default
  `ControlField.Layout` when consumers omit one.

#### Accessibility

- Ensured keyboard and assistive-technology navigation fully reveals partially visible `Rail.Item`
  content.

---

### v11.1.1

_13 January 2025 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.1.1)_

#### Features

- Added the NOW gradient and the grid-column/row start and end system props.

#### Bug fixes

- Added `Popover.$popoverWidth`, corrected content placement and pointer alignment, and replaced
  manual `Accordion` heights with grid animation.

#### Accessibility

- Improved `Breadcrumbs` focus, button rendering, current-item behavior, and scrolling.

---

### v11.1.0

_11 December 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.1.0)_

#### Features

- Added the non-interactive `Tag` status/category component and the flexible `InfoCard` information
  pattern.

#### Updates

- Replaced Framer in `Toast` and `Notification` with CSS animations while preserving timing and
  easing.

#### Bug fixes

- Widened `Swatch.$gradient` to accept any gradient string and stopped `InputField` rendering an
  empty, spaced message node.

---

### v11.0.1

_14 November 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.0.1)_

#### Bug fixes

- Fixed `Modal.stopPropagation` so events propagate as expected and corrected initial
  `ComparisonTable` rendering when row headers are hidden with two columns.
- Clamped `Image.$focalPoint` values to the supported 0–24 range.

---

### v11.0.0

_5 November 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4011.0.0)_

#### Features

- Added `Container` padding props and moved Rail theme/appearance configuration to `Rail`.

#### Updates

- Reworked `Price` and `HeadlinePrice` alignment and offer colours; added gradient themes to
  `HeadlinePrice` and the light appearance to primary `Button`.
- Removed generated Tabs IDs and fixed responsive fill styling.

#### Bug fixes

- Fixed focus clipping and initial layout shift in `Accordion` and `Carousel`, event leakage from
  `Modal`, duplicate `RadioCard` clicks, Rail heading alignment, and missing `ResizeObserver` in
  Jest environments.

## v10

<a id="core-v9-to-v10"></a>

### Breaking changes: v9 to v10

_Codemod preset: `v9-to-v10/all-breaking-changes`._

- Rebuilt `Tabs` with new styles and behavior. Rename existing `Tabs` imports, components, and
  subcomponents to `LegacyTabs` to preserve the old implementation while adopting the new API.
- `Table.isComparisonTable` → `Table.$comparisonTable` and `Table.$trim` → `Table.$theme`. The
  `$columnFills` and `$comparisonTable` props cannot be combined and now produce a usage warning.
- Focus mixin `$appearance="primary"` → `$appearance="default"`.

### v10.0.0

_19 September 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%4010.0.0)_

#### Features

- Introduced the rebuilt `Tabs` component and retained the previous implementation as `LegacyTabs`.
- Added `$columnFills`, table-wide `$hideRowHeaders`, per-row `$hideHeader`, and `$keyLines` to
  `ComparisonTable`.

#### Updates

- Made `$columnFills` and `$comparisonTable` mutually exclusive, renamed legacy comparison-table
  props, and fixed its `ResizeObserver` behavior.

## v9

<a id="core-v8-to-v9"></a>

### Breaking changes: v8 to v9

_Codemod preset: `v8-to-v9/all-breaking-changes`._

- Normalised component props around three concepts: `$appearance` for default/light presentation,
  `$theme` for brand treatment, and `$variant` for structural hierarchy:
  - `Breadcrumbs.$appearance="primary"` → `"default"`.
  - `Button.$appearance` values move to `$variant`; `secondary-light` and `tertiary-light` split
    into the matching `$variant` plus `$appearance="light"`.
  - `Card.$appearance` → `Card.$theme`.
  - `Carousel.Scrim.$background` and `Scrim.$background` → `$backgroundColor`.
  - `Highlight.$appearance` → `Highlight.$theme`, and `$location` → `$placement`.
  - `IconButton.$appearance` moves to `$variant`; light values split into `$variant` and
    `$appearance="light"`.
  - `Notification.$appearance` → `Notification.$variant`; `Popover.$location` →
    `Popover.$placement`.
  - `Tabs.Tab.$activeGradient` → `Tabs.Tab.$theme`.
  - `IconList.$color="white"` → `$appearance="light"`; other colours →
    `$appearance="default"`.

### v9.2.0

_18 September 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%409.2.0)_

#### Updates

- Improved `applyModifierProps` performance and added an alternate pagination position to `Rail`.

#### Accessibility

- Aligned the `Modal` close-button position with Figma and added `role="region"` to
  `Accordion.Content`.

---

### v9.1.1

_3 September 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%409.1.1)_

#### Bug fixes

- Stopped `Carousel` from blocking unrelated touch gestures on the page.

#### Accessibility

- Ensured `Accordion` has the correct `aria-expanded` value on first render.

---

### v9.1.0

_21 August 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%409.1.0)_

#### Features

- Added `InputWrapper` support to `Field.Control`.

#### Bug fixes

- Normalised non-numeric `Rail.$itemWidth` values before scroll calculations.
- Restored responsive `$appearance` and `$variant` support on `Button`.

#### Accessibility

- Removed unexpected whitespace in vertically stacked `Price` and improved accessible text in
  `Price` and `HeadlinePrice`.

---

### v9.0.0

_25 July 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%409.0.0)_

#### Features

- Added `data-skyui-core` component/version metadata for usage analysis, analytics, and future error
  reporting.
- Added Sky Cinema DE and Sky Sports DE colours plus Bundesliga accessible, Cinema, and Kids
  accessible gradients.

#### Updates

- Standardised `$appearance`, `$theme`, and `$variant` semantics across eleven components and
  published the v8-to-v9 codemod.
- Converted `ProgressTracker`, `CheckboxButton`, `RadioButton`, `Scrim`, and `Carousel` to
  TypeScript.

#### Bug fixes

- Fixed dynamic `Accordion` content clipping, suffixless `Price` whitespace, and small `Swatch`
  rendering on iOS.

## v8

<a id="core-v7-to-v8"></a>

### Breaking changes: v7 to v8

_Codemod preset: None — manual migration required._

- **Manual update required:** `Accordion` now encapsulates expanded/collapsed behavior for animation
  and SEO. Pass the controlled `$isOpen` boolean to `Accordion` and keep `Accordion.Content` mounted
  instead of conditionally rendering it.

### v8.3.1

_25 July 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%408.3.1)_

#### Bug fixes

- Fixed open `Accordion` content being clipped after browser resizing or dynamic content changes.
- Removed extra `Price` whitespace when `$inline` is used without a suffix.
- Fixed distorted small `Swatch` controls caused by default iOS button padding.

---

### v8.3.0

_11 July 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%408.3.0)_

#### Features

- Added the flexible `Rail` component for horizontally presenting related visual content, with
  usage distinct from `Carousel`.

---

### v8.2.0

_20 June 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%408.2.0)_

#### Features

- Added the `ProductCard` consumable pattern.
- Added `Accordion.onOpen` and `onClose` callbacks and exported component prop types.

#### Updates

- Updated `markdown-to-jsx` to 7.4.7 for better HTML-element performance.

#### Bug fixes

- Corrected default state in `ControlField` and `Checkbox` and fixed `Accordion` types.

---

### v8.1.0

_17 June 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%408.1.0)_

#### Updates

- Converted `Blockquote`, `HeadlinePrice`, `Modal`, `Price`, `Tabs`, and `useResponsiveProps` to
  TypeScript. The public behavior was intended to remain stable, but stricter declarations can
  expose invalid consumer props during builds.

---

### v8.0.0

_29 May 2024 · [GitHub release notes](https://github.com/sky-uk/sky-ui/releases/tag/%40sky-uk%2Fui-core%408.0.0)_

#### Features

- Added the first consumable UI patterns: `Feature`, `FeatureList`, and `Signpost`.

#### Updates

- Rebuilt `Accordion` around the `$isOpen` prop so content remains mounted for transitions and SEO.
- Converted `Accordion`, `Breadcrumbs`, form controls, overlays, feedback components, media
  components, and common hooks to TypeScript.

#### Bug fixes

- Updated `LoadingSpinner` stroke width and fixed responsive values for `Container.$size`.
