agentleFS
jitsijitsi/jitsi-meet/CLAUDE.md

jitsi-meet

CLAUDE.md30k starsChanged 3 months agoApache-2.0View on GitHub

  • Reads credentials

We split this CLAUDE.md into the rules it gives an agent

25 rules. About 0 are common, 17 are distinctive, and 8 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈17

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 8

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Very specific:

    Test files are located in tests/specs/ and use page objects in tests/pageobjects/.

    line 118
  2. Very specific:

    Create feature directory under react/features/[feature-name]/

    line 125
  3. Distinctive:

    Follow the standard file structure (actionTypes, actions, reducer, etc.)

    line 126
  4. Distinctive:

    Use platform-specific files for web/native differences

    line 129
  5. Distinctive:

    Add feature-specific logger for debugging

    line 130
  6. Very specific:

    Check for existing .any.ts, .web.ts, .native.ts variants

    line 133
  7. Distinctive:

    Follow established action-reducer-middleware patterns

    line 134
  8. Distinctive:

    Use existing base utilities rather than creating new ones

    line 135
  9. Very specific:

    Use moduleSuffixes in TypeScript config to handle platform-specific imports

    line 150
  10. Very specific:

    Check tsconfig.web.json and tsconfig.native.json for platform-specific exclusions

    line 151
  11. Very specific:

    All code must pass npm run lint:ci and npm run tsc:ci with 0 warnings before committing

    line 167
  12. Distinctive:

    Prefer TypeScript for new features, convert existing JavaScript when possible

    line 170
  13. Distinctive:

    Follow Conventional Commits with mandatory scopes:

    line 175
  14. Distinctive:

    When adding new features:

    line 184
  15. Distinctive:

    All new features must be written in TypeScript

    line 197
  16. Very specific:

    Import middleware in react/features/app/middlewares.{any,native,web}.js

    line 199
  17. Distinctive:

    Import reducers in appropriate registry files

    line 200
  18. Distinctive:

    Test with 2 participants (P2P mode)

    line 218
  19. Distinctive:

    Test with 3+ participants (JVB mode)

    line 219
  20. Distinctive:

    Verify audio/video in both modes

    line 220
  21. Distinctive:

    Test mobile apps if changes affect mobile

    line 221
  22. Distinctive:

    Check that TLS certificate chain is complete for mobile app compatibility

    line 222
  23. Distinctive:

    Use the tests from tests/ directory to verify functionality across platforms

    line 229
  24. Very specific:

    Use different backend with WEBPACK_DEV_SERVER_PROXY_TARGET environment variable

    line 233
  25. Distinctive:

    Check firewall settings if local development fails

    line 234

≈ “Common” is an estimate: at least 1 in 5 of the 25,680 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
CLAUDE.md

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Development Commands

Building and Development

  • npm run lint-fix - Automatically fix linting issues
  • npm run tsc:ci - Run TypeScript checks for both web and native platforms
  • npm run tsc:web - TypeScript check for web platform only
  • npm run tsc:native - TypeScript check for native platform only
  • npm run lint:ci - Run ESLint without type checking
  • make dev - Start development server with webpack-dev-server
  • make compile - Build production bundles
  • make clean - Clean build directory
  • make all - Full build (compile + deploy)

Testing

  • npm test - Run full test suite using WebDriverIO
  • npm run test-single -- <spec-file> - Run single test file
  • npm run test-dev - Run tests against development environment
  • npm run test-dev-single -- <spec-file> - Run single test in dev mode

Language Tools

  • npm run lang-sort - Sort language files
  • npm run lint:lang - Validate JSON language files

Platform-Specific TypeScript

TypeScript configuration is split between web and native platforms with separate tsconfig files.

Architecture Overview

Multi-Platform Structure

Jitsi Meet supports both web and React Native platforms with platform-specific file extensions and directories:

  • .web.ts/.web.tsx - Web-specific implementations
  • .native.ts/.native.tsx - React Native-specific implementations
  • .any.ts/.any.tsx - Shared cross-platform code
  • .android.ts/.android.tsx - Android-specific code
  • .ios.ts/.ios.tsx - iOS-specific code
  • web/ directories - Web-specific components and modules
  • native/ directories - React Native-specific components and modules
  • react/features/mobile/ - Native-only features

Core Directories

  • react/features/ - Main application features organized by domain (83+ feature modules)
  • modules/ - Legacy JavaScript modules and APIs
  • css/ - SCSS stylesheets compiled to CSS
  • libs/ - Compiled output directory for JavaScript bundles
  • static/ - Static assets and HTML files
  • tests/ - WebDriverIO end-to-end tests

