diff --git a/Makefile b/Makefile
index 581de8eeba32ea3e574d45139d516b2fc7001c15..e178d84b8c995227bc3dd1431bc1ca2aa6ad0c03 100644
--- a/Makefile
+++ b/Makefile
@@ -28,39 +28,7 @@ lint-fix-watch:
 
 # Cleaning
 clean:
-	rm -rf apps/accessibility/js/
-	rm -rf apps/comments/js/
-	rm -rf apps/dashboard/js/
-	rm -rf apps/dav/js/
-	rm -rf apps/files/js/dist/
-	rm -rf apps/files_sharing/js/dist/
-	rm -rf apps/files_trashbin/js/
-	rm -rf apps/files_versions/js/
-	rm -rf apps/oauth2/js/
-	rm -rf apps/settings/js/vue-*
-	rm -rf apps/systemtags/js/systemtags.*
-	rm -rf apps/twofactor_backupcodes/js
-	rm -rf apps/updatenotification/js/updatenotification.*
-	rm -rf apps/user_status/js/
-	rm -rf apps/weather_status/js/
-	rm -rf apps/workflowengine/js/
-	rm -rf core/js/dist
+	rm -rf dist
 
 clean-git: clean
-	git checkout -- apps/accessibility/js/
-	git checkout -- apps/comments/js/
-	git checkout -- apps/dashboard/js/
-	git checkout -- apps/dav/js/
-	git checkout -- apps/files/js/dist/
-	git checkout -- apps/files_sharing/js/dist/
-	git checkout -- apps/files_trashbin/js/
-	git checkout -- apps/files_versions/js/
-	git checkout -- apps/oauth2/js/
-	git checkout -- apps/settings/js/vue-*
-	git checkout -- apps/systemtags/js/systemtags.*
-	git checkout -- apps/twofactor_backupcodes/js
-	git checkout -- apps/updatenotification/js/updatenotification.*
-	git checkout -- apps/user_status/js/
-	git checkout -- apps/weather_status/js/
-	git checkout -- apps/workflowengine/js/
-	git checkout -- core/js/dist
+	git checkout -- dist
diff --git a/apps/comments/lib/Listener/LoadSidebarScripts.php b/apps/comments/lib/Listener/LoadSidebarScripts.php
index 842788f1de81a833fbbdb9e471b07c6eb165f914..a73c11ebf189a5b00040bdd91c19d02fc5d717cb 100644
--- a/apps/comments/lib/Listener/LoadSidebarScripts.php
+++ b/apps/comments/lib/Listener/LoadSidebarScripts.php
@@ -52,6 +52,6 @@ class LoadSidebarScripts implements IEventListener {
 		// TODO: make sure to only include the sidebar script when
 		// we properly split it between files list and sidebar
 		Util::addScript(Application::APP_ID, 'comments');
-		Util::addScript(Application::APP_ID, 'comments-tab');
+		Util::addScript(Application::APP_ID, 'comments-tab', 'files');
 	}
 }
diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php
index bba8660399cd0ecc159b48d80a38f0caf6030c73..c73e8f77a3aa5da29245377e84f6c416d1962a77 100644
--- a/apps/files/lib/Controller/ViewController.php
+++ b/apps/files/lib/Controller/ViewController.php
@@ -196,10 +196,8 @@ class ViewController extends Controller {
 
 		// Load the files we need
 		\OCP\Util::addStyle('files', 'merged');
-		\OCP\Util::addScript('files', 'merged-index');
-		\OCP\Util::addScript('files', 'templates');
-		\OCP\Util::addScript('files', 'files-app-settings');
-		\OCP\Util::addScript('files', 'legacy-filelist-search');
+		\OCP\Util::addScript('files', 'merged-index', 'files');
+		\OCP\Util::addScript('files', 'main');
 
 		// mostly for the home storage's free space
 		// FIXME: Make non static
diff --git a/apps/files/src/main.js b/apps/files/src/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..a979822bdc48d1b2beb97dcdcd2cf0a7068e3f70
--- /dev/null
+++ b/apps/files/src/main.js
@@ -0,0 +1,3 @@
+import './files-app-settings'
+import './templates'
+import './legacy/filelistSearch'
diff --git a/build/files-checker.php b/build/files-checker.php
index f4ca40a54b306e2fbb8a4ea0aa6b2e568f88a4d7..c817a8107120f44ac8f8d618280e5e6e69a85259 100644
--- a/build/files-checker.php
+++ b/build/files-checker.php
@@ -20,8 +20,8 @@
  */
 
 $expectedFiles = [
-	'.',
 	'..',
+	'.',
 	'.codecov.yml',
 	'.devcontainer',
 	'.drone.yml',
@@ -63,6 +63,7 @@ $expectedFiles = [
 	'COPYING',
 	'core',
 	'cron.php',
+	'dist',
 	'index.html',
 	'index.php',
 	'lib',
@@ -73,8 +74,8 @@ $expectedFiles = [
 	'ocs',
 	'package-lock.json',
 	'package.json',
-	'psalm.xml',
 	'psalm-ocp.xml',
+	'psalm.xml',
 	'public.php',
 	'README.md',
 	'remote.php',
@@ -88,6 +89,7 @@ $expectedFiles = [
 	'version.php',
 	'webpack.common.js',
 	'webpack.dev.js',
+	'webpack.modules.js',
 	'webpack.prod.js',
 ];
 $actualFiles = [];
diff --git a/dist/accessibility-accessibility.js b/dist/accessibility-accessibility.js
new file mode 100644
index 0000000000000000000000000000000000000000..87c3e850bb1bb5c7fec0c7bb3635b05efcf7c756
Binary files /dev/null and b/dist/accessibility-accessibility.js differ
diff --git a/dist/accessibility-accessibility.js.LICENSE.txt b/dist/accessibility-accessibility.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..610bc560c8d4354a7a434ac3b0ec1faf27ba9c91
Binary files /dev/null and b/dist/accessibility-accessibility.js.LICENSE.txt differ
diff --git a/dist/accessibility-accessibility.js.map b/dist/accessibility-accessibility.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..64880550a5983454281fb08fc5150c38e664398b
Binary files /dev/null and b/dist/accessibility-accessibility.js.map differ
diff --git a/dist/accessibility-accessibilityoca.js b/dist/accessibility-accessibilityoca.js
new file mode 100644
index 0000000000000000000000000000000000000000..e3d7a0a3f9ace909d7aa8ddf36465c1ee4b04f7d
Binary files /dev/null and b/dist/accessibility-accessibilityoca.js differ
diff --git a/dist/accessibility-accessibilityoca.js.LICENSE.txt b/dist/accessibility-accessibilityoca.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..252ae76d99916df77838812808858fc5ebd99c28
Binary files /dev/null and b/dist/accessibility-accessibilityoca.js.LICENSE.txt differ
diff --git a/dist/accessibility-accessibilityoca.js.map b/dist/accessibility-accessibilityoca.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..a3cb743d64a9e4b333e47b40688092601447d07d
Binary files /dev/null and b/dist/accessibility-accessibilityoca.js.map differ
diff --git a/dist/comments-comments-app.js b/dist/comments-comments-app.js
new file mode 100644
index 0000000000000000000000000000000000000000..356c1291177ba5a7ee3ba520c74a34fc2f799ed2
Binary files /dev/null and b/dist/comments-comments-app.js differ
diff --git a/dist/comments-comments-app.js.LICENSE.txt b/dist/comments-comments-app.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..13ca43a74d3de103ca0f1828d10be26d783b451e
Binary files /dev/null and b/dist/comments-comments-app.js.LICENSE.txt differ
diff --git a/dist/comments-comments-app.js.map b/dist/comments-comments-app.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..d5d5b55e8766d4ecd360957ba52d7e8022112e42
Binary files /dev/null and b/dist/comments-comments-app.js.map differ
diff --git a/dist/comments-comments-tab.js b/dist/comments-comments-tab.js
new file mode 100644
index 0000000000000000000000000000000000000000..5f6936b9f860fe649415522b0e7ddcf490f2fe92
Binary files /dev/null and b/dist/comments-comments-tab.js differ
diff --git a/dist/comments-comments-tab.js.LICENSE.txt b/dist/comments-comments-tab.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b30815910e1724b40f0a42cfb2336e7f569e80ca
Binary files /dev/null and b/dist/comments-comments-tab.js.LICENSE.txt differ
diff --git a/dist/comments-comments-tab.js.map b/dist/comments-comments-tab.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..bb9fc9c3ee2c6bce73fc369de2bb765516b32800
Binary files /dev/null and b/dist/comments-comments-tab.js.map differ
diff --git a/dist/comments-comments.js b/dist/comments-comments.js
new file mode 100644
index 0000000000000000000000000000000000000000..5f7d65ca9faa33377750cf223186cfc3d6d64352
Binary files /dev/null and b/dist/comments-comments.js differ
diff --git a/dist/comments-comments.js.LICENSE.txt b/dist/comments-comments.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e21215076ccdef780f2c05e389b7d0ebf7e3af15
Binary files /dev/null and b/dist/comments-comments.js.LICENSE.txt differ
diff --git a/dist/comments-comments.js.map b/dist/comments-comments.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..d44257a0152c96cbf29de81b2f9259767394228c
Binary files /dev/null and b/dist/comments-comments.js.map differ
diff --git a/dist/core-files_client.js b/dist/core-files_client.js
new file mode 100644
index 0000000000000000000000000000000000000000..2e90f49e863b27bca0b38eb618adca67e5f4f8c0
Binary files /dev/null and b/dist/core-files_client.js differ
diff --git a/dist/core-files_client.js.LICENSE.txt b/dist/core-files_client.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..baa9ebaae23fbde7cdd851ee8de334712cede6fe
Binary files /dev/null and b/dist/core-files_client.js.LICENSE.txt differ
diff --git a/dist/core-files_client.js.map b/dist/core-files_client.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..9ba42a5c6765ef7bef77564bfb87a07f44d1d9a0
Binary files /dev/null and b/dist/core-files_client.js.map differ
diff --git a/dist/core-files_fileinfo.js b/dist/core-files_fileinfo.js
new file mode 100644
index 0000000000000000000000000000000000000000..13e3bf888cd10ab7a0650ba57d42b42f9fb21c06
Binary files /dev/null and b/dist/core-files_fileinfo.js differ
diff --git a/dist/core-files_fileinfo.js.LICENSE.txt b/dist/core-files_fileinfo.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4474e55547d467127274f92b61250c01267abcc7
Binary files /dev/null and b/dist/core-files_fileinfo.js.LICENSE.txt differ
diff --git a/dist/core-files_fileinfo.js.map b/dist/core-files_fileinfo.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..07e74958787f7b0b9e6875536ec9de7cc66eb729
Binary files /dev/null and b/dist/core-files_fileinfo.js.map differ
diff --git a/dist/core-install.js b/dist/core-install.js
new file mode 100644
index 0000000000000000000000000000000000000000..48d1e98836fa0a91aaec5c433c52e25cc0bb0f93
Binary files /dev/null and b/dist/core-install.js differ
diff --git a/dist/core-install.js.LICENSE.txt b/dist/core-install.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..edab090c4c6f886e5e49fe5e979acc43bbad290d
Binary files /dev/null and b/dist/core-install.js.LICENSE.txt differ
diff --git a/dist/core-install.js.map b/dist/core-install.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..e6d392fe5df81ac767fec1661d30f47da89f0879
Binary files /dev/null and b/dist/core-install.js.map differ
diff --git a/dist/core-login.js b/dist/core-login.js
new file mode 100644
index 0000000000000000000000000000000000000000..13c5d0bdab481448359a289bd39c082dbf0977a8
Binary files /dev/null and b/dist/core-login.js differ
diff --git a/dist/core-login.js.LICENSE.txt b/dist/core-login.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ab5ffd7e0d8d3fff2ecd9519ef67e744f7c55d60
Binary files /dev/null and b/dist/core-login.js.LICENSE.txt differ
diff --git a/dist/core-login.js.map b/dist/core-login.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..c36975cf15df65e9b45dbe4d5779855281669284
Binary files /dev/null and b/dist/core-login.js.map differ
diff --git a/dist/core-main.js.LICENSE.txt b/dist/core-main.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0db23d576b91b7c468fcfb26a7bb726860100bda
Binary files /dev/null and b/dist/core-main.js.LICENSE.txt differ
diff --git a/dist/core-maintenance.js b/dist/core-maintenance.js
new file mode 100644
index 0000000000000000000000000000000000000000..fa0aaaf3c9f4aef909361b16c32dfc77e6793084
Binary files /dev/null and b/dist/core-maintenance.js differ
diff --git a/dist/core-maintenance.js.LICENSE.txt b/dist/core-maintenance.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d1de0b80f569416dc5a95f92e1b87eb5f521898a
Binary files /dev/null and b/dist/core-maintenance.js.LICENSE.txt differ
diff --git a/dist/core-maintenance.js.map b/dist/core-maintenance.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..073f3cf3382b7efb110bb8f59bf921462eb47de1
Binary files /dev/null and b/dist/core-maintenance.js.map differ
diff --git a/dist/core-recommendedapps.js b/dist/core-recommendedapps.js
new file mode 100644
index 0000000000000000000000000000000000000000..f56255734a05584e6046d581c0eeceae1b3ccbc5
Binary files /dev/null and b/dist/core-recommendedapps.js differ
diff --git a/dist/core-recommendedapps.js.LICENSE.txt b/dist/core-recommendedapps.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ba4204bb3c592cf8e56b037e39aa676587c75e76
Binary files /dev/null and b/dist/core-recommendedapps.js.LICENSE.txt differ
diff --git a/dist/core-recommendedapps.js.map b/dist/core-recommendedapps.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..8997e8ef9cbac5a3ae33e1083665006e30cbb977
Binary files /dev/null and b/dist/core-recommendedapps.js.map differ
diff --git a/dist/core-systemtags.js b/dist/core-systemtags.js
new file mode 100644
index 0000000000000000000000000000000000000000..0090de1efa99a56ae7b2d914c1e26993cf2ba66f
Binary files /dev/null and b/dist/core-systemtags.js differ
diff --git a/dist/core-systemtags.js.LICENSE.txt b/dist/core-systemtags.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..915a38ff92bd20c2437031f849576e0c17bdab97
Binary files /dev/null and b/dist/core-systemtags.js.LICENSE.txt differ
diff --git a/dist/core-systemtags.js.map b/dist/core-systemtags.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..61b4977cb772859237465b347fbf12e77a36f462
Binary files /dev/null and b/dist/core-systemtags.js.map differ
diff --git a/dist/core-unified-search.js b/dist/core-unified-search.js
new file mode 100644
index 0000000000000000000000000000000000000000..18c8c1b620d66a0a19ff723be915398d744415ab
Binary files /dev/null and b/dist/core-unified-search.js differ
diff --git a/dist/core-unified-search.js.LICENSE.txt b/dist/core-unified-search.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cb9d3f06ce5843045a7ba3ecbb34a38d8572a5c8
Binary files /dev/null and b/dist/core-unified-search.js.LICENSE.txt differ
diff --git a/dist/core-unified-search.js.map b/dist/core-unified-search.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..95a429102483d3f538cb4fbc720effbdd22dd11e
Binary files /dev/null and b/dist/core-unified-search.js.map differ
diff --git a/dist/dashboard-dashboard-main.js b/dist/dashboard-dashboard-main.js
new file mode 100644
index 0000000000000000000000000000000000000000..adf4338d3b42a1e85b0ede22c6051bb291db6f21
Binary files /dev/null and b/dist/dashboard-dashboard-main.js differ
diff --git a/dist/dashboard-dashboard-main.js.LICENSE.txt b/dist/dashboard-dashboard-main.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a655e3da63553ddd895b15e270d1e0221ded0392
Binary files /dev/null and b/dist/dashboard-dashboard-main.js.LICENSE.txt differ
diff --git a/dist/dashboard-dashboard-main.js.map b/dist/dashboard-dashboard-main.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..e0ce3c12f83fd1f8d514c2b076e55922a489e04b
Binary files /dev/null and b/dist/dashboard-dashboard-main.js.map differ
diff --git a/dist/dav-settings-admin-caldav.js b/dist/dav-settings-admin-caldav.js
new file mode 100644
index 0000000000000000000000000000000000000000..25dcace6c470e5693c1ed92de997617bc98071fc
Binary files /dev/null and b/dist/dav-settings-admin-caldav.js differ
diff --git a/dist/dav-settings-admin-caldav.js.map b/dist/dav-settings-admin-caldav.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..801c5b2d6a52328487c8dda78c1fd49ffeaae640
Binary files /dev/null and b/dist/dav-settings-admin-caldav.js.map differ
diff --git a/dist/files-files-app-settings.js b/dist/files-files-app-settings.js
new file mode 100644
index 0000000000000000000000000000000000000000..34e577eabdba13833a509f273e70745ade14b7ec
Binary files /dev/null and b/dist/files-files-app-settings.js differ
diff --git a/dist/files-files-app-settings.js.LICENSE.txt b/dist/files-files-app-settings.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..033eae1fa12701e9ef545b4413595f227e6261cd
Binary files /dev/null and b/dist/files-files-app-settings.js.LICENSE.txt differ
diff --git a/dist/files-files-app-settings.js.map b/dist/files-files-app-settings.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..bd5b7c9ec5d4e8086eccc35dc2eb86de9da3fc90
Binary files /dev/null and b/dist/files-files-app-settings.js.map differ
diff --git a/dist/files-legacy-filelist-search.js b/dist/files-legacy-filelist-search.js
new file mode 100644
index 0000000000000000000000000000000000000000..ced23050911dcdc2d67b9b8c59413f437843a8e4
Binary files /dev/null and b/dist/files-legacy-filelist-search.js differ
diff --git a/dist/files-legacy-filelist-search.js.LICENSE.txt b/dist/files-legacy-filelist-search.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..59bcc16b15b706d028e25bc55870a6bb07c46189
Binary files /dev/null and b/dist/files-legacy-filelist-search.js.LICENSE.txt differ
diff --git a/dist/files-legacy-filelist-search.js.map b/dist/files-legacy-filelist-search.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..c62836ecf75fa32054eb6fe6632a1358938c1926
Binary files /dev/null and b/dist/files-legacy-filelist-search.js.map differ
diff --git a/dist/files-personal-settings.js b/dist/files-personal-settings.js
new file mode 100644
index 0000000000000000000000000000000000000000..808defce79973152d6e0c166389140a9e7a8f9c5
Binary files /dev/null and b/dist/files-personal-settings.js differ
diff --git a/dist/files-personal-settings.js.LICENSE.txt b/dist/files-personal-settings.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e08815d8c2328843721f970830c9988ab6e538a1
Binary files /dev/null and b/dist/files-personal-settings.js.LICENSE.txt differ
diff --git a/dist/files-personal-settings.js.map b/dist/files-personal-settings.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..071835a49bbafa789234a1be42f5e744c5a72be6
Binary files /dev/null and b/dist/files-personal-settings.js.map differ
diff --git a/dist/files-sidebar.js b/dist/files-sidebar.js
new file mode 100644
index 0000000000000000000000000000000000000000..f944d7656e0407cfa9dab7193d10f0907b15c2e0
Binary files /dev/null and b/dist/files-sidebar.js differ
diff --git a/dist/files-sidebar.js.LICENSE.txt b/dist/files-sidebar.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..554c4ec5e40e27ce35e9c0d49a41120e74f8e91b
Binary files /dev/null and b/dist/files-sidebar.js.LICENSE.txt differ
diff --git a/dist/files-sidebar.js.map b/dist/files-sidebar.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..394fad8326543ceba4f43c94862bebbe22f07128
Binary files /dev/null and b/dist/files-sidebar.js.map differ
diff --git a/dist/files-templates.js b/dist/files-templates.js
new file mode 100644
index 0000000000000000000000000000000000000000..6333d6ae065b4a50eb3524e385e2b17ef201d4df
Binary files /dev/null and b/dist/files-templates.js differ
diff --git a/dist/files-templates.js.LICENSE.txt b/dist/files-templates.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e18485b9d5ad635007075f59da82c41efc7838d8
Binary files /dev/null and b/dist/files-templates.js.LICENSE.txt differ
diff --git a/dist/files-templates.js.map b/dist/files-templates.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..60b9c9a9af4ea087f9b4591f3c3d5fcfff98bbc2
Binary files /dev/null and b/dist/files-templates.js.map differ
diff --git a/dist/files_sharing-additionalScripts.js b/dist/files_sharing-additionalScripts.js
new file mode 100644
index 0000000000000000000000000000000000000000..83e132576b43612b14b72abeeb2696b6e96c3f7e
Binary files /dev/null and b/dist/files_sharing-additionalScripts.js differ
diff --git a/dist/files_sharing-additionalScripts.js.LICENSE.txt b/dist/files_sharing-additionalScripts.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..488d01b40b34ed1baa6b1584b352137b018f0a36
Binary files /dev/null and b/dist/files_sharing-additionalScripts.js.LICENSE.txt differ
diff --git a/dist/files_sharing-additionalScripts.js.map b/dist/files_sharing-additionalScripts.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..4b359360cd60481a917df7d2bd7894af8ca3cf4b
Binary files /dev/null and b/dist/files_sharing-additionalScripts.js.map differ
diff --git a/dist/files_sharing-collaboration.js b/dist/files_sharing-collaboration.js
new file mode 100644
index 0000000000000000000000000000000000000000..004ac0381caea51bb357b743b4a572e9e1e2c940
Binary files /dev/null and b/dist/files_sharing-collaboration.js differ
diff --git a/dist/files_sharing-collaboration.js.LICENSE.txt b/dist/files_sharing-collaboration.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ac346dd660af7294c2199e3c64905033deaa7be5
Binary files /dev/null and b/dist/files_sharing-collaboration.js.LICENSE.txt differ
diff --git a/dist/files_sharing-collaboration.js.map b/dist/files_sharing-collaboration.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..26ee1a222705ee2d7d3c8fe7a1b91f90013b6435
Binary files /dev/null and b/dist/files_sharing-collaboration.js.map differ
diff --git a/dist/files_sharing-files_sharing.js b/dist/files_sharing-files_sharing.js
new file mode 100644
index 0000000000000000000000000000000000000000..fb3ea5d40fb0adb12b871dba6204c077cf2cbb40
Binary files /dev/null and b/dist/files_sharing-files_sharing.js differ
diff --git a/dist/files_sharing-files_sharing.js.LICENSE.txt b/dist/files_sharing-files_sharing.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ac346dd660af7294c2199e3c64905033deaa7be5
Binary files /dev/null and b/dist/files_sharing-files_sharing.js.LICENSE.txt differ
diff --git a/dist/files_sharing-files_sharing.js.map b/dist/files_sharing-files_sharing.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..e9a5e744580847e1862505bdc99d02e95c85c8b7
Binary files /dev/null and b/dist/files_sharing-files_sharing.js.map differ
diff --git a/dist/files_sharing-files_sharing_tab.js b/dist/files_sharing-files_sharing_tab.js
new file mode 100644
index 0000000000000000000000000000000000000000..383a95b384895562bdcd2bc096e704424971cc1e
Binary files /dev/null and b/dist/files_sharing-files_sharing_tab.js differ
diff --git a/dist/files_sharing-files_sharing_tab.js.LICENSE.txt b/dist/files_sharing-files_sharing_tab.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dd45c0f8cfd18195213cd2f0066cb195d3ca666d
Binary files /dev/null and b/dist/files_sharing-files_sharing_tab.js.LICENSE.txt differ
diff --git a/dist/files_sharing-files_sharing_tab.js.map b/dist/files_sharing-files_sharing_tab.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..3bd06c8f2a038e84af489f5dba402556b7c31f60
Binary files /dev/null and b/dist/files_sharing-files_sharing_tab.js.map differ
diff --git a/dist/files_sharing-main.js b/dist/files_sharing-main.js
new file mode 100644
index 0000000000000000000000000000000000000000..93e87f942e78ac699ab49bbdb9dba7556232059d
Binary files /dev/null and b/dist/files_sharing-main.js differ
diff --git a/dist/files_sharing-main.js.LICENSE.txt b/dist/files_sharing-main.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..68b64fcbc831e450a3c637138dbd98a0f2eff76f
Binary files /dev/null and b/dist/files_sharing-main.js.LICENSE.txt differ
diff --git a/dist/files_sharing-main.js.map b/dist/files_sharing-main.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..b8f13aa4ba949f8f63c934430d8956859331a966
Binary files /dev/null and b/dist/files_sharing-main.js.map differ
diff --git a/dist/files_sharing-personal-settings.js b/dist/files_sharing-personal-settings.js
new file mode 100644
index 0000000000000000000000000000000000000000..a0c30e9052881bce24ac9b397076a6bcbdfcc88f
Binary files /dev/null and b/dist/files_sharing-personal-settings.js differ
diff --git a/dist/files_sharing-personal-settings.js.LICENSE.txt b/dist/files_sharing-personal-settings.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..236d5a83e6f59237bed51802027c5ffd466e3294
Binary files /dev/null and b/dist/files_sharing-personal-settings.js.LICENSE.txt differ
diff --git a/dist/files_sharing-personal-settings.js.map b/dist/files_sharing-personal-settings.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..54fb91df97fc71f60f02337585fb96d9325fd6a7
Binary files /dev/null and b/dist/files_sharing-personal-settings.js.map differ
diff --git a/dist/files_trashbin-files_trashbin.js b/dist/files_trashbin-files_trashbin.js
new file mode 100644
index 0000000000000000000000000000000000000000..e6da8617d1a682ae52f96fbdd9e0345e175179af
Binary files /dev/null and b/dist/files_trashbin-files_trashbin.js differ
diff --git a/dist/files_trashbin-files_trashbin.js.LICENSE.txt b/dist/files_trashbin-files_trashbin.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..87c7c4f4e38c39b84c02b1a4cd33482c524557d2
Binary files /dev/null and b/dist/files_trashbin-files_trashbin.js.LICENSE.txt differ
diff --git a/dist/files_trashbin-files_trashbin.js.map b/dist/files_trashbin-files_trashbin.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..1186c4cde31ddf48258978c4137d5a359e2ee218
Binary files /dev/null and b/dist/files_trashbin-files_trashbin.js.map differ
diff --git a/dist/files_versions-files_versions.js b/dist/files_versions-files_versions.js
new file mode 100644
index 0000000000000000000000000000000000000000..a37383b092194fbfcf174778693b1a820d600711
Binary files /dev/null and b/dist/files_versions-files_versions.js differ
diff --git a/dist/files_versions-files_versions.js.LICENSE.txt b/dist/files_versions-files_versions.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c054e00fc8b55437c624ce77675d702cbd6620b8
Binary files /dev/null and b/dist/files_versions-files_versions.js.LICENSE.txt differ
diff --git a/dist/files_versions-files_versions.js.map b/dist/files_versions-files_versions.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..e08008724b844d95d1c3bbef78271fdc9421bf34
Binary files /dev/null and b/dist/files_versions-files_versions.js.map differ
diff --git a/dist/nextcloud-common.js b/dist/nextcloud-common.js
new file mode 100644
index 0000000000000000000000000000000000000000..691d270d10b357cbc1d8df7c378e824539ad4757
Binary files /dev/null and b/dist/nextcloud-common.js differ
diff --git a/dist/nextcloud-common.js.LICENSE.txt b/dist/nextcloud-common.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d4bc6d50823f69aecb20c169c9eb3fbc61654abb
Binary files /dev/null and b/dist/nextcloud-common.js.LICENSE.txt differ
diff --git a/dist/nextcloud-common.js.map b/dist/nextcloud-common.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..131298ee8a1495c220e66336b16fbecfcecf80c1
Binary files /dev/null and b/dist/nextcloud-common.js.map differ
diff --git a/dist/oauth2-oauth2.js b/dist/oauth2-oauth2.js
new file mode 100644
index 0000000000000000000000000000000000000000..145959b5d6d6939c5c24768908c919f703cd6c79
Binary files /dev/null and b/dist/oauth2-oauth2.js differ
diff --git a/dist/oauth2-oauth2.js.LICENSE.txt b/dist/oauth2-oauth2.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3910398493e21b01e48deba3657f10737d027326
Binary files /dev/null and b/dist/oauth2-oauth2.js.LICENSE.txt differ
diff --git a/dist/oauth2-oauth2.js.map b/dist/oauth2-oauth2.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..cb90464b912ea2a3d48b52993749c5af35484e72
Binary files /dev/null and b/dist/oauth2-oauth2.js.map differ
diff --git a/dist/settings-apps-647.js b/dist/settings-apps-647.js
new file mode 100644
index 0000000000000000000000000000000000000000..0754ba0da3db15d125de1b8b23ea6ab970c82854
Binary files /dev/null and b/dist/settings-apps-647.js differ
diff --git a/dist/settings-apps-647.js.map b/dist/settings-apps-647.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..535e8762024bea41911f512859091311dcf07600
Binary files /dev/null and b/dist/settings-apps-647.js.map differ
diff --git a/dist/settings-users-351.js.LICENSE.txt b/dist/settings-users-351.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bca1d747f0eb564b958fb0c851c886a48e038e44
Binary files /dev/null and b/dist/settings-users-351.js.LICENSE.txt differ
diff --git a/dist/settings-vue-settings-admin-security.js b/dist/settings-vue-settings-admin-security.js
new file mode 100644
index 0000000000000000000000000000000000000000..c8c47e7428796d0cd44ea85a2e30d5b801298d5b
Binary files /dev/null and b/dist/settings-vue-settings-admin-security.js differ
diff --git a/dist/settings-vue-settings-admin-security.js.LICENSE.txt b/dist/settings-vue-settings-admin-security.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..22872e6822c3823408664536564b75c75628f9eb
Binary files /dev/null and b/dist/settings-vue-settings-admin-security.js.LICENSE.txt differ
diff --git a/dist/settings-vue-settings-admin-security.js.map b/dist/settings-vue-settings-admin-security.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..1c033fbae22d0fbc9264885c91874021daddc956
Binary files /dev/null and b/dist/settings-vue-settings-admin-security.js.map differ
diff --git a/dist/settings-vue-settings-apps-users-management.js.LICENSE.txt b/dist/settings-vue-settings-apps-users-management.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..596fcfc4f1404032b03b7109937f66bc20849791
Binary files /dev/null and b/dist/settings-vue-settings-apps-users-management.js.LICENSE.txt differ
diff --git a/dist/settings-vue-settings-nextcloud-pdf.js b/dist/settings-vue-settings-nextcloud-pdf.js
new file mode 100644
index 0000000000000000000000000000000000000000..8e0618a34b652b419096b14bc78e3073c71e6eac
Binary files /dev/null and b/dist/settings-vue-settings-nextcloud-pdf.js differ
diff --git a/dist/settings-vue-settings-nextcloud-pdf.js.LICENSE.txt b/dist/settings-vue-settings-nextcloud-pdf.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b46a56359f84a78734593ae892007b19209a0850
Binary files /dev/null and b/dist/settings-vue-settings-nextcloud-pdf.js.LICENSE.txt differ
diff --git a/dist/settings-vue-settings-nextcloud-pdf.js.map b/dist/settings-vue-settings-nextcloud-pdf.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..35f449c13d2ef4880a32ed2d61052623e421c392
Binary files /dev/null and b/dist/settings-vue-settings-nextcloud-pdf.js.map differ
diff --git a/dist/settings-vue-settings-personal-info.js b/dist/settings-vue-settings-personal-info.js
new file mode 100644
index 0000000000000000000000000000000000000000..2993436dca7d45f6c425e28e20e17e3a472016b9
Binary files /dev/null and b/dist/settings-vue-settings-personal-info.js differ
diff --git a/dist/settings-vue-settings-personal-info.js.LICENSE.txt b/dist/settings-vue-settings-personal-info.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..39c78038c86060aa12798fa709cd44b06fe96c82
Binary files /dev/null and b/dist/settings-vue-settings-personal-info.js.LICENSE.txt differ
diff --git a/dist/settings-vue-settings-personal-info.js.map b/dist/settings-vue-settings-personal-info.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..a76c114d60daea1cf4f5284ba2aca720586eba93
Binary files /dev/null and b/dist/settings-vue-settings-personal-info.js.map differ
diff --git a/dist/settings-vue-settings-personal-security.js.LICENSE.txt b/dist/settings-vue-settings-personal-security.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1fa5c720be004fcd73a56bb467ac092aa95b5ab3
Binary files /dev/null and b/dist/settings-vue-settings-personal-security.js.LICENSE.txt differ
diff --git a/dist/settings-vue-settings-personal-webauthn.js b/dist/settings-vue-settings-personal-webauthn.js
new file mode 100644
index 0000000000000000000000000000000000000000..3dd8fd5690b1c863b922fc9dde54519db8ce60ca
Binary files /dev/null and b/dist/settings-vue-settings-personal-webauthn.js differ
diff --git a/dist/settings-vue-settings-personal-webauthn.js.LICENSE.txt b/dist/settings-vue-settings-personal-webauthn.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e5b02302a8470449223ac37ee8865ed58db1e924
Binary files /dev/null and b/dist/settings-vue-settings-personal-webauthn.js.LICENSE.txt differ
diff --git a/dist/settings-vue-settings-personal-webauthn.js.map b/dist/settings-vue-settings-personal-webauthn.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..251136910d2d6ac80a91a4376d7312136d896961
Binary files /dev/null and b/dist/settings-vue-settings-personal-webauthn.js.map differ
diff --git a/dist/systemtags-systemtags.js b/dist/systemtags-systemtags.js
new file mode 100644
index 0000000000000000000000000000000000000000..77f03d00815db6e47faf5955c4a37392f774e04f
Binary files /dev/null and b/dist/systemtags-systemtags.js differ
diff --git a/dist/systemtags-systemtags.js.LICENSE.txt b/dist/systemtags-systemtags.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fac411a1d9723ba3ff602567867c8052b3f823ef
Binary files /dev/null and b/dist/systemtags-systemtags.js.LICENSE.txt differ
diff --git a/dist/systemtags-systemtags.js.map b/dist/systemtags-systemtags.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..734fbeede43ed91b51d26b24a6ec0827c579c88f
Binary files /dev/null and b/dist/systemtags-systemtags.js.map differ
diff --git a/dist/twofactor_backupscodes-settings.js b/dist/twofactor_backupscodes-settings.js
new file mode 100644
index 0000000000000000000000000000000000000000..b6cb29b64f81cba2bd2d61dc4be038e53dbf8500
Binary files /dev/null and b/dist/twofactor_backupscodes-settings.js differ
diff --git a/dist/twofactor_backupscodes-settings.js.LICENSE.txt b/dist/twofactor_backupscodes-settings.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c6bd66ecc947f3604e4471dc249d23da70305ff1
Binary files /dev/null and b/dist/twofactor_backupscodes-settings.js.LICENSE.txt differ
diff --git a/dist/twofactor_backupscodes-settings.js.map b/dist/twofactor_backupscodes-settings.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..857bfcd043cf596578bb89f612c380bfa7cdc18d
Binary files /dev/null and b/dist/twofactor_backupscodes-settings.js.map differ
diff --git a/dist/updatenotification-updatenotification.js b/dist/updatenotification-updatenotification.js
new file mode 100644
index 0000000000000000000000000000000000000000..ce6baf6a21092e2480bf790a021e61502673a52d
Binary files /dev/null and b/dist/updatenotification-updatenotification.js differ
diff --git a/dist/updatenotification-updatenotification.js.LICENSE.txt b/dist/updatenotification-updatenotification.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c832619562ce0b6d58cb5de46cc355a46c569ae7
Binary files /dev/null and b/dist/updatenotification-updatenotification.js.LICENSE.txt differ
diff --git a/dist/updatenotification-updatenotification.js.map b/dist/updatenotification-updatenotification.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..49dbd4c1fb9947c9824f07543fe0259d153988bf
Binary files /dev/null and b/dist/updatenotification-updatenotification.js.map differ
diff --git a/dist/user-status-modal-299.js.LICENSE.txt b/dist/user-status-modal-299.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..de72ae1f265ca1f6b371be926a9aad533ff66c80
Binary files /dev/null and b/dist/user-status-modal-299.js.LICENSE.txt differ
diff --git a/dist/user_status-dashboard.js b/dist/user_status-dashboard.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b0d39c31077fb2c27cc8a89dbfe1818538516ca
Binary files /dev/null and b/dist/user_status-dashboard.js differ
diff --git a/dist/user_status-dashboard.js.LICENSE.txt b/dist/user_status-dashboard.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..de72ae1f265ca1f6b371be926a9aad533ff66c80
Binary files /dev/null and b/dist/user_status-dashboard.js.LICENSE.txt differ
diff --git a/dist/user_status-dashboard.js.map b/dist/user_status-dashboard.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..b1508b6320eaaedada3399ea4e99d290daf869c2
Binary files /dev/null and b/dist/user_status-dashboard.js.map differ
diff --git a/dist/user_status-menu.js.LICENSE.txt b/dist/user_status-menu.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cdb57d1ae976d3385d95b72aefdca923f7ee9bb3
Binary files /dev/null and b/dist/user_status-menu.js.LICENSE.txt differ
diff --git a/dist/weather_status-weather-status.js b/dist/weather_status-weather-status.js
new file mode 100644
index 0000000000000000000000000000000000000000..d342562f26c28b9dabcabb35855bf5f1778d38e1
Binary files /dev/null and b/dist/weather_status-weather-status.js differ
diff --git a/dist/weather_status-weather-status.js.LICENSE.txt b/dist/weather_status-weather-status.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e77baf79847e076ed8fb848d871d7b5968afa45f
Binary files /dev/null and b/dist/weather_status-weather-status.js.LICENSE.txt differ
diff --git a/dist/weather_status-weather-status.js.map b/dist/weather_status-weather-status.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..581d821a868acb3299e5e176f626646242c18ca8
Binary files /dev/null and b/dist/weather_status-weather-status.js.map differ
diff --git a/dist/workflowengine-workflowengine.js b/dist/workflowengine-workflowengine.js
new file mode 100644
index 0000000000000000000000000000000000000000..ee0fe7ef591d96414fc215498cdc432b24cdb023
Binary files /dev/null and b/dist/workflowengine-workflowengine.js differ
diff --git a/dist/workflowengine-workflowengine.js.LICENSE.txt b/dist/workflowengine-workflowengine.js.LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff66f1779c44443dabbb5c4a2d7389b6dc03b543
Binary files /dev/null and b/dist/workflowengine-workflowengine.js.LICENSE.txt differ
diff --git a/dist/workflowengine-workflowengine.js.map b/dist/workflowengine-workflowengine.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..9d95a92c05e2f52421300a2b1340fa9100bd96d3
Binary files /dev/null and b/dist/workflowengine-workflowengine.js.map differ
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index f5109c678fddffd09c0cc7ef271f0c7eb6180080..9cfc1aec6dd58af69f7ff076309e0cde2651715f 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -209,7 +209,8 @@ class TemplateLayout extends \OC_Template {
 		}
 
 		// Add the js files
-		$jsFiles = self::findJavascriptFiles(\OC_Util::$scripts);
+		// TODO: remove deprecated OC_Util injection
+		$jsFiles = self::findJavascriptFiles(array_merge(\OC_Util::$scripts, Util::getScripts()));
 		$this->assign('jsfiles', []);
 		if ($this->config->getSystemValue('installed', false) && $renderAs != TemplateResponse::RENDER_AS_ERROR) {
 			// this is on purpose outside of the if statement below so that the initial state is prefilled (done in the getConfig() call)
diff --git a/lib/private/legacy/OC_Template.php b/lib/private/legacy/OC_Template.php
index 61fc82dacbb7dfd38697e6dd7415a4dc7e6122bc..dcca41fb1d006175ca5c4a8ae06a1584ad0255d7 100644
--- a/lib/private/legacy/OC_Template.php
+++ b/lib/private/legacy/OC_Template.php
@@ -39,6 +39,7 @@
  */
 use OC\TemplateLayout;
 use OCP\AppFramework\Http\TemplateResponse;
+use OCP\Util;
 
 require_once __DIR__.'/template/functions.php';
 
@@ -111,14 +112,17 @@ class OC_Template extends \OC\Template\Base {
 			}
 			OC_Util::addStyle('css-variables', null, true);
 			OC_Util::addStyle('server', null, true);
-			OC_Util::addTranslations('core', null, true);
+
+			// include common nextcloud webpack bundle
+			Util::addScript('core', 'common');
+			Util::addScript('core', 'main');
+			Util::addTranslations('core');
 
 			if (\OC::$server->getSystemConfig()->getValue('installed', false) && !\OCP\Util::needUpgrade()) {
-				OC_Util::addScript('core', 'merged-template-prepend', true);
-				OC_Util::addScript('core', 'files_client', true);
-				OC_Util::addScript('core', 'files_fileinfo', true);
+				Util::addScript('core', 'files_fileinfo');
+				Util::addScript('core', 'files_client');
+				Util::addScript('core', 'merged-template-prepend');
 			}
-			OC_Util::addScript('core', 'main', true);
 
 			self::$initTemplateEngineFirstRun = false;
 		}
diff --git a/lib/private/legacy/template/functions.php b/lib/private/legacy/template/functions.php
index 6b18c9476b473dcc51f622774278fae4123f38b0..1b554c2329e01656b1ec91e5e0e489f68a492924 100644
--- a/lib/private/legacy/template/functions.php
+++ b/lib/private/legacy/template/functions.php
@@ -1,4 +1,7 @@
 <?php
+
+use OCP\Util;
+
 /**
  * @copyright Copyright (c) 2016, ownCloud, Inc.
  *
@@ -111,17 +114,21 @@ function print_unescaped($string) {
 
 /**
  * Shortcut for adding scripts to a page
+ * All scripts are forced to be loaded after core since
+ * they are coming from a template registration.
+ * Please consider moving them into the relevant controller
+ *
  * @param string $app the appname
  * @param string|string[] $file the filename,
  * if an array is given it will add all scripts
  */
 function script($app, $file = null) {
 	if (is_array($file)) {
-		foreach ($file as $f) {
-			OC_Util::addScript($app, $f);
+		foreach ($file as $script) {
+			Util::addScript($app, $script, 'core');
 		}
 	} else {
-		OC_Util::addScript($app, $file);
+		Util::addScript($app, $file, 'core');
 	}
 }
 
diff --git a/package-lock.json b/package-lock.json
index 356d8018e7b943530e8cb9b383a91fd2d5eac88d..4d071e7eacf0fb5d4bf3476deac319a00742ad92 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -31,7 +31,6 @@
         "blueimp-md5": "^2.19.0",
         "bootstrap": "^4.6.0",
         "camelcase": "^6.3.0",
-        "circular-dependency-plugin": "^5.2.2",
         "clipboard": "^2.0.8",
         "core-js": "^3.20.1",
         "css-vars-ponyfill": "^2.4.7",
@@ -53,7 +52,7 @@
         "moment-timezone": "^0.5.34",
         "nextcloud-vue-collections": "^0.9.0",
         "p-limit": "^4.0.0",
-        "p-queue": "^7.1.0",
+        "p-queue": "^6.6.2",
         "path": "^0.12.7",
         "query-string": "^7.0.1",
         "regenerator-runtime": "^0.13.9",
@@ -77,8 +76,7 @@
         "vuedraggable": "^2.24.3",
         "vuex": "^3.6.2",
         "vuex-router-sync": "^5.0.0",
-        "webdav": "^4.7.0",
-        "webpack-bundle-analyzer": "^4.5.0"
+        "webdav": "^4.7.0"
       },
       "devDependencies": {
         "@nextcloud/babel-config": "^1.0.0",
@@ -3171,11 +3169,6 @@
         "node": ">= 8"
       }
     },
-    "node_modules/@polka/url": {
-      "version": "1.0.0-next.21",
-      "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
-      "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g=="
-    },
     "node_modules/@sinonjs/commons": {
       "version": "1.8.3",
       "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
@@ -5088,17 +5081,6 @@
       "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
       "dev": true
     },
-    "node_modules/circular-dependency-plugin": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
-      "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==",
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "peerDependencies": {
-        "webpack": ">=4.0.1"
-      }
-    },
     "node_modules/cjs-module-lexer": {
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
@@ -5949,11 +5931,6 @@
         "url": "https://github.com/fb55/domutils?sponsor=1"
       }
     },
-    "node_modules/duplexer": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
-      "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
-    },
     "node_modules/editorconfig": {
       "version": "0.15.3",
       "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
@@ -8029,20 +8006,6 @@
       "dev": true,
       "optional": true
     },
