Skip to content

feat(useSnackbarManager): imperative snackbar API#9514

Open
EldarMuhamethanov wants to merge 8 commits intomasterfrom
e.muhamethanov/globals-snackbars-api
Open

feat(useSnackbarManager): imperative snackbar API#9514
EldarMuhamethanov wants to merge 8 commits intomasterfrom
e.muhamethanov/globals-snackbars-api

Conversation

@EldarMuhamethanov
Copy link
Copy Markdown
Contributor

@EldarMuhamethanov EldarMuhamethanov commented Feb 26, 2026

  • Unit-тесты
  • e2e-тесты
  • Дизайн-ревью
  • Документация фичи
  • Release notes

Описание

Добавлен императивный API для управления снекбарами: можно вызывать показ/закрытие уведомлений через глобальный объект snackbarManager или свой экземпляр из createSnackbarManager(), без использования хука useSnackbarManager в месте вызова.

Основное:

  • snackbarManager — глобальный экземпляр; вызов snackbarManager.open({ children: '...' }) из любого места (компонент, сервис, колбэк). Контейнер для снекбаров монтируется автоматически при первом вызове open() или openCustom().
  • SnackbarManagerHolder — опциональный React-компонент для кастомной конфигурации (limit, offsetY, zIndex и т.д.). Если он уже смонтирован в дереве, авто-монтирование не создаёт второй контейнер.
  • createSnackbarManager(options?) — создание отдельного экземпляра менеджера (например, для своей зоны интерфейса).

Поведение хука useSnackbarManager сохранено без изменений. Логика действий (open, close, update и т.д.) вынесена в общую функцию createSnackbarActions, которую используют и хук, и императивный менеджер.

Release notes

Улучшения

  • useSnackbarManager: добавлен императивный API для снекбаров — глобальный snackbarManager и createSnackbarManager() позволяют показывать уведомления из любого места без хука. Контейнер монтируется автоматически при первом вызове open().

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 26, 2026

size-limit report 📦

Path Size
JS 427.03 KB (+4.27% 🔺)
JS (gzip) 130.62 KB (+4.2% 🔺)
JS (brotli) 107.58 KB (+3.67% 🔺)
JS import Div (tree shaking) 811 B (0%)
CSS 376.05 KB (0%)
CSS (gzip) 46.26 KB (0%)
CSS (brotli) 36.62 KB (0%)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 26, 2026

e2e tests

Playwright Report

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 26, 2026

📊 Найдены изменения в собранных файлах: Отчет

Commit 7bfa829

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 26, 2026

👀 Docs deployed

📦 Package ✅

yarn add @vkontakte/vkui@https://development.s3.prodcloud.vk.team/pull/9514/7bfa829ccb1a3427c01c268cacfe4d3aa8bc80e2/pkg/@vkontakte/vkui/_pkg.tgz

Commit 7bfa829

@codecov
Copy link
Copy Markdown

codecov Bot commented Feb 26, 2026

Codecov Report

❌ Patch coverage is 85.41667% with 28 lines in your changes missing coverage. Please review.
✅ Project coverage is 95.16%. Comparing base (ef4c213) to head (7bfa829).
⚠️ Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
...ui/src/hooks/useSnackbarManager/snackbarManager.ts 75.51% 24 Missing ⚠️
...ackbarManager/components/SnackbarManagerHolder.tsx 88.46% 3 Missing ⚠️
...c/hooks/useSnackbarManager/helpers/useIsDesktop.ts 85.71% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #9514      +/-   ##
==========================================
- Coverage   95.31%   95.16%   -0.16%     
==========================================
  Files         441      445       +4     
  Lines       12112    12245     +133     
  Branches     4405     4427      +22     
==========================================
+ Hits        11545    11653     +108     
- Misses        567      592      +25     
Flag Coverage Δ
unittests 95.16% <85.41%> (-0.16%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@EldarMuhamethanov EldarMuhamethanov force-pushed the e.muhamethanov/globals-snackbars-api branch from d4cad26 to bd7d71b Compare February 26, 2026 11:17
@EldarMuhamethanov EldarMuhamethanov force-pushed the e.muhamethanov/globals-snackbars-api branch from bd7d71b to 58de6eb Compare February 26, 2026 11:23
@vkcom-publisher vkcom-publisher added the pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности label Mar 6, 2026
@EldarMuhamethanov EldarMuhamethanov marked this pull request as ready for review March 11, 2026 08:04
# Conflicts:
#	packages/vkui/src/hooks/useSnackbarManager/helpers/useSnackbarActionsWithStore.ts
#	packages/vkui/src/hooks/useSnackbarManager/helpers/useSnackbarConfig.ts
@vkcom-publisher vkcom-publisher removed the pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности label Mar 11, 2026
Comment thread packages/vkui/src/hooks/useSnackbarManager/snackbarManager.ts
@EldarMuhamethanov EldarMuhamethanov added this to the v8.1.0 milestone Mar 24, 2026
@inomdzhon inomdzhon moved this to 👀 In Review in VKUI Mar 30, 2026
# Conflicts:
#	packages/vkui/src/index.ts
@vkcom-publisher vkcom-publisher added the pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности label Apr 7, 2026
@EldarMuhamethanov EldarMuhamethanov removed the pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности label Apr 10, 2026
e.mukhametkhanov added 2 commits April 13, 2026 14:18
# Conflicts:
#	website/components/mdx/Playground/scope.ts
@inomdzhon inomdzhon modified the milestones: v8.1.0, v8.2.0 Apr 15, 2026
# Conflicts:
#	website/components/mdx/Playground/scope.ts
#	website/content/components/use-snackbar-manager.mdx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: 👀 In Review

Development

Successfully merging this pull request may close these issues.

4 participants