JSFiddle - React, Tailwind, and code Playground

HTML

<div id=key></div>
<br>
Re-run this jsfiddle to see the printed base64 of the key is still the same

JavaScript

window.crypto.subtle.generateKey(
       {
          name: "ECDSA",
          namedCurve: "P-256", //can be "P-256", "P-384", or "P-521"
       },
       true, //whether the key is extractable (i.e. can be used in exportKey)
       ["sign", "verify"] //can be any combination of "sign" and "verify"
    )
    .then(function(key)
    {
       window.crypto.subtle.exportKey(
           "spki", //can be "jwk" (public or private), "spki" (public only), or "pkcs8" (private only)
           key.publicKey //can be a publicKey or privateKey, as long as extractable was true
        ).then(function(keydata)
        {
            // this always prints something like "A21ixmVqdCBccnOheQJ1cmNlcl0="
            // I would expect it to print different string on each reload!
            document.getElementById('key').innerHTML=btoa(keydata);
        })
         .catch(function(err){ console.error(err); });
    }).catch(function(err){ console.error(err); });