diff --git a/src/vpu-official-signature-pdf-upload.js b/src/vpu-official-signature-pdf-upload.js
index c1e510ae186a29c0c6550f0ceaa69088f49bcda5..aabc16a781b40be97ac92dd21c6ab23ef840ee58 100644
--- a/src/vpu-official-signature-pdf-upload.js
+++ b/src/vpu-official-signature-pdf-upload.js
@@ -293,6 +293,9 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitElem
     }
 
     render() {
+        if (this.isLoading()) {
+            return html`<vpu-mini-spinner></vpu-mini-spinner>`;
+        }
         return html`
             <div class="${classMap({hidden: !this.isLoggedIn() || !this.hasSignaturePermissions()})}">
                 <div class="field">
diff --git a/src/vpu-qualified-signature-pdf-upload.js b/src/vpu-qualified-signature-pdf-upload.js
index e40298539f60862ec4657b559e5a38405c49f4e5..6675b7be8a454f65752a01f144674eb7b2ad8294 100644
--- a/src/vpu-qualified-signature-pdf-upload.js
+++ b/src/vpu-qualified-signature-pdf-upload.js
@@ -504,6 +504,9 @@ class QualifiedSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitEle
     }
 
     render() {
+        if (this.isLoading()) {
+            return html`<vpu-mini-spinner></vpu-mini-spinner>`;
+        }
         return html`
             <div class="${classMap({hidden: !this.isLoggedIn() || !this.hasSignaturePermissions()})}">
                 <div class="field">
diff --git a/src/vpu-signature-lit-element.js b/src/vpu-signature-lit-element.js
index ca73f35af8797e0e75164252bc605cf646f12ca2..70b37a4fb10980553588039a6a0532634ca1cb7c 100644
--- a/src/vpu-signature-lit-element.js
+++ b/src/vpu-signature-lit-element.js
@@ -12,16 +12,18 @@ export default class VPUSignatureLitElement extends LitElement {
     }
 
     _updateAuth() {
-        if (this.isLoggedIn() && !this._loginCalled) {
-            this._loginCalled = true;
-            this.loginCallback();
+        // Every time isLoggedIn()/isLoading() return something different we request a re-render
+        let newLoginState = [this.isLoggedIn(), this.isLoading()];
+        if (this._loginState.toString() !== newLoginState.toString()) {
+            this.requestUpdate();
         }
+        this._loginState = newLoginState;
     }
 
     connectedCallback() {
         super.connectedCallback();
 
-        this._loginCalled = false;
+        this._loginState = [];
         this._subscriber = new events.EventSubscriber('vpu-auth-update', 'vpu-auth-update-request');
         this._updateAuth = this._updateAuth.bind(this);
         this._subscriber.subscribe(this._updateAuth);
@@ -38,9 +40,8 @@ export default class VPUSignatureLitElement extends LitElement {
         return (window.VPUPerson !== undefined && window.VPUPerson !== null);
     }
 
-    loginCallback() {
-        // Implement in subclass
-        this.requestUpdate();
+    isLoading() {
+        return (!this.isLoggedIn() && window.VPUAuthToken !== undefined);
     }
 
     getOrganization() {