-    "node_modules/gzip-size": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
-      "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
-      "dependencies": {
-        "duplexer": "^0.1.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/hammerjs": {
       "version": "2.0.8",
       "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
@@ -12046,14 +12009,6 @@
         "node": "*"
       }
     },
-    "node_modules/mrmime": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz",
-      "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==",
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/ms": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -12631,14 +12586,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/opener": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
-      "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
-      "bin": {
-        "opener": "bin/opener-bin.js"
-      }
-    },
     "node_modules/optionator": {
       "version": "0.9.1",
       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
@@ -12673,7 +12620,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
       "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
-      "dev": true,
       "engines": {
         "node": ">=4"
       }
@@ -12726,29 +12672,29 @@
       }
     },
     "node_modules/p-queue": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.1.0.tgz",
-      "integrity": "sha512-V+0vPJbhYkBqknPp0qnaz+dWcj8cNepfXZcsVIVEHPbFQXMPwrzCNIiM4FoxGtwHXtPzVCPHDvqCr1YrOJX2Gw==",
+      "version": "6.6.2",
+      "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz",
+      "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==",
       "dependencies": {
-        "eventemitter3": "^4.0.7",
-        "p-timeout": "^5.0.0"
+        "eventemitter3": "^4.0.4",
+        "p-timeout": "^3.2.0"
       },
       "engines": {
-        "node": ">=12"
+        "node": ">=8"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/p-timeout": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.0.2.tgz",
-      "integrity": "sha512-sEmji9Yaq+Tw+STwsGAE56hf7gMy9p0tQfJojIAamB7WHJYJKf1qlsg9jqBWG8q9VCxKPhZaP/AcXwEoBcYQhQ==",
-      "engines": {
-        "node": ">=12"
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
+      "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
+      "dependencies": {
+        "p-finally": "^1.0.0"
       },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+      "engines": {
+        "node": ">=8"
       }
     },
     "node_modules/p-try": {
@@ -14375,19 +14321,6 @@
       "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==",
       "dev": true
     },
-    "node_modules/sirv": {
-      "version": "1.0.19",
-      "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz",
-      "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==",
-      "dependencies": {
-        "@polka/url": "^1.0.0-next.20",
-        "mrmime": "^1.0.0",
-        "totalist": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 10"
-      }
-    },
     "node_modules/sisteransi": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@@ -15639,14 +15572,6 @@
       "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.11.2.tgz",
       "integrity": "sha512-bMBNKhZLPX/sDhpwM7KHIRUTtqCylQeoZDiEWy5zE7iDUJ92XmP8AKgDAp9rXx6pR5GXGFtQHHoH62toahbHgQ=="
     },
