Skip to content

Conversation

@tassoevan
Copy link
Contributor

@tassoevan tassoevan commented Nov 24, 2025

Proposed changes (including videos or screenshots)

It uses standard ESLint configuration and enables SWC compiler on Storybook for @rocket.chat/ui-voip.

Issue(s)

ARCH-1885

Steps to test or reproduce

Further comments

Summary by CodeRabbit

Release Notes

  • Chores
    • Upgraded development build tooling by replacing Babel compiler with SWC for faster build performance in Storybook.
    • Simplified ESLint and development configuration for streamlined setup.
    • Optimized package dependencies and type imports across the codebase.

✏️ Tip: You can customize this high-level summary in your review settings.

@tassoevan tassoevan added this to the 7.14.0 milestone Nov 24, 2025
@tassoevan tassoevan requested a review from a team November 24, 2025 11:43
@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Nov 24, 2025

Looks like this PR is not ready to merge, because of the following issues:

  • This PR is targeting the wrong base branch. It should target 7.14.0, but it targets 7.13.0

Please fix the issues and try again

If you have any trouble, please check the PR guidelines

@changeset-bot
Copy link

changeset-bot bot commented Nov 24, 2025

⚠️ No Changeset found

Latest commit: 9cc45e8

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 24, 2025

Walkthrough

The PR modernizes the ui-voip package build configuration by removing Babel in favor of SWC, simplifying ESLint rules, converting value imports to type-only imports throughout the codebase for tree-shaking optimization, renaming interfaces to follow naming conventions (IPointCoordinates, IBaseSession), and adding the Faker library to mock-providers' devDependencies.

Changes

Cohort / File(s) Summary
Build configuration cleanup
packages/ui-voip/.babelrc.json, packages/ui-voip/.storybook/main.ts, packages/ui-voip/.eslintrc.json, packages/ui-voip/.eslintignore
Removed Babel configuration; replaced Babel compiler addon with SWC compiler in Storybook; simplified ESLint config to minimal extends list; removed storybook ignore exception
Package dependency updates
packages/mock-providers/package.json, packages/ui-voip/package.json
Added @faker-js/faker to mock-providers devDependencies; removed @babel/core and @faker-js/faker from ui-voip; replaced @storybook/addon-webpack5-compiler-babel with @storybook/addon-webpack5-compiler-swc; renamed eslint scripts to lint/lint:fix
Type-only import refactoring
packages/ui-voip/src/hooks/useDevicePermissionPrompt.spec.tsx, packages/ui-voip/src/v2/MediaCallContext.ts, packages/ui-voip/src/v2/MediaCallLogger.ts, packages/ui-voip/src/v2/MediaCallProvider.tsx, packages/ui-voip/src/v2/MockedMediaCallProvider.tsx, packages/ui-voip/src/v2/components/ActionButton.tsx, packages/ui-voip/src/v2/components/PeerAutocomplete.tsx, packages/ui-voip/src/v2/components/PeerInfo/InternalUser.tsx, packages/ui-voip/src/v2/components/PeerInfo/PeerInfo.tsx, packages/ui-voip/src/v2/components/ToggleButton.tsx, packages/ui-voip/src/v2/components/Widget/Widget.tsx, packages/ui-voip/src/v2/components/Widget/WidgetDraggableContext.ts, packages/ui-voip/src/v2/components/Widget/WidgetHandle.tsx, packages/ui-voip/src/v2/useDesktopNotifications.ts, packages/ui-voip/src/v2/useInfoSlots.ts, packages/ui-voip/src/v2/useKeypad.tsx, packages/ui-voip/src/v2/useMediaCallAction.ts, packages/ui-voip/src/v2/useMediaSession.ts
Converted value imports to type-only imports for React types (ReactNode, ComponentProps, Ref) and domain types (UserStatus, Device, PeerInfo, SessionInfo, etc.) to enable tree-shaking and clarify compile-time-only dependencies
Type renaming for conventions
packages/ui-voip/src/components/VoipPopupDraggable/DraggableCore.ts
Renamed PointCoordinates → IPointCoordinates and updated all related interfaces and methods; renamed IGenericRect to extend IPointCoordinates; updated all method signatures, event payloads, and internal logic consistently
Interface naming standardization
packages/ui-voip/src/v2/useMediaSessionInstance.ts
Renamed BaseSession → IBaseSession, EmptySession → IEmptySession, CallSession → ICallSession; updated SessionInfo union type accordingly

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Build configuration changes: Review Babel-to-SWC migration impact on build pipeline and verify ESLint simplification doesn't lose necessary lint rules
  • Systematic type-only import changes: While repetitive, verify imports are correctly separated and that no runtime dependencies are accidentally removed
  • Interface renaming scope: Confirm DraggableCore.ts and useMediaSessionInstance.ts renames are applied consistently across all usages and dependent code