Feature-Driven Architecture

The application is organized under react/features/ with each feature containing:

  • actionTypes.ts - Redux action type constants
  • actions.ts - Redux action creators (platform-specific variants with .any.ts, .web.ts, .native.ts)
  • reducer.ts - Redux reducer functions
  • middleware.ts - Redux middleware for side effects
  • functions.ts - Utility functions and selectors
  • constants.ts - Feature-specific constants
  • logger.ts - Feature-specific logger instance
  • types.ts - TypeScript type definitions

Key Application Files

  • app.js - Main web application entry point
  • webpack.config.js - Multi-bundle Webpack configuration
  • Makefile - Build system for development and production
  • package.json - Dependencies and scripts with version requirements

Bundle Architecture

The application builds multiple bundles:

  • app.bundle.js / app.bundle.min.js - Main application bundle (entry: ./app.js)
  • external_api.js / external_api.min.js - External API for embedders (entry: ./modules/API/external/index.js)
  • alwaysontop.js / alwaysontop.min.js - Always-on-top window functionality (entry: ./react/features/always-on-top/index.tsx)
  • close3.js / close3.min.js - Close3 functionality (entry: ./static/close3.js)
  • face-landmarks-worker.js / face-landmarks-worker.min.js - Face landmarks detection worker (entry: ./react/features/face-landmarks/faceLandmarksWorker.ts)
  • noise-suppressor-worklet.js / noise-suppressor-worklet.min.js - Audio noise suppression worklet (entry: ./react/features/stream-effects/noise-suppression/NoiseSuppressorWorklet.ts)
  • screenshot-capture-worker.js / screenshot-capture-worker.min.js - Screenshot capture worker (entry: ./react/features/screenshot-capture/worker.ts)

Redux Architecture

Features follow a Redux-based architecture with:

  • Actions, reducers, and middleware in each feature directory
  • Cross-platform state management
  • Modular feature organization with clear boundaries

The codebase uses a registry-based Redux architecture:

  • ReducerRegistry - Features register their reducers independently
  • MiddlewareRegistry - Features register middleware without cross-dependencies
  • IReduxState - Global state is strongly typed with 80+ feature states

Dependencies

  • Uses lib-jitsi-meet as the core WebRTC library
  • React with TypeScript support
  • React Native for mobile applications
  • Webpack for bundling with development server

TypeScript Configuration

  • tsconfig.web.json - Web platform TypeScript config (excludes native files)
  • tsconfig.native.json - React Native TypeScript config (excludes web files)
  • Strict TypeScript settings with ES2024 target
  • Platform-specific module suffixes (.web, .native)

Key Base Features

  • base/app/ - Application lifecycle management
  • base/conference/ - Core conference logic
  • base/tracks/ - Media track management
  • base/participants/ - Participant management
  • base/config/ - Configuration management
  • base/redux/ - Redux infrastructure

Component Patterns

  • Abstract Components - Base classes for cross-platform components
  • Platform-Specific Components - Separate implementations in web/ and native/ directories
  • Hook-based patterns - Modern React patterns for component logic

Testing Framework

  • WebDriverIO for end-to-end testing
  • Test files are located in tests/specs/ and use page objects in tests/pageobjects/.
  • Environment configuration via .env files
  • Support for Chrome, Firefox, and grid testing

Development Guidelines

Adding New Features

  1. Create feature directory under react/features/[feature-name]/
  2. Follow the standard file structure (actionTypes, actions, reducer, etc.)
  3. Register reducers and middleware using the registry pattern
  4. Define TypeScript interfaces for state and props
  5. Use platform-specific files for web/native differences
  6. Add feature-specific logger for debugging

Working with Existing Features

  1. Check for existing .any.ts, .web.ts, .native.ts variants
  2. Follow established action-reducer-middleware patterns
  3. Use existing base utilities rather than creating new ones
  4. Leverage abstract components for cross-platform logic
  5. Maintain type safety across the entire state tree

Testing

The project uses WebDriver (WebdriverIO) for end-to-end testing. Test files are located in tests/specs/ and use page objects in tests/pageobjects/.

Build System

  • Webpack - Main build system for web bundles
  • Makefile - Coordinates build process and asset deployment
  • Metro - React Native bundler (configured in metro.config.js)

Platform-Specific Notes

  • Web builds exclude files matching **/native/*, **/*.native.ts, etc.
  • Native builds exclude files matching **/web/*, **/*.web.ts, etc.
  • Use moduleSuffixes in TypeScript config to handle platform-specific imports
  • Check tsconfig.web.json and tsconfig.native.json for platform-specific exclusions

Environment and Setup Requirements

