diff --git a/front/package-lock.json b/front/package-lock.json
index 97ef7a1c092e6e572b861b5c5827ad06444e976b..02b562ba47ed3693ed2ead761efe0a053371d484 100644
--- a/front/package-lock.json
+++ b/front/package-lock.json
@@ -828,9 +828,9 @@
       "dev": true
     },
     "intro.js": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/intro.js/-/intro.js-0.6.0.tgz",
-      "integrity": "sha1-D82p9DZOIBiX4RKJ4A3S5S4col8="
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/intro.js/-/intro.js-3.3.1.tgz",
+      "integrity": "sha512-Y+iMbIzVQou9PDRP5miKa7NNQeUkSA6XFp+atnGiTarEi2jghthSLK+9JUvdM6QvQ9G+bpOEfKd+DNtWJlGb9w=="
     },
     "is-core-module": {
       "version": "2.2.0",
diff --git a/front/package.json b/front/package.json
index a55f8701f4953337afc00112aa378faeac93a60b..fc2db0948f2a178370a44c8b87261a3b387f1766 100644
--- a/front/package.json
+++ b/front/package.json
@@ -16,7 +16,7 @@
     "diff": "^4.0.1",
     "dropzone": "^5.5.1",
     "file-loader": "^6.2.0",
-    "intro.js": "^0.6.0",
+    "intro.js": "^3.3.1",
     "jquery": "^3.3.1",
     "jquery-ui-dist": "^1.12.1",
     "js-cookie": "^2.2.0",
diff --git a/front/src/onboarding.js b/front/src/onboarding.js
index a177d27585aed926beb14b81498e5925d0df98bb..e34c678b2b95056228d166820a020b2bac9c9bb3 100644
--- a/front/src/onboarding.js
+++ b/front/src/onboarding.js
@@ -4,24 +4,29 @@ Just set ONBOARDING_PAGE in the page before the scripts block.super eg:
 const ONBOARDING_PAGE = 'onboarding_document_form';
 
 */
-
 export function bootOnboarding() {
     if (typeof ONBOARDING_PAGE !== 'undefined') {
         var onboarding_page_done = userProfile.get(ONBOARDING_PAGE) || false;
-    
+
         if (!onboarding_page_done) {
             var intro = introJs().setOptions({'skipLabel': "Skip"});
             intro.oncomplete(function() {
                 userProfile.set(ONBOARDING_PAGE, true);
             })
-            intro.onexit(function(aa) {
-                if (!userProfile.get(ONBOARDING_PAGE, true)) {
-                    if (confirm("Are you sure you want to avoid further help?")) {
-                        exitOnboarding();
+            intro.onbeforeexit(function(aa) {
+                if (intro._currentStep<intro._introItems.length-1) {
+                    if (!userProfile.get(ONBOARDING_PAGE, true)) {
+                        if (confirm("Are you sure you want to avoid further help?")) {
+                            exitOnboarding();
+                        } else {
+                            return false;
+                        }
                     }
+                } else {
+                    userProfile.set(ONBOARDING_PAGE, true);
                 }
             });
-    
+
             //document_form
             if (ONBOARDING_PAGE == 'onboarding_document_form') {
                 intro.setOptions({
@@ -48,7 +53,7 @@ export function bootOnboarding() {
                         },
                     ]
                 });
-    
+
             } else if (ONBOARDING_PAGE == 'onboarding_images') {
                 intro.setOptions({
                     steps: [
@@ -89,7 +94,7 @@ export function bootOnboarding() {
                         }
                     ]
                 });
-    
+
             } else if (ONBOARDING_PAGE == 'onboarding_edit') {
                 intro.setOptions({
                     steps: [
@@ -125,7 +130,7 @@ export function bootOnboarding() {
                     }]
                 });
             }
-    
+
             document.addEventListener('DOMContentLoaded', function() {
                 intro.start();
             });
diff --git a/front/src/vendor.js b/front/src/vendor.js
index a10c138493cefcf1637c0873a83803c61110ddf4..03bfe26d4a0818dac562063e25e0c2f29b9fc57f 100644
--- a/front/src/vendor.js
+++ b/front/src/vendor.js
@@ -21,7 +21,7 @@ window.Dropzone = require('dropzone/dist/dropzone');
 
 // Intro.js needs to be explicitly set on window, as it's used at boot time
 // by onboarding.js
-window.introJs = require('intro.js/intro').introJs;
+window.introJs = require('intro.js');
 
 // moment needs to be explicitly set on window, as it's used at boot time
 // by trans_modal.js