-    "node_modules/totalist": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
-      "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/tough-cookie": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
@@ -16500,139 +16425,6 @@
         }
       }
     },
-    "node_modules/webpack-bundle-analyzer": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz",
-      "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==",
-      "dependencies": {
-        "acorn": "^8.0.4",
-        "acorn-walk": "^8.0.0",
-        "chalk": "^4.1.0",
-        "commander": "^7.2.0",
-        "gzip-size": "^6.0.0",
-        "lodash": "^4.17.20",
-        "opener": "^1.5.2",
-        "sirv": "^1.0.7",
-        "ws": "^7.3.1"
-      },
-      "bin": {
-        "webpack-bundle-analyzer": "lib/bin/analyzer.js"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/acorn": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
-      "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
-      "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/commander": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-      "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/ws": {
-      "version": "7.5.6",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz",
-      "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==",
-      "engines": {
-        "node": ">=8.3.0"
-      },
-      "peerDependencies": {
-        "bufferutil": "^4.0.1",
-        "utf-8-validate": "^5.0.2"
-      },
-      "peerDependenciesMeta": {
-        "bufferutil": {
-          "optional": true
-        },
-        "utf-8-validate": {
-          "optional": true
-        }
-      }
-    },
     "node_modules/webpack-cli": {
       "version": "4.9.1",
       "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz",
@@ -19285,11 +19077,6 @@
         "fastq": "^1.6.0"
       }
     },
