MediaSFU Flutter SDK
mediasfu_sdk is the official Flutter WebRTC SDK for building MediaSFU-powered video conferencing, webinar, broadcast, live streaming, chat, whiteboard, recording, translation, and AI-assisted meeting experiences across Android, iOS, Web, macOS, Windows, and Linux.
Why Teams Choose MediaSFU
- Start with a prebuilt room UI, then move to headless or deeply customized layouts when your product matures.
- Use MediaSFU Cloud for managed infrastructure or
localLinkfor self-hosted MediaSFU Open and proxy-backed deployments. - Ship one SDK for voice, video, chat, screen sharing, whiteboard, breakout rooms, recording, real-time translation, and AI-adjacent meeting workflows.
- Lean on public docs, generated API docs, sandbox tools, and the MediaSFU community forum when integration questions come up.
Search-Friendly Use Cases
Developers usually arrive here looking for one or more of these real use cases:
- Flutter video conferencing SDK
- Flutter WebRTC SDK
- Flutter webinar SDK
- Flutter broadcast or live streaming SDK
- Flutter chat and meeting room SDK
- Flutter whiteboard and collaboration SDK
- Flutter real-time translation SDK
- Flutter headless video room SDK
- Flutter AI meeting or AI notes integration surface
The package is designed for three integration styles:
| Integration style | Use this when | Main APIs |
|---|---|---|
| Prebuilt UI | You want a complete room UI quickly | MediasfuGeneric, MediasfuConference, MediasfuWebinar, MediasfuBroadcast, MediasfuChat, ModernMediasfuGeneric |
| Headless runtime | You want MediaSFU connection/media logic but your own UI | returnUI: false, updateSourceParameters, MediasfuParameters |
| Custom UI with SDK components | You want to replace selected cards, modals, or layouts | custom builders, MediasfuUICustomOverrides, exported components |
For the full long-form guide, see README_DETAILED.md. For native permissions and platform setup, see PLATFORM_SETUP.md.
Table Of Contents
- Install
- Why Teams Choose MediaSFU
- Search-Friendly Use Cases
- Backend Model
- Quick Start: Prebuilt Room
- Try The UI Without A Live Room
- Choose A Room Widget
- Headless Mode
- Create And Join Rooms Programmatically
- Self-Hosted MediaSFU Open
- Platform Setup
- Common Options
- Customization
- Feature Map
- Troubleshooting
- Docs, Support, And Search Map
- LLM And Code Search Hints
Install
flutter pub add mediasfu_sdk
Minimum package requirements:
| Requirement | Version |
|---|---|
| Dart | >=3.3.3 <4.0.0 |
| Flutter | >=1.17.0 |
Use the package barrel import in application code:
import 'package:mediasfu_sdk/mediasfu_sdk.dart';
Optional features may need extra dependencies in your app:
# Android / iOS virtual backgrounds
google_mlkit_selfie_segmentation: ^0.10.0
# Web whiteboard and capture helpers
web: ^1.1.1
dart_webrtc: ^1.4.6
Backend Model
MediaSFU is not a standalone offline video widget. The Flutter package needs a MediaSFU-compatible backend for room creation, signaling, media routing, and runtime coordination.
| Backend | Best for | What the Flutter app passes |
|---|---|---|
| MediaSFU Cloud | Managed production rooms with minimal infrastructure | Credentials(apiUserName, apiKey) |
| MediaSFU Open / self-hosted | On-premise, private, or custom backend deployments | localLink, and optional local auth fields such as localAppKey, localApiUserName, localApiKey, localSubUserName |
| Your backend proxy | Production apps that should not expose privileged API keys | App-specific token/room data returned by your backend, then passed into SDK options |
The built-in helper endpoints are:
| Helper | MediaSFU Cloud endpoint | Self-hosted endpoint when localLink is not a MediaSFU domain |
|---|---|---|
createRoomOnMediaSFU |
https://mediasfu.com/v1/rooms |
${localLink}/createRoom |
joinRoomOnMediaSFU |
https://mediasfu.com/v1/rooms/ |
${localLink}/joinRoom |
Security note: avoid embedding privileged production credentials in public clients unless that is an intentional part of your architecture. A backend proxy is usually safer for production mobile and web apps.
Quick Start: Prebuilt Room
This is the fastest working path for MediaSFU Cloud.
import 'package:flutter/material.dart';
import 'package:mediasfu_sdk/mediasfu_sdk.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: MediasfuGeneric(
options: MediasfuGenericOptions(
credentials: Credentials(
apiUserName: 'your-api-username',
apiKey: 'your-64-character-api-key',
),
),
),
);
}
}
Run it:
flutter run
The default MediasfuGeneric flow shows the pre-join page, lets the user create or join a room, then renders the meeting experience with media controls, chat, participants, recording controls, polls, whiteboard, and related modals.
Try The UI Without A Live Room
Use local UI mode when you want to test layouts, demos, screenshots, or custom components without connecting to a live room.
MediasfuGeneric(
options: MediasfuGenericOptions(
useLocalUIMode: true,
useSeed: true,
seedData: SeedData(
member: 'Demo User',
eventType: EventType.conference,
),
),
)
This is useful for frontend work, visual QA, and rapid prototyping. It does not replace a real backend validation pass before release.
Choose A Room Widget
Start with MediasfuGeneric or ModernMediasfuGeneric when you are still shaping the product. Move to the event-specific widgets when the room type is fixed.
| Widget | Use case |
|---|---|
MediasfuGeneric |
General room experience that can support multiple event types |
ModernMediasfuGeneric |
Modern UI path with extra translation, fixed-link, and navigation options |
MediasfuConference |
Meeting and team collaboration rooms |
MediasfuWebinar |
Host, panelist, and attendee workflows |
MediasfuBroadcast |
Broadcast and one-to-many streaming experiences |
MediasfuChat |
Chat-first rooms with optional media workflows |
Example:
MediasfuConference(
options: MediasfuConferenceOptions(
credentials: Credentials(
apiUserName: 'your-api-username',
apiKey: 'your-64-character-api-key',
),
),
)
Modern UI example:
ModernMediasfuGeneric(
options: ModernMediasfuGenericOptions(
credentials: Credentials(
apiUserName: 'your-api-username',
apiKey: 'your-64-character-api-key',
),
initialMeetingId: 'optional-room-id',
onBack: () {
// Route back with your app router.
},
),
)
Headless Mode
Set returnUI: false when your app should own the visual interface while MediaSFU owns connection setup, room state, media state, and helper methods.
import 'package:flutter/material.dart';
import 'package:mediasfu_sdk/mediasfu_sdk.dart';
class HeadlessMeeting extends StatefulWidget {
const HeadlessMeeting({super.key});
@override
State<HeadlessMeeting> createState() => _HeadlessMeetingState();
}
class _HeadlessMeetingState extends State<HeadlessMeeting> {
MediasfuParameters? parameters;
@override
Widget build(BuildContext context) {
return Stack(
children: [
MediasfuGeneric(
options: MediasfuGenericOptions(
credentials: Credentials(
apiUserName: 'your-api-username',
apiKey: 'your-64-character-api-key',
),
returnUI: false,
updateSourceParameters: (nextParameters) {
setState(() => parameters = nextParameters);
},
),
),
if (parameters == null)
const Center(child: CircularProgressIndicator())
else
MyMeetingSurface(parameters: parameters!),
],
);
}
}
class MyMeetingSurface extends StatelessWidget {
final MediasfuParameters parameters;
const MyMeetingSurface({super.key, required this.parameters});
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Room: ${parameters.roomName}'),
Text('Participants: ${parameters.participants.length}'),
ElevatedButton(
onPressed: () => parameters.updateIsMessagesModalVisible(true),
child: const Text('Open chat'),
),
],
);
}
}
For headless mode you usually provide one of these pre-join payloads:
MediasfuGeneric(
options: MediasfuGenericOptions(
returnUI: false,
credentials: credentials,
noUIPreJoinOptionsCreate: CreateMediaSFURoomOptions(
action: 'create',
duration: 60,
capacity: 25,
userName: 'Host User',
eventType: EventType.conference,
),
updateSourceParameters: (parameters) {
// Store parameters in app state.
},
),
)
or:
MediasfuGeneric(
options: MediasfuGenericOptions(
returnUI: false,
credentials: credentials,
noUIPreJoinOptionsJoin: JoinMediaSFURoomOptions(
action: 'join',
meetingID: 'room-id',
userName: 'Guest User',
),
updateSourceParameters: (parameters) {
// Store parameters in app state.
},
),
)
Create And Join Rooms Programmatically
You can call the room helpers directly when your app has its own lobby, schedule screen, or invite flow.
final createResult = await createRoomOnMediaSFU(
CreateMediaSFUOptions(
apiUserName: 'your-api-username',
apiKey: 'your-64-character-api-key',
payload: CreateMediaSFURoomOptions(
action: 'create',
duration: 60,
capacity: 25,
userName: 'Host User',
eventType: EventType.conference,
supportTranslation: true,
),
),
);
if (createResult.success) {
final room = createResult.data as CreateJoinRoomResponse;
debugPrint('Created ${room.roomName}: ${room.link}');
} else {
final error = createResult.data as CreateJoinRoomError;
debugPrint('Room creation failed: ${error.error}');
}
Join an existing room:
final joinResult = await joinRoomOnMediaSFU(
JoinMediaSFUOptions(
apiUserName: 'your-api-username',
apiKey: 'your-64-character-api-key',
payload: JoinMediaSFURoomOptions(
action: 'join',
meetingID: 'room-id',
userName: 'Guest User',
),
),
);
if (joinResult.success) {
final room = joinResult.data as CreateJoinRoomResponse;
debugPrint('Joined ${room.roomName}');
}
Self-Hosted MediaSFU Open
Use localLink for self-hosted or proxy-backed deployments.
MediasfuGeneric(
options: MediasfuGenericOptions(
localLink: 'https://media.example.com',
connectMediaSFU: true,
credentials: Credentials(
apiUserName: 'proxy-or-local-user',
apiKey: 'your-64-character-api-key',
),
),
)
Modern self-hosted example with local socket handshake fields:
ModernMediasfuGeneric(
options: ModernMediasfuGenericOptions(
localLink: 'https://media.example.com',
connectMediaSFU: true,
credentials: credentials,
localAppKey: 'your-app-key',
localApiUserName: 'local-api-user',
localApiKey: 'local-api-key',
localSubUserName: 'team-member',
useFixedLink: true,
initialMeetingId: 'room-id',
),
)
When localLink is set to a non-MediaSFU domain, createRoomOnMediaSFU uses ${localLink}/createRoom and joinRoomOnMediaSFU uses ${localLink}/joinRoom.
Platform Setup
Most media failures are caused by missing host-app permissions. Configure each target platform before testing production flows.
| Platform | Required setup |
|---|---|
| Android | Camera, microphone, internet permissions; min SDK and ProGuard rules as needed |
| iOS | NSCameraUsageDescription, NSMicrophoneUsageDescription, local network permissions if applicable |
| macOS | Camera, microphone, and network entitlements |
| Web | HTTPS in production, browser media permissions, CORS for self-hosted servers |
| Windows | Flutter desktop setup and camera/microphone device permissions |
| Linux | Flutter desktop setup plus system media dependencies |
See PLATFORM_SETUP.md for copy-ready native configuration snippets.
Common Options
These options appear across the prebuilt room widgets.
| Option | Type | Purpose |
|---|---|---|
credentials |
Credentials? |
MediaSFU Cloud or backend auth values |
localLink |
String? |
Self-hosted/proxy server base URL |
connectMediaSFU |
bool? |
Whether the SDK should connect to MediaSFU services |
returnUI |
bool? |
true renders the prebuilt UI; false runs headless |
updateSourceParameters |
Function(MediasfuParameters?)? |
Receives the runtime helper/state bundle |
noUIPreJoinOptionsCreate |
CreateMediaSFURoomOptions? |
Create-room payload for headless mode |
noUIPreJoinOptionsJoin |
JoinMediaSFURoomOptions? |
Join-room payload for headless mode |
createMediaSFURoom |
CreateRoomOnMediaSFUType? |
Replace the create-room helper |
joinMediaSFURoom |
JoinRoomOnMediaSFUType? |
Replace the join-room helper |
useLocalUIMode |
bool? |
Run the UI without live room connections |
seedData / useSeed |
SeedData? / bool? |
Seed demo participant and room data |
customVideoCard |
VideoCardType? |
Replace video cards |
customAudioCard |
AudioCardType? |
Replace audio cards |
customMiniCard |
MiniCardType? |
Replace mini participant cards |
customComponent |
CustomComponentType? |
Replace the whole room workspace |
containerStyle |
ContainerStyleOptions? |
Style the room container |
uiOverrides |
MediasfuUICustomOverrides? |
Wrap or replace specific SDK widgets/functions |
Modern-only extras include useFixedLink, localAppKey, localApiUserName, localApiKey, localSubUserName, initialMeetingId, canUsePersonalTranslation, personalTranslationUsername, userVoiceClones, onBack, and optimizeVideoRecord.
Customization
Replace common media cards
MediasfuGeneric(
options: MediasfuGenericOptions(
credentials: credentials,
customVideoCard: ({
required participant,
required stream,
required width,
required height,
imageSize,
doMirror,
showControls,
showInfo,
name,
backgroundColor,
onVideoPress,
parameters,
}) {
return SizedBox(
width: width,
height: height,
child: DecoratedBox(
decoration: BoxDecoration(
color: backgroundColor ?? Colors.black,
border: Border.all(color: Colors.blueAccent, width: 2),
borderRadius: BorderRadius.circular(12),
),
child: Center(
child: Text(
name ?? participant.name,
style: const TextStyle(color: Colors.white),
),
),
),
);
},
),
)
The exact builder signatures are exported by the package types. Use your editor autocomplete from package:mediasfu_sdk/mediasfu_sdk.dart for the required parameters.
Wrap one SDK component with MediasfuUICustomOverrides
final overrides = MediasfuUICustomOverrides(
participantsModal: ComponentOverride<ParticipantsModalOptions>(
render: (context, options, defaultBuilder) {
return Theme(
data: Theme.of(context).copyWith(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.indigo),
),
child: defaultBuilder(context, options),
);
},
),
);
MediasfuGeneric(
options: MediasfuGenericOptions(
credentials: credentials,
uiOverrides: overrides,
),
)
Frequently overridden slots include mainContainer, mainGrid, controlButtons, participantsModal, messagesModal, recordingModal, pollModal, breakoutRoomsModal, configureWhiteboardModal, backgroundModal, preJoinPage, and welcomePage.
Replace the full workspace
MediasfuGeneric(
options: MediasfuGenericOptions(
credentials: credentials,
customComponent: ({required parameters}) {
return MyFullMeetingWorkspace(parameters: parameters);
},
),
)
Use this when you want MediaSFU to provide the runtime state and methods while your app owns the complete room UI.
Custom icons and Font Awesome v11
The package uses font_awesome_flutter v11. When rendering Font Awesome icons directly, use FaIcon:
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
const FaIcon(FontAwesomeIcons.xmark)
For SDK share button options, both Flutter IconData values and Font Awesome FaIconData values are supported:
ShareButtonOptions(
icon: FontAwesomeIcons.whatsapp,
action: () {},
)
Feature Map
| Feature area | SDK surface |
|---|---|
| Audio/video rooms | MediasfuGeneric, MediasfuConference, MediasfuParameters, media card builders |
| Webinars and panelists | MediasfuWebinar, panelist methods, modern panelist modal |
| Broadcasts | MediasfuBroadcast |
| Chat rooms | MediasfuChat, messages modal, message methods |
| Screen sharing | screen-share methods, screen producer helpers, screenboard components |
| Recording | recording modal and recording methods |
| Polls | poll modal and poll methods |
| Breakout rooms | breakout room modal and launch methods |
| Whiteboard | whiteboard, screenboard, configure whiteboard modal, capture helpers |
| Virtual backgrounds | background modal, processor service, platform-specific ML dependency |
| Waiting rooms | waiting modal and waiting methods |
| Co-hosts | co-host modal and co-host methods |
| Permissions | permission methods and modern permissions modal |
| Translation | modern translation settings, translation room config, personal translation options |
| SIP / telephony-ready rooms | CreateMediaSFURoomOptions.supportSIP, directionSIP, preferPCMA |
| AI notes and agents | configure from the MediaSFU dashboard/docs, then use room/runtime features in the SDK |
Troubleshooting
| Symptom | Check |
|---|---|
| Pre-join shows credential errors | apiUserName must not be a placeholder and apiKey must be a valid 64-character key |
| Camera or microphone does not open | Native platform permissions, HTTPS on web, and OS privacy settings |
| Web works locally but not in production | HTTPS, browser permission prompts, CORS for self-hosted APIs, and TURN/STUN reachability |
| Self-hosted create/join fails | Verify localLink, /createRoom, /joinRoom, TLS, CORS, and backend auth headers |
| Headless mode renders no UI | This is expected with returnUI: false; render your own widgets from MediasfuParameters |
| Demo mode connects unexpectedly | Use useLocalUIMode: true with seed data and avoid live credentials for visual-only demos |
Font Awesome compile error with Icon(FontAwesomeIcons.xmark) |
Use FaIcon(FontAwesomeIcons.xmark) with font_awesome_flutter v11 |
| Analyzer reports only info-level lints | The package may still build; clean those lints separately if your CI treats infos as fatal |
Docs, Support, And Search Map
Current MediaSFU documentation and support entry points:
| Need | Link |
|---|---|
| Flutter SDK docs | mediasfu.com/flutter |
| Developer docs portal | mediasfu.com/docs |
| Quick start guide | mediasfu.com/docs/usage/quickstart |
| Headless guide | mediasfu.com/docs/usage/headless |
| Documentation map | mediasfu.com/docs/guide-map |
| Generated API docs | mediasfu.com/docs/api |
| Developer console / API configuration | mediasfu.com/documentation |
| Dashboard user guide | mediasfu.com/user-guide |
| Sandbox | mediasfu.com/sandbox |
| Widget Studio | mediasfu.com/widget-studio |
| AI agents | mediasfu.com/agents |
| AI notes | mediasfu.com/ai-notes-guide |
| Translation | mediasfu.com/translation |
| SIP / telephony | mediasfu.com/telephony |
| Community support | mediasfu.com/forums |
| Contact | mediasfu.com/contact |
| GitHub organization | github.com/MediaSFU |
Community forum categories include General Help, Deployment Issues, Mobile SDK, Web SDK, Integrations, Announcements, and Feature Requests. For Flutter package questions, use the Mobile SDK category and include your platform, Flutter version, package version, backend mode, and the smallest reproducible snippet.
LLM And Code Search Hints
This section intentionally repeats the canonical names that developers and AI coding tools should use when searching or generating integrations.
- Package name:
mediasfu_sdk - Import:
package:mediasfu_sdk/mediasfu_sdk.dart - Main prebuilt Flutter widgets:
MediasfuGeneric,MediasfuConference,MediasfuWebinar,MediasfuBroadcast,MediasfuChat,ModernMediasfuGeneric - Main options classes:
MediasfuGenericOptions,MediasfuConferenceOptions,MediasfuWebinarOptions,MediasfuBroadcastOptions,MediasfuChatOptions,ModernMediasfuGenericOptions - Credentials class:
Credentials(apiUserName, apiKey) - Room helper payloads:
CreateMediaSFURoomOptions,JoinMediaSFURoomOptions - Room helper functions:
createRoomOnMediaSFU,joinRoomOnMediaSFU - Runtime state and methods:
MediasfuParameters - UI override type:
MediasfuUICustomOverrides - Demo mode types:
SeedData,EventType - Backend keywords: MediaSFU Cloud, MediaSFU Open, self-hosted,
localLink,/createRoom,/joinRoom - Feature keywords: Flutter video conferencing, Flutter WebRTC meeting SDK, Flutter webinar SDK, Flutter broadcast SDK, Flutter whiteboard, Flutter breakout rooms, Flutter live translation, Flutter AI meeting notes, Flutter SIP room, Flutter headless video SDK
When asking an AI assistant for help, include the package version, the selected widget, whether you use MediaSFU Cloud or localLink, the target platform, and the exact error text.
Related SDKs
| Platform/framework | Package or docs |
|---|---|
| Flutter | pub.dev/packages/mediasfu_sdk |
| React | mediasfu.com/reactjs |
| Angular | mediasfu.com/angular |
| Vue | mediasfu.com/vue |
| React Native CLI | mediasfu.com/reactnative |
| React Native Expo | mediasfu.com/reactnativeexpo |
| JavaScript | mediasfu.com/javascript |
License
MIT. See LICENSE.
Libraries
- components
- components/background_components/background_components
- Background Components
- components/background_components/background_modal
- components/background_components/background_preview_widget
- components/background_components/background_processor_service
- components/background_components/background_video_display
- components/background_components/compositor
- components/background_components/frame_processor
- components/background_components/mlkit_segmenter_stub
- ML Kit Selfie Segmentation Integration
- components/background_components/native_virtual_background
- components/background_components/processed_video_renderer
- components/background_components/screen_wake_lock
- components/background_components/segmenter/segmenter
- Segmenter - Conditional Export Router
- components/background_components/segmenter/segmenter_interface
- Segmenter Interface - Shared Base for All Platforms
- components/background_components/segmenter/segmenter_mobile
- Mobile/Desktop Segmenter - Uses native implementations for supported platforms
- components/background_components/segmenter/segmenter_stub
- Stub Segmenter - Fallback for Unsupported Platforms
- components/background_components/virtual_background_channel
- components/background_components/virtual_background_processor
- components/background_components/virtual_background_types
- components/background_components/virtual_stream_source
- components/breakout_components/breakout_rooms_modal
- components/co_host_components/co_host_modal
- components/display_components/alert_component
- components/display_components/audio_card
- components/display_components/audio_decibel_check
- components/display_components/audio_grid
- components/display_components/card_video_display
- components/display_components/flexible_grid
- components/display_components/flexible_video
- components/display_components/loading_modal
- components/display_components/main_aspect_component
- components/display_components/main_container_component
- components/display_components/main_grid_component
- components/display_components/main_screen_component
- components/display_components/meeting_progress_timer
- components/display_components/mini_audio
- components/display_components/mini_card
- components/display_components/other_grid_component
- components/display_components/pagination
- components/display_components/participants_counter_badge
- components/display_components/simple_audio_player
- components/display_components/sub_aspect_component
- components/display_components/video_card
- components/display_settings_components/display_settings_modal
- components/event_settings_components/event_settings_modal
- components/exit_components/confirm_exit_modal
- components/media_settings_components/media_settings_modal
- components/mediasfu_components/mediasfu_broadcast
- components/mediasfu_components/mediasfu_chat
- components/mediasfu_components/mediasfu_conference
- components/mediasfu_components/mediasfu_generic
- components/mediasfu_components/mediasfu_webinar
- components/menu_components/meeting_id_component
- components/menu_components/meeting_passcode_component
- components/message_components/message_panel
- components/message_components/messages_modal
- components/misc_components/confirm_here_modal
- components/misc_components/prejoin_page
- components/misc_components/welcome_page
- components/misc_components/welcome_page_qrcode
- components/panelists_components/panelists_components
- components/panelists_components/panelists_modal
- components/participants_components/participant_list
- components/participants_components/participant_list_item
- components/participants_components/participant_list_others
- components/participants_components/participant_list_others_item
- components/participants_components/participants_modal
- components/permissions_components/permissions_components
- components/permissions_components/permissions_modal
- components/polls_components/poll_modal
- components/recording_components/advanced_panel_component
- components/recording_components/recording_modal
- components/recording_components/standard_panel_component
- components/requests_components/render_request_component
- components/requests_components/requests_modal
- components/waiting_components/waiting_modal
- components/whiteboard_components/configure_whiteboard_modal
- components/whiteboard_components/screenboard
- components/whiteboard_components/screenboard_modal
- components/whiteboard_components/whiteboard
- components/whiteboard_components/whiteboard_components
- Whiteboard Components
- components/whiteboard_components/whiteboard_painter
- components/whiteboard_components/whiteboard_shape
- components/whiteboard_components/whiteboard_toolbar
- components_modern/background_components/modern_background_modal
- components_modern/breakout_components/modern_breakout_rooms_modal
- components_modern/co_host_components/modern_co_host_modal
- components_modern/components_modern
- Core theme exports
- components_modern/core/mediasfu_core
- MediaSFU Modern Core
- components_modern/core/theme/mediasfu_animations
- components_modern/core/theme/mediasfu_borders
- components_modern/core/theme/mediasfu_colors
- components_modern/core/theme/mediasfu_spacing
- components_modern/core/theme/mediasfu_theme
- components_modern/core/theme/mediasfu_theme_exports
- MediaSFU Modern Theme System
- components_modern/core/theme/mediasfu_typography
- components_modern/core/theme/modern_style_options
- components_modern/core/widgets/animated_gradient_background
- components_modern/core/widgets/animation_widgets
- components_modern/core/widgets/glassmorphic_container
- components_modern/core/widgets/glow_container
- components_modern/core/widgets/gradient_card
- components_modern/core/widgets/modal_gradient_divider
- components_modern/core/widgets/modal_header
- components_modern/core/widgets/modern_switch
- components_modern/core/widgets/neumorphic_container
- Premium UI widget primitives for the modern MediaSFU UI.
- components_modern/core/widgets/pulse_border
- components_modern/core/widgets/section_card
- components_modern/core/widgets/section_title
- components_modern/core/widgets/shimmer_loading
- components_modern/core/widgets/skeleton_loader
- components_modern/core/widgets/styled_container
- components_modern/display_components/modern_alert_component
- components_modern/display_components/modern_audio_card
- components_modern/display_components/modern_audio_decibel_check
- components_modern/display_components/modern_card_video_display
- components_modern/display_components/modern_flexible_grid
- components_modern/display_components/modern_flexible_video
- components_modern/display_components/modern_loading_modal
- components_modern/display_components/modern_main_container_component
- components_modern/display_components/modern_meeting_progress_timer
- components_modern/display_components/modern_mini_card
- components_modern/display_components/modern_pagination
- components_modern/display_components/modern_video_card
- components_modern/display_settings_components/modern_display_settings_modal
- components_modern/event_settings_components/modern_event_settings_modal
- components_modern/exit_components/modern_confirm_exit_modal
- components_modern/media_settings_components/modern_media_settings_modal
- components_modern/mediasfu_components/modern_mediasfu_generic
- components_modern/menu_components/modern_meeting_id_component
- components_modern/menu_components/modern_meeting_passcode_component
- components_modern/message_components/modern_message_panel
- components_modern/message_components/modern_messages_modal
- components_modern/misc_components/modern_confirm_here_modal
- components_modern/misc_components/modern_prejoin_page
- components_modern/misc_components/modern_welcome_page
- components_modern/panelists_components/modern_panelists_modal
- components_modern/participants_components/modern_participant_list
- components_modern/participants_components/modern_participants_modal
- components_modern/permissions_components/modern_permissions_modal
- components_modern/polls_components/modern_poll_modal
- components_modern/recording_components/modern_advanced_panel_component
- components_modern/recording_components/modern_recording_modal
- components_modern/recording_components/modern_standard_panel_component
- components_modern/requests_components/modern_requests_modal
- components_modern/translation_components/translation_components
- Translation Components Module
- components_modern/translation_components/translation_settings_modal
- components_modern/utils/modern_mini_audio_player
- Modern Mini Audio Player - Glassmorphic audio player widget
- components_modern/waiting_components/modern_waiting_modal
- components_modern/whiteboard_components/modern_configure_whiteboard_modal
- consumers
- consumers/add_videos_grid
- consumers/auto_adjust
- consumers/calculate_rows_and_columns
- consumers/change_vids
- consumers/check_grid
- consumers/check_permission
- consumers/close_and_resize
- consumers/compare_active_names
- consumers/compare_screen_states
- consumers/connect_ips
- consumers/connect_local_ips
- consumers/connect_recv_transport
- consumers/connect_send_transport
- consumers/connect_send_transport_audio
- consumers/connect_send_transport_screen
- consumers/connect_send_transport_video
- consumers/consumer_resume
- consumers/control_media
- consumers/create_send_transport
- consumers/disconnect_send_transport_audio
- consumers/disconnect_send_transport_screen
- consumers/disconnect_send_transport_video
- consumers/disp_streams
- consumers/generate_page_content
- consumers/get_estimate
- consumers/get_piped_producers_alt
- consumers/get_producers_piped
- consumers/get_videos
- consumers/mix_streams
- consumers/on_screen_changes
- consumers/prepopulate_user_media
- consumers/process_consumer_transports
- consumers/process_consumer_transports_audio
- consumers/re_port
- consumers/re_update_inter
- consumers/readjust
- consumers/receive_all_piped_transports
- consumers/receive_room_messages
- consumers/reorder_streams
- consumers/resume_pause_audio_streams
- consumers/resume_pause_streams
- consumers/resume_send_transport_audio
- consumers/signal_new_consumer_transport
- consumers/socket_receive_methods/join_consume_room
- consumers/socket_receive_methods/new_pipe_producer
- consumers/socket_receive_methods/producer_closed
- consumers/start_consuming_translation
- consumers/stream_success_audio
- consumers/stream_success_audio_switch
- consumers/stream_success_screen
- consumers/stream_success_video
- consumers/switch_user_audio
- consumers/switch_user_video
- consumers/switch_user_video_alt
- consumers/translation_consumer_switch
- Translation Consumer Switch Utilities
- consumers/trigger
- consumers/update_mini_cards_grid
- consumers/update_participant_audio_decibels
- main
- main_broadcast
- main_chat
- main_conference
- main_generic
- main_modern
- main_playbook_core
- main_unique
- main_webinar
- mediasfu_sdk
- methods
- methods/breakout_rooms_methods/breakout_room_updated
- methods/breakout_rooms_methods/launch_breakout_rooms
- methods/co_host_methods/launch_co_host
- methods/co_host_methods/modify_co_host_settings
- methods/display_settings_methods/launch_display_settings
- methods/display_settings_methods/modify_display_settings
- methods/exit_methods/confirm_exit
- methods/exit_methods/launch_confirm_exit
- methods/media_settings_methods/launch_media_settings
- methods/message_methods/launch_messages
- methods/message_methods/send_message
- methods/panelists_methods/focus_panelists
- methods/panelists_methods/launch_panelists
- launchPanelists - Toggles the visibility of the panelists modal.
- methods/panelists_methods/panelists_methods
- methods/panelists_methods/update_panelists
- methods/participants_methods/launch_participants
- methods/participants_methods/message_participants
- methods/participants_methods/mute_participants
- methods/participants_methods/remove_participants
- methods/permissions_methods/launch_permissions
- launchPermissions - Toggles the visibility of the permissions modal.
- methods/permissions_methods/permissions_methods
- methods/permissions_methods/update_participant_permission
- methods/permissions_methods/update_permission_config
- methods/polls_methods/handle_create_poll
- methods/polls_methods/handle_end_poll
- methods/polls_methods/handle_vote_poll
- methods/polls_methods/launch_poll
- methods/polls_methods/poll_updated
- methods/recording_methods/check_pause_state
- methods/recording_methods/check_resume_state
- methods/recording_methods/confirm_recording
- methods/recording_methods/launch_recording
- methods/recording_methods/record_pause_timer
- methods/recording_methods/record_resume_timer
- methods/recording_methods/record_start_timer
- methods/recording_methods/record_update_timer
- methods/recording_methods/start_recording
- methods/recording_methods/stop_recording
- methods/recording_methods/update_recording
- methods/requests_methods/launch_requests
- methods/requests_methods/respond_to_requests
- methods/settings_methods/launch_settings
- methods/settings_methods/modify_settings
- methods/stream_methods/click_audio
- methods/stream_methods/click_chat
- methods/stream_methods/click_video
- methods/stream_methods/switch_audio
- methods/stream_methods/switch_audio_output
- methods/stream_methods/switch_video
- methods/stream_methods/switch_video_alt
- methods/utils/check_limits_and_make_request
- methods/utils/create_join_room
- methods/utils/create_response_join_room
- methods/utils/create_room_on_media_sfu
- methods/utils/format_number
- methods/utils/generate_random_messages
- methods/utils/generate_random_participants
- methods/utils/generate_random_polls
- methods/utils/generate_random_request_list
- methods/utils/generate_random_waiting_room_list
- methods/utils/get_media_devices_list
- Retrieves the list of available media devices.
- methods/utils/get_modal_position
- methods/utils/get_overlay_position
- methods/utils/get_participant_media
- Retrieves the media stream of a participant by ID or name.
- methods/utils/initial_values
- methods/utils/join_room_on_media_sfu
- methods/utils/mediasfu_parameters
- methods/utils/meeting_timer/start_meeting_progress_timer
- methods/utils/mini_audio_player/mini_audio_player
- methods/utils/platform_feature_support
- methods/utils/producer/a_params
- methods/utils/producer/h_params
- methods/utils/producer/screen_params
- methods/utils/producer/v_params
- methods/utils/producer/video_capture_constraints
- methods/utils/sleep
- methods/utils/sound_player
- methods/utils/translation_languages
- Central Language Definitions for Translation Pipeline (Frontend)
- methods/utils/validate_alphanumeric
- methods/waiting_methods/launch_waiting
- methods/waiting_methods/respond_to_waiting
- methods/whiteboard_methods/canvas_capture_stub
- Stub implementation for non-web platforms.
- methods/whiteboard_methods/canvas_capture_web
- Web-specific screen annotation capture implementation using JavaScript interop.
- methods/whiteboard_methods/capture_canvas_stream
- methods/whiteboard_methods/launch_configure_whiteboard
- misc
- producer_client/producer_client_emits/create_device_client
- producer_client/producer_client_emits/join_room_client
- producer_client/producer_client_emits/update_room_parameters_client
- producers
- producers/producer_emits/join_con_room
- producers/producer_emits/join_local_room
- producers/producer_emits/join_room
- producers/socket_receive_methods/all_members
- producers/socket_receive_methods/all_members_rest
- producers/socket_receive_methods/all_waiting_room_members
- producers/socket_receive_methods/ban_participant
- producers/socket_receive_methods/control_media_host
- producers/socket_receive_methods/disconnect
- producers/socket_receive_methods/disconnect_user_self
- producers/socket_receive_methods/get_domains
- producers/socket_receive_methods/host_request_response
- producers/socket_receive_methods/meeting_ended
- producers/socket_receive_methods/meeting_still_there
- producers/socket_receive_methods/meeting_time_remaining
- producers/socket_receive_methods/panelist_receive_methods
- Handler for panelist-related socket events.
- producers/socket_receive_methods/participant_requested
- producers/socket_receive_methods/permission_receive_methods
- Handler for permission-related socket events.
- producers/socket_receive_methods/person_joined
- producers/socket_receive_methods/producer_media_closed
- producers/socket_receive_methods/producer_media_paused
- producers/socket_receive_methods/producer_media_resumed
- producers/socket_receive_methods/re_initiate_recording
- producers/socket_receive_methods/receive_message
- producers/socket_receive_methods/recording_notice
- producers/socket_receive_methods/room_record_params
- producers/socket_receive_methods/screen_producer_id
- producers/socket_receive_methods/start_records
- producers/socket_receive_methods/stopped_recording
- producers/socket_receive_methods/time_left_recording
- producers/socket_receive_methods/translation_receive_methods
- Translation Socket Receive Methods
- producers/socket_receive_methods/update_consuming_domains
- producers/socket_receive_methods/update_media_settings
- producers/socket_receive_methods/updated_co_host
- producers/socket_receive_methods/user_waiting
- sockets
- sockets/socket_manager
- types
- types/custom_builders
- types/modal_style_options
- types/types
- types/ui_overrides
- utils/image_utils