Skip to content

Screen Sharing Quick Reference

github-actions[bot] edited this page Feb 23, 2026 · 1 revision

Screen Sharing Quick Reference

πŸš€ Quick Start

import { useScreenShare } from '@/hooks/use-screen-share'

const { isScreenSharing, startScreenShare, stopScreenShare } = useScreenShare({
  userId: 'user-id',
  userName: 'User Name',
})

// Start
await startScreenShare({ quality: '1080p' })

// Stop
stopScreenShare()

πŸ“¦ Components

Component Purpose Path
ScreenSharePanel Full screen share UI @/components/call/screen-share-panel
AnnotationToolbar Drawing tools @/components/call/annotation-toolbar
CallModal Integrated call UI @/components/call/call-modal

🎣 Hooks

Hook Purpose
useScreenShare Screen sharing lifecycle
useScreenRecording Recording management

πŸ› οΈ Core Classes

Class Purpose
ScreenCaptureManager Capture screen/window/tab
ScreenAnnotator Draw annotations
CursorHighlighter Track cursors
ScreenRecorder Record screen shares

🎨 Annotation Tools

  • Pen - Freehand drawing
  • Arrow - Point to areas
  • Line - Straight lines
  • Rectangle - Draw boxes
  • Circle - Draw circles
  • Text - Add labels
  • Eraser - Remove annotations

πŸ“Š Quality Presets

Quality Resolution FPS Bitrate
720p 1280x720 30 1.5 Mbps
1080p 1920x1080 30 2.5 Mbps
4K 3840x2160 60 8 Mbps

🎬 Recording Options

await startRecording(stream, {
  format: 'webm', // or 'mp4'
  quality: 'high', // 'low', 'medium', 'high'
  includeWebcam: true, // Add webcam overlay
  webcamSize: 'small', // 'small', 'medium', 'large'
  webcamPosition: 'bottom-right', // 4 corners
})

🌐 Browser Support

Browser Support System Audio
Chrome 72+ βœ… Full βœ… Yes
Edge 79+ βœ… Full βœ… Yes
Firefox 66+ βœ… Full ❌ No
Safari 13+ ⚠️ Partial ❌ No

⚑ Performance Tips

// Adaptive quality based on network
const quality = getOptimalQuality(networkSpeed)

// Lower frame rate for better performance
await startScreenShare({ frameRate: 15 })

// Update quality dynamically
await updateQuality(shareId, '720p')

πŸ”’ Security

// Always check permissions
if (!ScreenCaptureManager.isSupported()) {
  // Show error
}

// Handle permission denial
try {
  await startScreenShare()
} catch (error) {
  if (error.name === 'NotAllowedError') {
    // User denied
  }
}

πŸ› Common Errors

Error Cause Solution
NotAllowedError Permission denied Request permission again
NotFoundError No screen selected User must select a screen
NotSupportedError Browser doesn't support Use Chrome/Edge/Firefox

πŸ“‹ Event Handlers

const captureManager = createScreenCaptureManager({
  onStreamStarted: (stream) => {
    // Stream started
  },
  onStreamEnded: (streamId) => {
    // Stream ended
  },
  onError: (error) => {
    // Handle error
  },
  onTrackEnded: (kind) => {
    // Track ended (video/audio)
  },
})

🎯 Usage Patterns

Start with System Audio

await startScreenShare({
  quality: '1080p',
  captureSystemAudio: true,
  captureCursor: true,
})

Record with Webcam

await startRecording(screenStream, {
  includeWebcam: true,
  webcamPosition: 'bottom-right',
})

Add Annotations

annotator.setTool('pen')
annotator.setColor('#FF0000')
annotator.setStrokeWidth(4)

Track Cursors

highlighter.updateCursor({
  x: 100,
  y: 200,
  userId: 'user-id',
  userName: 'User Name',
  timestamp: Date.now(),
})

πŸ“ž Integration with Calls

<CallModal
  isScreenSharing={isScreenSharing}
  onToggleScreenShare={() => {
    if (isScreenSharing) {
      stopScreenShare()
    } else {
      startScreenShare()
    }
  }}
  currentUserId={user.id}
  currentUserName={user.name}
  {...otherProps}
/>

πŸ§ͺ Testing

# Check TypeScript
npx tsc --noEmit

# Run tests
pnpm test src/lib/webrtc

# Manual test
pnpm dev
# Navigate to /call-test

πŸ“š Resources

πŸ†˜ Support


🎯 Getting Started


✨ Features

Core Features

Communication

Security & Privacy

(See πŸ” Security section below for 2FA, PIN Lock, and security audits.)

Interactive

(Search lives in πŸ“š Reference below.)

Extensibility


πŸ“– Guides

User Guides

Developer Guides

Enterprise

Backend

Deployment


βš™οΈ Configuration


πŸ“‘ API

API Documentation


πŸš€ Deployment


πŸ“š Reference

Architecture

Quick Reference


πŸ” Security


πŸ†˜ Help


ℹ️ About


πŸ”— Links


v1.0.0 β€’ 2026

Clone this wiki locally