-    "@polka/url": {
-      "version": "1.0.0-next.21",
-      "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
-      "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g=="
-    },
     "@sinonjs/commons": {
       "version": "1.8.3",
       "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
@@ -20843,12 +20630,6 @@
       "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
       "dev": true
     },
-    "circular-dependency-plugin": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
-      "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==",
-      "requires": {}
-    },
     "cjs-module-lexer": {
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
@@ -21523,11 +21304,6 @@
         "domhandler": "^4.2.0"
       }
     },
-    "duplexer": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
-      "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
-    },
     "editorconfig": {
       "version": "0.15.3",
       "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
@@ -23101,14 +22877,6 @@
       "dev": true,
       "optional": true
     },
-    "gzip-size": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
-      "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
-      "requires": {
-        "duplexer": "^0.1.2"
-      }
-    },
     "hammerjs": {
       "version": "2.0.8",
       "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
@@ -26128,11 +25896,6 @@
         "moment": ">= 2.9.0"
       }
     },
-    "mrmime": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz",
-      "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ=="
-    },
     "ms": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -26594,11 +26357,6 @@
         "mimic-fn": "^2.1.0"
       }
     },
-    "opener": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
-      "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A=="
-    },
     "optionator": {
       "version": "0.9.1",
       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
@@ -26623,8 +26381,7 @@
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
-      "dev": true
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
     },
     "p-limit": {
       "version": "4.0.0",
@@ -26658,18 +26415,21 @@
       }
     },
     "p-queue": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.1.0.tgz",
