License persistent state

Hello, there.

I’m working on a web-based application which uses DRM playback (DASH/PlayReady and DASH/Widevine) with Shaka-Player.

My application logic requires DRM device id to identify a device across multiple launches. I used this code to check whether license persistent state is supported:

    try {
      const basicConfig = {
        initDataTypes: ['cenc'],
        persistentState: 'required',
        videoCapabilities: basicVideoCapabilities,

      const access = await navigator.requestMediaKeySystemAccess(
        keySystem, [basicConfig as MediaKeySystemConfiguration]

      return access.getConfiguration().persistentState === 'required';
    } catch (e) {
      return false;

It shows that PlayReady supports persistent state but Widevine no.

And here I see quite strange behavior since real results are directly opposite. (with PlayReady I see new device ID on every app start, but with Widevine device ID is the same across multiple launches).

I found this article in webOS documentation: DRM Content Playback | webOS TV Developer

As I understand it describes some webOS specific way of setting up DRM playback and getting license, but Shaka-Player already does it for me on its own.

Is it necessary to rework license getting flow in order to fix the device ID issue?

DRM Content Playback guide is for the native player. For questions about Shaka Player, please contact Shaka Player support. Thank you.