Possibly related PRs

Suggested labels

stat: ready to merge, stat: QA assured

Suggested reviewers

  • ggazzo

Poem

🐰 No more Babel, SWC takes the crown,
Type imports now trim the bundle down,
Interfaces branded with I so fine,
ESLint rules streamlined by design,
Build config blessed, the code now shines!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning Changes include removal of Babel configuration, ESLint updates, Storybook compiler switch to SWC, and import refactoring (type-only imports) across multiple files. Type-only import refactoring appears out of scope for build configuration review; clarify whether this should be included or moved to a separate PR.
Linked Issues check ❓ Inconclusive The linked issue ARCH-1885 has no detailed requirements provided, making assessment of compliance impossible. Provide specific coding requirements from ARCH-1885 to validate that all implementation objectives have been met.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'chore(ui-voip): Review build configuration' clearly and concisely summarizes the main objective of updating build configuration for the ui-voip package.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/ui-voip-build-configuration

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Contributor

📦 Docker Image Size Report

📈 Changes

Service Current Baseline Change Percent
sum of all images 1.2GiB 1.2GiB +12MiB
rocketchat 358MiB 347MiB +12MiB
omnichannel-transcript-service 132MiB 132MiB +742B
queue-worker-service 132MiB 132MiB +80B
ddp-streamer-service 127MiB 127MiB -754B
account-service 114MiB 114MiB +2.2KiB
stream-hub-service 111MiB 111MiB -670B
authorization-service 111MiB 111MiB +79B
presence-service 111MiB 111MiB -1.3KiB

📊 Historical Trend

---
config:
  theme: "dark"
  xyChart:
    width: 900
    height: 400
---
xychart
  title "Image Size Evolution by Service (Last 30 Days + This PR)"
  x-axis ["11/15 22:28", "11/16 01:28", "11/17 23:50", "11/18 22:53", "11/19 23:02", "11/21 16:49", "11/24 12:30 (PR)"]
  y-axis "Size (GB)" 0 --> 0.5
  line "account-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "authorization-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "ddp-streamer-service" [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12]
  line "omnichannel-transcript-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13]
  line "presence-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "queue-worker-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13]
  line "rocketchat" [0.36, 0.36, 0.35, 0.35, 0.35, 0.34, 0.35]
  line "stream-hub-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
Loading

Statistics (last 6 days):

  • 📊 Average: 1.5GiB
  • ⬇️ Minimum: 1.2GiB
  • ⬆️ Maximum: 1.6GiB
  • 🎯 Current PR: 1.2GiB
ℹ️ About this report

This report compares Docker image sizes from this build against the develop baseline.

  • Tag: pr-37585
  • Baseline: develop
  • Timestamp: 2025-11-24 12:30:46 UTC
  • Historical data points: 6

Updated: Mon, 24 Nov 2025 12:30:46 GMT

@codecov
Copy link

codecov bot commented Nov 24, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.88%. Comparing base (5ef03e2) to head (9cc45e8).
⚠️ Report is 1 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #37585      +/-   ##
===========================================
+ Coverage    68.86%   68.88%   +0.02%     
===========================================
  Files         3360     3360              
  Lines       114339   114327      -12     
  Branches     20560    20558       -2     
===========================================
+ Hits         78741    78758      +17     
+ Misses       33502    33485      -17     
+ Partials      2096     2084      -12     
Flag Coverage Δ
e2e 57.45% <ø> (+0.04%) ⬆️
e2e-api 42.27% <ø> (+0.05%) ⬆️

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

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

@tassoevan tassoevan marked this pull request as ready for review November 24, 2025 13:01
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/ui-voip/src/v2/MediaCallContext.ts (1)

1-1: Type-only UserStatus import is right; consider tightening autocomplete status typing

  • Switching UserStatus to import type matches its usage and has no runtime impact.
  • Minor nit: status: localInfo.status as UserStatus suggests PeerAutocompleteOptions['status'] isn’t typed as UserStatus yet. If feasible, updating PeerAutocompleteOptions so status is already UserStatus | undefined would let you drop this cast and keep the typing flow safer.

