Releases: VKCOM/VKUI
v8.0.0
TL;DR
Документация по миграции с v7 на v8
BREAKING CHANGE
Tip
Чтобы упростить переход на новую мажорную версию, можно воспользоваться инструментом по автоматической миграции ваших компонентов
Подробную информацию можно найти на этой странице.
Улучшения
-
Обновлён список поддерживаемых браузеров
- ChromeAndroid >= 63 + ChromeAndroid >= 84 - iOS >= 12 + iOS >= 15 - Chrome >= 63 + Chrome >= 84 - Firefox >= 55 + Firefox >= 115 - Edge >= 79 + Edge >= 109 - Opera >= 50 + Opera >= 90 - Safari >= 12 + Safari >= 15 - Samsung >= 8.2 + Samsung >= 14
-
Поднята целевая версия
ECMAScriptдля компиляции сes2017доes2020(#9306) -
Для поддержки React Compiler изменен внутренний код ряда компонентов (#6919)
-
- Обработчик
onCloseпереименован вonClosed, самonCloseтеперь срабатывает перед началом анимации закрытия (#9285) - Параметр передаваемый в
onClosedпомечен как устаревший и будет удален вv10. Для получения причины закрытия используйтеreason, передаваемый вonClose(#9285) - Экспортируемый тип
ActionSheetOnCloseOptionsустарел и будет удален вv10– испозьуйте типActionSheetOnCloseReason(#9285)
- Обработчик
-
- Переключение между управляемым и неуправляемым состоянием компонента больше не обрабатывается (#9246)
- Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9063, прокидываются в корень компонента (#9186)
-
Banner: В свойстве
imageThemeдобавлено значениеautoдля того, чтобыimageThemeопределялось автоматически, в зависимости от цветовой схемы приложения –autoтеперь используется как значение по умолчанию (#9188) -
Calendar: Изменен тип свойства
onChangeна(value: Date) => void(#9195) -
CalendarRange: Изменен тип свойства
onChangeна(value: DateRangeType) => void. Теперьvalueможет бытьnullпри сбросе выбранного промежутка дат (#9195) -
PopoutWrapper: Свойство
fixedбыло удалено. Вместо него можно использовать свойствоstrategy(#9232)
Примеры правильной миграции:<PopoutWrapper closing={closing} onClick={close} - fixed={false} + strategy="none" > </PopoutWrapper><PopoutWrapper closing={closing} onClick={close} - fixed > </PopoutWrapper> -
ContentBadge: Изменены цвета компонента при
appearance="neutral"в режимахprimaryиsecondary(#9190) -
Snackbar: Переименовано свойство
onCloseвonClosed(#8839)
СвойствоonCloseпереименовано вonClosedдля улучшения семантики. ОбработчикonClosedвызывается после окончания анимации закрытия снекбара, а не в момент начала закрытия.
Пример миграции:- <Snackbar onClose={() => setSnackbar(null)}> + <Snackbar onClosed={() => setSnackbar(null)}> Message </Snackbar>
-
- Изменена структура рендеринга контента. Свойства
afterиafterCaptionтеперь рендерятся справа от основного блока, а новые свойстваmetaиsubmeta- внутри основного блока после основного контента (#9304) - Свойство
afterCaptionпомечено как deprecated и будет удалено вv10. ИспользуйтеsubmetaвместоafterCaption(#9304)
- Изменена структура рендеринга контента. Свойства
-
SegmentedControl: Улучшено выведение типов (#9160)
-
Свойства
baseClassNameиbaseStyleбыли удалены (#9214) -
Удален устаревший HOC
withModalRootContext, вместо него можно использовать хукuseModalRootContext. Также из контекста были удалены методыupdateModalHeight,registerModal(#9278)
Исправления
- RichCell: Минимальная высота
RichCellуменьшена до48px- compact и44px- regular (#9283) - File: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9044, прокидываются в корень компонента (#9181)
- Checkbox: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9043, прокидываются в корень компонента (#9180)
- Radio: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9043, прокидываются в корень компонента (#9180)
- Switch: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9043, прокидываются в корень компонента (#9180)
- WriteBar: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9086, прокидываются в корень компонента (#9184)
- Textarea:
- SplitLayout: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9069, прокидываются в корень компонента (#9182)
- Input: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9084, прокидываются в корень компонента (#9183)
- Search: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9084, прокидываются в корень компонента (#9183)
- CustomSelect:
- NativeSelect: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9045, прокидываются в корень компонента (#9185)
- ChipsInput: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9063, прокидываются в корень компонента (#9186)
- Button:
- Исправлена потеря фокуса при
loading={true}(#9312)
Кнопки со свойствомloadingбольше не получают атрибутdisabled, что позволяет сохранять фокус во время загрузки. Добавлены ARIA-атрибуты (aria-busy,aria-disabled) для правильной работы со скринридерами. - Добавлено свойство
loadingLabelдля указания лейбла приloading={true}(#9312) - Улучшена доступность ссылок с
loadingиdisabledсогласно WAI-ARIA (#9312)
Для ссылок (href) с состояниемloadingилиdisabledтеперь корректно удаляется атрибутhref, добавляетсяrole="link"и устанавливаются необходимые ARIA-атрибуты для правильной работы с ассистивными технологиями.
- Исправлена потеря фокуса при
- HorizontalCell: Ширина для размеров теперь фиксированная (#9316)
- Из-за отказа от happy-css-modules, именование всех CSS классов переведёно в
camelCaseформат (#9355)
Не ломающие изменения
Улучшения
-
AdaptivityProvider: Свойства
sizeXиsizeYтеперь@deprecated, используйтеdensityвместоsizeY,viewWidth={ViewWidth.MOBILE}вместоsizeX="compact"иviewWidth={ViewWidth.SMALL_TABLET}вместоsizeX="regular"(#9334)Пример миграции
- <AdaptivityProvider sizeX="compact"> + <AdaptivityProvider viewWidth={ViewWidth.MOBILE}> - <AdaptivityProvider sizeX="regular"> + <AdaptivityProvider viewWidth={ViewWidth.SMALL_TABLET}> - <AdaptivityProvider sizeY="compact"> + <AdaptivityProvider density="compact"> - <AdaptivityProvider sizeY="regular"> + <AdaptivityProvider density="regular"> - <AdaptivityProvider sizeX="compact" sizeY="compact"> + <AdaptivityProvider viewWidth={ViewWidth.MOBILE} density="compact"> - <AdaptivityProvider sizeX="regular" sizeY="regular"> + <AdaptivityProvider viewWidth={ViewWidth.SMALL_TABLET} density="regular"> ...
v7.11.7
v8.0.0-rc.6
v8.0.0-rc.5
Исправления
- В компонентах PanelHeader и SplitCol, отменены изменения с переводом
position: fixedнаposition: stickyпри включени свойстваfixed(#9582)
Улучшения
- Удалены проверки типа
hasOwnProperty(#9581)
v8.0.0-rc.4
v7.11.6
Исправления
-
ModalPage: Исправлены "прыжки" в ширине контента когда пропадает полоса прокрутки (#9537)
2026-03-02.14.16.53.mov
-
CustomScrollView: Для Android WebView отрисовывалась широкая полоса прокрутки на тач устройствах (#9538)
v8.0.0-rc.3
Исправления
- PanelHeader: Была сломана работоспособность свойства
float(#9516) - PanelHeader: Для статичной панели(fixed = false) был убран z-index, так как он мог перекрывать другую панель (#9521)
- SplitCol: Убран
block-size: 100%у корневой колонки (.host), чтобы высота колонки корректно рассчитывалась флексбоксом, не ломалась из‑за жесткого100%и совпадала с соседними колонками при разном контенте, в том числе в конфигурациях с одной колонкой (#9522)
v8.0.0-rc.2
Исправления
- Button: После завершения загрузки (
loading: true → false) кнопка больше не остаётся в визуальном состоянии hover (#9478) - Calendar:
- DateInput: Корректное отображение и ввод даты/времени при заданном
timezone(и в календаре, и при ручном вводе в поля) (#9474) - Textarea: На safari не было отступа снизу для placeholder (#9481)
- CustomSelectOption: Добавлено свойство
textNoWrapдля предотвращения переноса текста (#9480) - Accordion: По интерактивным элементам можно было навигироваться внутри скрытого аккордиона (#9496)
Улучшения
- Box, Flex, SimpleGrid: Свойство
padding, включая его производные, теперь поддерживает значение'system', которое применяет платформенные отступы из@vkontakte/vkui-tokens– это упростит миграцию с устаревшего компонентаDivнаBox(#9388) - FormLayoutGroup: Добавлено свойство
noPadding(#9415)
Зависимости
- @vkontakte/vkui-tokens обновлен с
4.71.0до4.73.1(#9428) - @vkontakte/vkui-floating-ui обновлен с
0.2.7до0.2.8(#9477)
Документация
v7.11.5
@vkontakte/vkui-codemods@1.1.0-beta.2
Улучшения
- Добавлен кодмод для компонента ActionSheet на изменение свойства
onClose->onClosed