CLI tool
clappr/clappr avatar
clappr/clappr

Clappr 0.14: A Plugin-First Media Player That Puts You in Control of Playback

An extensible, plugin-oriented, HTML5-first media player for the web

7,500 stars861 forksJavaScriptBSD-3-Clause

At a glance

What is it?
Clappr is an HTML5-first, plugin-oriented media player that splits core playback from streaming libraries. Recent releases force you to add hls.js or Shaka Player yourself, which is either a burden or a benefit depending on your stack.
Who is it for?
Adopt Clappr if you need a player you can reshape at every layer, from UI to playback, and you are comfortable managing your own streaming dependencies. Skip it if you want a zero-config player that bundles HLS and DASH out of the box, or if your team cannot commit to Node.js 24 for local development.
Can I use it commercially?
Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Clappr Solves and Who Should Look at It

Clappr solves the problem of embedding video in a web page without locking you into a single vendor's player or a fixed set of features. It is built around a core that handles the player shell, containers, and playback abstractions, while everything else, from control bars to streaming protocols, comes as a plugin. The intended audience is developers who need a player they can extend for specific use cases, such as adding custom analytics, building a smart TV interface, or supporting unusual DRM flows. If you just want a <video> tag with a play button, Clappr is overkill. But if you have ever fought a monolithic player to add a custom button or swap out the streaming engine, Clappr's architecture is aimed directly at you.

The Modular Architecture: Core, Containers, and Playback

The repository is a monorepo with a clear separation of concerns. The main package, @clappr/player, exposes the public API and serves as the entry point. Underneath it sits @clappr/clappr-core, which contains the Core, Container, and Playback abstractions. The Core manages the overall player instance, while each Container represents a single media playback session. The Playback abstraction is the interface that any playback engine, such as hls.js or Shaka Player, must implement. This design means you can swap out the playback layer without touching the UI, or replace the UI without changing how streams are loaded. The README also mentions @clappr/clappr-zepto, a modernized fork of Zepto for DOM manipulation, which keeps the player's internal rendering lightweight and independent of heavier frameworks like jQuery.

The Breaking Change: Streaming Libraries Are No Longer Bundled

The most significant recent change is that the playback peers no longer bundle their streaming libraries. The @clappr/hlsjs-playback package, now at version 3.0.0, no longer includes hls.js. Similarly, dash-shaka-playback at 5.0.0 no longer bundles shaka-player. The README is explicit: you must provide the peer dependency yourself. This is a deliberate shift toward a leaner core, but it has real consequences. If you upgrade from an earlier version, your HLS or DASH playback will break until you install the matching library. The upside is that you control the exact version of hls.js or Shaka Player, which matters if you need a specific bug fix or a feature that only exists in a particular release. The downside is that setup becomes more involved, and you must track compatibility between the playback plugin and its peer.

Getting Started: Installation and Local Development

The README's quick start is straightforward. You install the player via yarn or npm, with the command `yarn add @clappr/player`. From there, you would create a player instance and pass it a source, though the README does not show the exact JavaScript snippet in the portion provided. For local development, the requirements are strict: Node.js 24 or higher. The repository pins the major version in `.nvmrc`, and the README warns that Yarn 1 aborts every yarn command if the engine check fails. After cloning, you run `yarn install` to get dependencies, then `yarn dev` to start the development environment, which serves the player at `http://localhost:8080`. The Node.js version requirement is a notable hurdle if your team is on an older LTS release, and it suggests that the project is comfortable moving fast and dropping support for older runtimes.

The Plugin Ecosystem and the HbbTV Playback Module

The monorepo includes several official plugins beyond the core. The most distinctive is @clappr/html5-tvs-playback, which targets HbbTV smart TVs and supports VoD, live streams, and DRM via the OIPF DRM agent. This is a niche that few web players address, and it shows that Clappr is not just for desktop browsers. The official plugin collection, @clappr/clappr-plugins, provides ready-to-use extensions for UI features and analytics integrations. The plugin development guide in the docs explains how to create and register custom plugins, which is the path you take when the official set does not cover your needs. The presence of these modules, combined with the core abstractions, means you can build a player that behaves differently on a TV versus a phone without forking the entire codebase.

Where Clappr Falls Short or Is the Wrong Choice

Clappr is not a drop-in solution for everyone. The biggest limitation is that you must assemble the parts yourself. The README's breaking change table is a warning: if you want HLS, you need to install hls.js and keep it in sync with the playback plugin. If you want DASH, you need Shaka Player. This adds a dependency management burden that players like Video.js or the native HTML5 video element do not impose. Another limitation is the Node.js 24 requirement for local development, which could exclude teams on older toolchains. The documentation, while present, is spread across several files in the apps directory, and the README itself is truncated in what we have, so you may need to dig into the docs to understand the full API. For a simple video embed on a marketing page, Clappr is over-engineered; you would be better served by a plain <video> tag or a hosted player.

Alternatives: Video.js and the Native Video Element

The most direct alternative is Video.js, a mature open-source player that also uses a plugin architecture but ships with a default set of controls and can bundle HLS support via its own http-streaming library. The key difference is approach: Video.js tends to be a complete player out of the box, while Clappr is a framework you assemble. With Video.js, you can install a plugin for HLS and get playback with less manual wiring. The native HTML5 video element is the simplest alternative, with zero dependencies, but it offers no plugin system and no built-in HLS support on all browsers. Clappr's advantage is its clean separation between core and playback, which makes it easier to write a custom playback engine for a non-standard protocol. The trade-off is that you take on the integration work yourself, whereas Video.js hides more of that complexity.

Maintenance, License, and Upgrade Costs

Clappr is licensed under BSD-3-Clause, which is permissive and allows commercial use with attribution. The project is actively maintained, with the latest release, 0.14.3, pushed in August 2026, and 0.14.2 and 0.14.1 following within weeks. That cadence suggests ongoing bug fixes and feature work. The upgrade cost is real, though. The recent majors for the playback plugins are breaking, so moving from an older version requires you to add the streaming library as a peer dependency. You also need to verify that your custom plugins are compatible with the core API, which can change between minor versions. The monorepo structure means you can track changes in the packages directory, and the changelog is linked from the README, but you should budget time for regression testing after any upgrade. For a project that relies on a specific DRM or smart TV feature, the upgrade path may require re-testing on actual hardware, which is a non-trivial cost.

Editorial conclusion

Adopt Clappr if you need a player you can reshape at every layer, from UI to playback, and you are comfortable managing your own streaming dependencies. Skip it if you want a zero-config player that bundles HLS and DASH out of the box, or if your team cannot commit to Node.js 24 for local development. Before adopting, verify that your target browsers support the HTML5 video element and that you can pin the correct versions of hls.js and Shaka Player for your streams. Test the peer dependency installation in a clean environment first, because the README warns that recent majors no longer bundle these libraries.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes