Skip to main navigationSkip to main content
Return to Sky UI homepage

Release notes

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.

v13

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.glasssurfaces.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.glasssurfaces.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

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

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

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

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

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

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

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

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.onTabClickTabs.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.lightinteraction.focus for the renamed colour token.

v12.2.1

29 December 2025 · GitHub release notes

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

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

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

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

Bug fixes

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

v12.0.2

10 September 2025 · GitHub release notes

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

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

Breaking changes: v10 to v11

Codemod preset: v10-to-v11/all-breaking-changes.

  • Price.$inlinePrice.$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.$alignmentRail.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

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

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

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

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

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

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

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

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

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

Features

  • Added ProductGallery and SkeletonLoader.

Accessibility

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

v11.3.0

6 March 2025 · GitHub release notes

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

Bug fixes

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

v11.2.0

19 February 2025 · GitHub release notes

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

Bug fixes

  • Fixed an incorrect dependency in Popover's useMemo call.

v11.1.3

29 January 2025 · GitHub release notes

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

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

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

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

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

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.isComparisonTableTable.$comparisonTable and Table.$trimTable.$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

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

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.$appearanceCard.$theme.
    • Carousel.Scrim.$background and Scrim.$background$backgroundColor.
    • Highlight.$appearanceHighlight.$theme, and $location$placement.
    • IconButton.$appearance moves to $variant; light values split into $variant and $appearance="light".
    • Notification.$appearanceNotification.$variant; Popover.$locationPopover.$placement.
    • Tabs.Tab.$activeGradientTabs.Tab.$theme.
    • IconList.$color="white"$appearance="light"; other colours → $appearance="default".

v9.2.0

18 September 2024 · GitHub release notes

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

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

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

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

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

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

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

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

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

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.