-      "integrity": "sha512-V+0vPJbhYkBqknPp0qnaz+dWcj8cNepfXZcsVIVEHPbFQXMPwrzCNIiM4FoxGtwHXtPzVCPHDvqCr1YrOJX2Gw==",
+      "version": "6.6.2",
+      "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz",
+      "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==",
       "requires": {
-        "eventemitter3": "^4.0.7",
-        "p-timeout": "^5.0.0"
+        "eventemitter3": "^4.0.4",
+        "p-timeout": "^3.2.0"
       }
     },
     "p-timeout": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.0.2.tgz",
-      "integrity": "sha512-sEmji9Yaq+Tw+STwsGAE56hf7gMy9p0tQfJojIAamB7WHJYJKf1qlsg9jqBWG8q9VCxKPhZaP/AcXwEoBcYQhQ=="
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
+      "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
+      "requires": {
+        "p-finally": "^1.0.0"
+      }
     },
     "p-try": {
       "version": "1.0.0",
@@ -27871,16 +27631,6 @@
       "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==",
       "dev": true
     },
-    "sirv": {
-      "version": "1.0.19",
-      "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz",
-      "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==",
-      "requires": {
-        "@polka/url": "^1.0.0-next.20",
-        "mrmime": "^1.0.0",
-        "totalist": "^1.0.0"
-      }
-    },
     "sisteransi": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@@ -28838,11 +28588,6 @@
       "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.11.2.tgz",
       "integrity": "sha512-bMBNKhZLPX/sDhpwM7KHIRUTtqCylQeoZDiEWy5zE7iDUJ92XmP8AKgDAp9rXx6pR5GXGFtQHHoH62toahbHgQ=="
     },