System Requirements

  • Node.js and npm are required
  • Development server runs at https://localhost:8080/
  • Certificate errors in development are expected (self-signed certificates)

Development Workflow

  • Development server proxies to configurable target (default: https://alpha.jitsi.net)
  • Hot module replacement enabled for development
  • Bundle analysis available via ANALYZE_BUNDLE=true environment variable
  • Circular dependency detection via DETECT_CIRCULAR_DEPS=true

Code Quality Requirements

  • All code must pass npm run lint:ci and npm run tsc:ci with 0 warnings before committing
  • TypeScript strict mode enabled - avoid any type
  • ESLint config extends @jitsi/eslint-config
  • Prefer TypeScript for new features, convert existing JavaScript when possible

Code Style and Standards

Conventional Commits Format

Follow Conventional Commits with mandatory scopes:

feat(feature-name): description
fix(feature-name): description
docs(section): description

Available types: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test

Feature Layout Structure

When adding new features:

react/features/sample/
├── actionTypes.ts
├── actions.ts
├── components/
│   ├── AnotherComponent.tsx
│   └── OneComponent.tsx
├── middleware.ts
└── reducer.ts

TypeScript Requirements

  • All new features must be written in TypeScript
  • Convert JavaScript to TypeScript when modifying existing code
  • Import middleware in react/features/app/middlewares.{any,native,web}.js
  • Import reducers in appropriate registry files
  • Avoid index files

Bundle Size Management

  • Bundle size limits are enforced to prevent bloat
  • For increases, analyze first: npx webpack -p --analyze-bundle
  • Open analyzer: npx webpack-bundle-analyzer build/app-stats.json
  • Justify any dependency additions that increase bundle size

Testing and Quality Assurance

Tests

  • End-to-end tests are defined in the tests/
  • Tests run automatically for project member PRs via Jenkins
  • Tests cover peer-to-peer, invites, iOS, Android, and web platforms
  • Beta testing available at https://beta.meet.jit.si/

Manual Testing Checklist

  • Test with 2 participants (P2P mode)
  • Test with 3+ participants (JVB mode)
  • Verify audio/video in both modes
  • Test mobile apps if changes affect mobile
  • Check that TLS certificate chain is complete for mobile app compatibility

Common Issues and Debugging

P2P vs JVB Problems

  • Works with 2 participants, fails with 3+: JVB/firewall issue, check UDP 10000
  • Works on web, fails on mobile apps: TLS certificate chain issue, need fullchain.pem
  • Use the tests from tests/ directory to verify functionality across platforms

Development Server Issues

  • Certificate warnings are normal for development (self-signed)
  • Use different backend with WEBPACK_DEV_SERVER_PROXY_TARGET environment variable
  • Check firewall settings if local development fails

Configuration and Customization

  • Extensive configuration options documented in handbook
  • See config.js for client-side options
  • Options marked 🚫 are not overwritable through configOverwrite
  • Reference Configuration Guide for details

Architecture Deep Dive

Core Application Files

  • ./conference.js - Foundation for user-conference interactions (connection, joining, muting)
  • ./modules/external-api - External API for iframe integration and events
  • ./lang/ - Translations in main-[language].json files
  • ./css/ - SCSS files organized by features, matching React feature structure

State Management Flow

  1. Actions dispatched from components
  2. Middleware processes side effects
  3. Reducers update state
  4. Components re-render based on state changes
  5. Registry pattern keeps features decoupled

Cross-Platform Strategy

  • Abstract components handle shared logic
  • Platform files (.web.ts, .native.ts) handle platform differences
  • Build system excludes irrelevant platform files
  • TypeScript configs ensure proper platform targeting

External Resources

Download now (ZIP)

Trending

Less talk lately.about the whole repository

Dec 2025: 1 mentionJan 2026: 0 mentionsFeb 2026: 1 mentionMar 2026: 0 mentionsApr 2026: 0 mentionsMay 2026: 0 mentionsJun 2026: 1 mentionJul 2026: 2 mentionsAug 2026: 2 mentionsSep 2026: 1 mentionOct 2026: 1 mentionNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the jitsi/jitsi-meet repository that our weekly crawl found. There is no adoption data for this file yet.

Who's talking about jitsi/jitsi-meet

The biggest 5 of 80 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 80

Talked about on Stack Overflow, YouTube, GitHub, Bluesky, Hacker News and the web (80 times).

On Stack Overflow · 25

20 more on Stack Overflow

On YouTube · 22

17 more on YouTube

On GitHub · 16

11 more on GitHub

On Bluesky · 11

6 more on Bluesky

On the web · 2

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.