Also applies to: 198-203

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 5ef03e2 and 9cc45e8.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (26)
  • packages/mock-providers/package.json (1 hunks)
  • packages/ui-voip/.babelrc.json (0 hunks)
  • packages/ui-voip/.eslintignore (0 hunks)
  • packages/ui-voip/.eslintrc.json (1 hunks)
  • packages/ui-voip/.storybook/main.ts (1 hunks)
  • packages/ui-voip/package.json (2 hunks)
  • packages/ui-voip/src/components/VoipPopupDraggable/DraggableCore.ts (15 hunks)
  • packages/ui-voip/src/hooks/useDevicePermissionPrompt.spec.tsx (1 hunks)
  • packages/ui-voip/src/v2/MediaCallContext.ts (1 hunks)
  • packages/ui-voip/src/v2/MediaCallLogger.ts (1 hunks)
  • packages/ui-voip/src/v2/MediaCallProvider.tsx (1 hunks)
  • packages/ui-voip/src/v2/MockedMediaCallProvider.tsx (1 hunks)
  • packages/ui-voip/src/v2/components/ActionButton.tsx (1 hunks)
  • packages/ui-voip/src/v2/components/PeerAutocomplete.tsx (1 hunks)
  • packages/ui-voip/src/v2/components/PeerInfo/InternalUser.tsx (1 hunks)
  • packages/ui-voip/src/v2/components/PeerInfo/PeerInfo.tsx (1 hunks)
  • packages/ui-voip/src/v2/components/ToggleButton.tsx (1 hunks)
  • packages/ui-voip/src/v2/components/Widget/Widget.tsx (1 hunks)
  • packages/ui-voip/src/v2/components/Widget/WidgetDraggableContext.ts (1 hunks)
  • packages/ui-voip/src/v2/components/Widget/WidgetHandle.tsx (1 hunks)
  • packages/ui-voip/src/v2/useDesktopNotifications.ts (1 hunks)
  • packages/ui-voip/src/v2/useInfoSlots.ts (1 hunks)
  • packages/ui-voip/src/v2/useKeypad.tsx (1 hunks)
  • packages/ui-voip/src/v2/useMediaCallAction.ts (1 hunks)
  • packages/ui-voip/src/v2/useMediaSession.ts (1 hunks)
  • packages/ui-voip/src/v2/useMediaSessionInstance.ts (2 hunks)
💤 Files with no reviewable changes (2)
  • packages/ui-voip/.babelrc.json
  • packages/ui-voip/.eslintignore
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: d-gubert
Repo: RocketChat/Rocket.Chat PR: 37547
File: packages/i18n/src/locales/en.i18n.json:634-634
Timestamp: 2025-11-19T12:32:29.696Z
Learning: Repo: RocketChat/Rocket.Chat
Context: i18n workflow
Learning: In this repository, new translation keys should be added to packages/i18n/src/locales/en.i18n.json only; other locale files are populated via the external translation pipeline and/or fall back to English. Do not request adding the same key to all locale files in future reviews.
📚 Learning: 2025-11-19T18:20:37.116Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37419
File: apps/meteor/server/services/media-call/service.ts:141-141
Timestamp: 2025-11-19T18:20:37.116Z
Learning: In apps/meteor/server/services/media-call/service.ts, the sendHistoryMessage method should use call.caller.id or call.createdBy?.id as the message author, not call.transferredBy?.id. Even for transferred calls, the message should appear in the DM between the two users who are calling each other, not sent by the person who transferred the call.

Applied to files:

  • packages/ui-voip/src/v2/MediaCallContext.ts
📚 Learning: 2025-11-17T15:07:13.273Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37398
File: packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx:357-363
Timestamp: 2025-11-17T15:07:13.273Z
Learning: In packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx, IconElement is a presentational, non-actionable element that does not require wrapping in AppIdProvider, similar to plain_text and mrkdwn renderers. Only actionable elements (those with actions, actionId, or interactive behavior) should be wrapped in AppIdProvider.

Applied to files:

  • packages/ui-voip/src/v2/components/ToggleButton.tsx
  • packages/ui-voip/src/v2/components/ActionButton.tsx
  • packages/ui-voip/src/v2/components/Widget/WidgetHandle.tsx
📚 Learning: 2025-11-16T14:23:18.933Z
Learnt from: d-gubert
Repo: RocketChat/Rocket.Chat PR: 37496
File: packages/apps-engine/src/server/runtime/deno/ProcessMessenger.ts:5-5
Timestamp: 2025-11-16T14:23:18.933Z
Learning: In TypeScript, when a constant is used with `typeof` in a type position (e.g., `type Message = SomeType | typeof SOME_CONSTANT`), it's a type-level operation that doesn't require the runtime value. In such cases, `import type { SOME_CONSTANT }` is correct and appropriate.