-    "totalist": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
-      "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g=="
-    },
     "tough-cookie": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
@@ -29542,88 +29287,6 @@
         }
       }
     },
-    "webpack-bundle-analyzer": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz",
-      "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==",
-      "requires": {
-        "acorn": "^8.0.4",
-        "acorn-walk": "^8.0.0",
-        "chalk": "^4.1.0",
-        "commander": "^7.2.0",
-        "gzip-size": "^6.0.0",
-        "lodash": "^4.17.20",
-        "opener": "^1.5.2",
-        "sirv": "^1.0.7",
-        "ws": "^7.3.1"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "8.7.0",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
-          "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ=="
-        },
-        "acorn-walk": {
-          "version": "8.2.0",
-          "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
-          "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA=="
-        },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-        },
-        "commander": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-          "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "ws": {
-          "version": "7.5.6",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz",
-          "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==",
-          "requires": {}
-        }
-      }
-    },
     "webpack-cli": {
       "version": "4.9.1",
       "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz",
diff --git a/package.json b/package.json
index 29ac9b6ab28235c2b0fe99f8ba32383e079ca60b..236a206b50794ca6060543479a06a4e6707f80c0 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,6 @@
     "blueimp-md5": "^2.19.0",
     "bootstrap": "^4.6.0",
     "camelcase": "^6.3.0",
-    "circular-dependency-plugin": "^5.2.2",
     "clipboard": "^2.0.8",
     "core-js": "^3.20.1",
     "css-vars-ponyfill": "^2.4.7",
@@ -69,7 +68,7 @@
     "moment-timezone": "^0.5.34",
     "nextcloud-vue-collections": "^0.9.0",
     "p-limit": "^4.0.0",
-    "p-queue": "^7.1.0",
+    "p-queue": "^6.6.2",
     "path": "^0.12.7",
     "query-string": "^7.0.1",
     "regenerator-runtime": "^0.13.9",
@@ -93,8 +92,7 @@
     "vuedraggable": "^2.24.3",
     "vuex": "^3.6.2",
     "vuex-router-sync": "^5.0.0",
-    "webdav": "^4.7.0",
-    "webpack-bundle-analyzer": "^4.5.0"
+    "webdav": "^4.7.0"
   },
   "devDependencies": {
     "@nextcloud/babel-config": "^1.0.0",
diff --git a/webpack.common.js b/webpack.common.js
index 887dc9f8f5e8f1b04bef5320673d6eae1b8608ca..1f9cecc2d2aa9957bbbb09a53effb785121286ac 100644
--- a/webpack.common.js
+++ b/webpack.common.js
@@ -1,7 +1,6 @@
 /* eslint-disable camelcase */
 const { VueLoaderPlugin } = require('vue-loader')
 const path = require('path')
-const CircularDependencyPlugin = require('circular-dependency-plugin')
 const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except')
 const ESLintPlugin = require('eslint-webpack-plugin')
 const webpack = require('webpack')
@@ -113,25 +112,25 @@ module.exports = {
 	},
 
 	optimization: {
-		splitChunks: false,
-		// {
-		// 	automaticNameDelimiter: '-',
-		// 	cacheGroups: {
-		// 		vendors: {
-		// 			test: /[\\/]node_modules[\\/]/,
-		// 			enforce: true,
-		// 			name: 'nextcloud',
-		// 			chunks: 'all',
-		// 		},
-		// 	},
-		// },
+		splitChunks: {
+			automaticNameDelimiter: '-',
+			cacheGroups: {
+				vendors: {
+					// split every dependency into one bundle
+					test: /[\\/]node_modules[\\/]/,
+					enforce: true,
+					// necessary to keep this name to properly inject it
+					// see OC_Template.php
+					name: 'core-common',
+					chunks: 'all',
+				},
+			},
+		},
 	},
 
 	plugins: [
 		new VueLoaderPlugin(),
 		new ESLintPlugin(),
-		new CircularDependencyPlugin({
-		}),
 		new webpack.ProvidePlugin({
 			_: 'underscore',
 			$: 'jquery',
@@ -140,8 +139,6 @@ module.exports = {
 	],
 	resolve: {
 		alias: {
-			OC: path.resolve(__dirname, './core/src/OC'),
-			OCA: path.resolve(__dirname, './core/src/OCA'),
 			// make sure to use the handlebar runtime when importing
 			handlebars: 'handlebars/runtime',
 		},
@@ -149,6 +146,7 @@ module.exports = {
 		symlinks: false,
 		fallback: {
 			stream: require.resolve('stream-browserify'),
+			buffer: require.resolve('buffer'),
 		},
 	},
 }
diff --git a/webpack.modules.js b/webpack.modules.js
index c33bf240c8f9ad9ecfdcb3fe3cd10b88e69d9ec2..e794acf067a3a28befcde6ad2fffce409e83f773 100644
--- a/webpack.modules.js
+++ b/webpack.modules.js
@@ -50,9 +50,7 @@ module.exports = {
 	},
 	files: {
 		sidebar: path.join(__dirname, 'apps/files/src', 'sidebar.js'),
-		templates: path.join(__dirname, 'apps/files/src', 'templates.js'),
-		'files-app-settings': path.join(__dirname, 'apps/files/src', 'files-app-settings.js'),
-		'legacy-filelist-search': path.join(__dirname, 'apps/files/src', 'legacy/filelistSearch.js'),
+		main: path.join(__dirname, 'apps/files/src', 'main.js'),
 		'personal-settings': path.join(__dirname, 'apps/files/src', 'main-personal-settings.js'),
 	},
 	files_sharing: {