Applied to files:

  • packages/ui-voip/src/v2/useInfoSlots.ts
🧬 Code graph analysis (1)
packages/ui-voip/src/v2/useMediaSessionInstance.ts (1)
packages/ui-voip/src/v2/MediaCallContext.ts (2)
  • State (26-26)
  • PeerInfo (24-24)
🔇 Additional comments (26)
packages/ui-voip/src/v2/useInfoSlots.ts (1)

5-5: Type-only import conversion is correct and enables better tree-shaking.

The ConnectionState type is used exclusively in type annotations (lines 33, 44) and has no runtime dependencies, making the type-only import conversion appropriate. This aligns with the PR objective of optimizing tree-shaking by eliminating unnecessary runtime imports.

packages/ui-voip/src/v2/components/Widget/WidgetDraggableContext.ts (1)

1-2: LGTM! Correct separation of type-only and runtime imports.

The refactoring correctly splits the imports: Ref is now a type-only import since it's used exclusively in type positions, while createContext and useContext remain runtime imports. This improves tree-shaking and follows TypeScript best practices, aligning with the PR's build configuration modernization goals.

packages/ui-voip/src/components/VoipPopupDraggable/DraggableCore.ts (3)

1-2: LGTM! Type-only import optimization improves tree-shaking.

The conversion of OffCallbackHandler to a type-only import is correct, as it's used exclusively in type positions throughout the file. Emitter correctly remains a value import since it's used as a base class.


10-18: LGTM! Interface extension reduces duplication.

The renaming to IPointCoordinates aligns with the project-wide naming convention, and having IGenericRect extend IPointCoordinates is logically correct—it eliminates duplicate x/y property declarations while clearly expressing the relationship between these types.


62-524: LGTM! All type signatures consistently updated.

The migration from PointCoordinates to IPointCoordinates has been applied comprehensively across all class properties, method signatures, event payloads, and interface definitions throughout the file. The changes are purely structural with no runtime behavior modifications.

packages/ui-voip/src/v2/useKeypad.tsx (1)

2-3: Type-only ReactNode import + separated useState looks good

The separation of import type { ReactNode } and import { useState } is idiomatic and consistent across the ui-voip package. ReactNode is used only in type positions (line 9), confirming the type-only import is correct. This pattern is already established in 8 other files throughout the package and aligns with TypeScript best practices.

packages/ui-voip/.storybook/main.ts (1)

10-10: LGTM! SWC compiler migration looks good.

The switch from Babel to SWC compiler is a solid modernization choice that should improve build performance while maintaining compatibility with standard React/TypeScript transformations.

packages/ui-voip/package.json (2)

50-50: SWC compiler upgrade aligns with Storybook changes.

The migration from @storybook/addon-webpack5-compiler-babel to @storybook/addon-webpack5-compiler-swc is consistent with the change in .storybook/main.ts and should provide faster build times.


13-14: Script names are already standardized and CI/CD compatible.

The packages/ui-voip package already uses standardized script names (lint and lint:fix) shown in the diff. Verification confirms these don't cause CI/CD issues:

  • CI/CD workflows do not directly reference this package
  • The monorepo uses yarn lint (turbo command) which invokes all package lint scripts by name, compatible with the standardized naming
  • No old script references (yarn eslint or npm run eslint) exist in workflows

No changes required.

packages/mock-providers/package.json (1)

14-14: Consolidation of Faker to mock-providers is properly implemented.

Verification confirms that ui-voip has been successfully migrated: no direct @faker-js/faker imports or references remain in the codebase, and the package no longer lists faker as a dependency. The ui-voip package correctly references @rocket.chat/mock-providers in devDependencies, confirming the architectural consolidation is complete.

packages/ui-voip/.eslintrc.json (1)

2-3: ESLint standardization verification required.

The simplified ESLint configuration adopting standard RocketChat configs promotes consistency, but verification couldn't be completed in the sandbox environment due to missing dependencies. Please run npm run lint in packages/ui-voip on your local machine or in CI to confirm no new violations are introduced by the configuration changes.

packages/ui-voip/src/v2/components/Widget/Widget.tsx (1)

3-4: LGTM! Correct type-only import optimization.

The split between type-only imports (ComponentProps, ReactNode) and value imports (useLayoutEffect) is correct. ComponentProps and ReactNode are only used in type annotations (lines 32-33), while useLayoutEffect is properly kept as a value import for runtime usage.

packages/ui-voip/src/v2/components/Widget/WidgetHandle.tsx (1)

3-3: LGTM! Correct type-only import.

ComponentProps is only used for type annotation (line 22) and is correctly imported as a type-only import.

packages/ui-voip/src/v2/useMediaSession.ts (1)

1-2: LGTM! Correct type-only imports.

All converted types (UserStatus, MediaSignalingSession, CallState, CallRole) are only used in type annotations throughout the file and are correctly imported as type-only imports for optimal tree-shaking.

packages/ui-voip/src/v2/components/ToggleButton.tsx (1)

3-3: LGTM! Correct type-only import.

ComponentProps is only used for type operations (line 12) and is correctly imported as a type-only import.

packages/ui-voip/src/v2/useMediaCallAction.ts (1)

5-6: LGTM! Correct import separation.

The split between type-only import (PeerInfo) and value import (useMediaCallExternalContext) is correct. PeerInfo is only used in type annotations (lines 9, 20), while useMediaCallExternalContext is properly kept as a value import for runtime usage (line 13).

packages/ui-voip/src/v2/components/PeerAutocomplete.tsx (1)

1-1: LGTM! Correct type-only import.

UserStatus is only used for type annotation (line 11) and is correctly imported as a type-only import.

packages/ui-voip/src/v2/MockedMediaCallProvider.tsx (1)

2-3: LGTM! Correct import separation.

The split between type-only import (ReactNode) and value import (useState) is correct. ReactNode is only used in type annotations (line 12), while useState is properly kept as a value import for runtime usage (lines 30, 38, 39, 40).

packages/ui-voip/src/hooks/useDevicePermissionPrompt.spec.tsx (1)

5-5: LGTM! Correct type-only import.

ReactNode is only used for type annotation (line 11) and is correctly imported as a type-only import.

packages/ui-voip/src/v2/components/PeerInfo/InternalUser.tsx (1)

1-4: Type-only imports fit usage here

UserStatus and Slot are only used in type positions, so converting them to import type is correct and keeps the runtime bundle leaner. No behavioral changes introduced.

packages/ui-voip/src/v2/components/ActionButton.tsx (1)

3-4: React type/value import split is correct

Using import type { ComponentProps } and importing forwardRef as a value matches how they’re used and avoids pulling React types into the runtime bundle. Component behavior is unchanged.

packages/ui-voip/src/v2/MediaCallLogger.ts (1)

1-1: Interface moved to import type appropriately

IMediaSignalLogger is only referenced in the implements clause, so converting it to a type-only import is safe and keeps @rocket.chat/media-signaling from being treated as a runtime dependency here.

packages/ui-voip/src/v2/useMediaSessionInstance.ts (1)

11-36: Session type refactor to IBaseSession/IEmptySession/ICallSession looks sound

The new IBaseSession plus IEmptySession/ICallSession extending it keeps the shared shape in one place and preserves the SessionInfo discriminated union over state. This is a clean, type-only change with no runtime impact and should play nicely with existing SessionInfo consumers such as useDesktopNotifications.

packages/ui-voip/src/v2/useDesktopNotifications.ts (1)

5-6: Type-only imports for PeerInfo/SessionInfo are appropriate

These symbols are only used for typing (sessionInfo param and getDisplayInfo), so importing them with import type is correct and keeps this module’s runtime surface minimal.

packages/ui-voip/src/v2/components/PeerInfo/PeerInfo.tsx (1)

1-5: React ComponentProps correctly moved to a type-only import

ComponentProps is only used to derive PeerInfoProps, so moving it to import type is idiomatic and has no effect on how PeerInfo renders or discriminates between InternalUser and PhoneNumber.

packages/ui-voip/src/v2/MediaCallProvider.tsx (1)

2-20: Import restructuring cleanly separates types from runtime values

  • Device and PeerInfo are only used in type positions, so switching them to import type is correct.
  • Splitting ReactNode into a type-only import while keeping useCallback/useEffect as value imports matches their usage.
  • Importing MediaCallContext as the default export aligns with its definition in MediaCallContext.ts.

No behavioral changes in MediaCallProvider are introduced by these import tweaks.

@ggazzo ggazzo added the stat: QA assured Means it has been tested and approved by a company insider label Nov 24, 2025
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Nov 24, 2025
@ggazzo ggazzo merged commit 00318e4 into develop Nov 24, 2025
71 of 75 checks passed
@ggazzo ggazzo deleted the chore/ui-voip-build-configuration branch November 24, 2025 13:09
@dougfabris dougfabris modified the milestones: 7.14.0, 8.0.0 Jan 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stat: QA assured Means it has been tested and approved by a company insider stat: ready to merge PR tested and approved waiting for merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants