diff --git a/lib/gdk/config.rb b/lib/gdk/config.rb
index 5a7e8231800a6df1ecd134b0e44508e96d7e606e..9c078bd692567b38cea06c99c66e419a9bb1e3d2 100644
--- a/lib/gdk/config.rb
+++ b/lib/gdk/config.rb
@@ -169,6 +169,9 @@ class Config < ConfigSettings
       bool(:hot_module_reloading) { true }
       integer(:vue_version) { 2 }
 
+      bool(:__set_vue_version) do
+        config.vite.vue_version == 3
+      end
       bool(:__safe_enabled) do
         if config.vite?
           if config.webpack?
@@ -199,6 +202,9 @@ class Config < ConfigSettings
       array(:allowed_hosts) { config.gitlab.rails.allowed_hosts }
       integer(:vue_version) { 2 }
 
+      bool(:__set_vue_version) do
+        config.webpack.vue_version == 3
+      end
       string(:__dev_server_public) do
         if !config.webpack.live_reload
           ""
diff --git a/support/templates/Procfile.erb b/support/templates/Procfile.erb
index a9a25b28b5502c8b01d1c232e3911b1713853111..8356e461b70bd21fb5b04c7bb64a63ce0d6c907a 100644
--- a/support/templates/Procfile.erb
+++ b/support/templates/Procfile.erb
@@ -41,8 +41,8 @@ gitaly: exec /usr/bin/env <% config.gitaly.env.each do |k, v| %><%= k %>=<%= v %
 # Frontend services
 #
 <%= '#' unless config.gitlab_ui? %>gitlab-ui: exec /usr/bin/env NODE_ENV=development support/exec-cd gitlab-ui yarn build --watch
-<%= '#' unless config.vite.__safe_enabled? %>vite: exec /usr/bin/env GITLAB_UI_WATCH=<%= config.gitlab_ui? %> VITE_RUBY_PORT=<%= config.vite.port %> support/exec-cd gitlab bundle exec vite dev
-<%= '#' unless config.webpack? %>webpack: exec /usr/bin/env NODE_ENV=development DEV_SERVER_STATIC=<%= config.webpack.static?%> VUE_VERSION=<%= config.webpack.vue_version %> WEBPACK_VENDOR_DLL=<%= config.webpack.vendor_dll? %> DEV_SERVER_INCREMENTAL=<%= config.webpack.incremental? %> DEV_SERVER_INCREMENTAL_TTL=<%= config.webpack.incremental_ttl %> DEV_SERVER_LIVERELOAD=<%= config.webpack.live_reload? %> NO_SOURCEMAPS=<%= !config.webpack.sourcemaps? %> DEV_SERVER_PORT=<%= config.webpack.port %> DEV_SERVER_PUBLIC_ADDR=<%= config.webpack.__dev_server_public %> DEV_SERVER_HOST=<%= config.webpack.host %> DEV_SERVER_ALLOWED_HOSTS="<%= config.webpack.allowed_hosts.join(',') %>" GITLAB_UI_WATCH=<%= config.gitlab_ui? %> support/exec-cd gitlab yarn dev-server
+<%= '#' unless config.vite.__safe_enabled? %>vite: exec /usr/bin/env GITLAB_UI_WATCH=<%= config.gitlab_ui? %> <%= "VUE_VERSION=#{config.vite.vue_version}" if config.vite.__set_vue_version %> VITE_RUBY_PORT=<%= config.vite.port %> support/exec-cd gitlab bundle exec vite dev
+<%= '#' unless config.webpack? %>webpack: exec /usr/bin/env NODE_ENV=development DEV_SERVER_STATIC=<%= config.webpack.static?%> <%= "VUE_VERSION=#{config.webpack.vue_version}" if config.webpack.__set_vue_version %> WEBPACK_VENDOR_DLL=<%= config.webpack.vendor_dll? %> DEV_SERVER_INCREMENTAL=<%= config.webpack.incremental? %> DEV_SERVER_INCREMENTAL_TTL=<%= config.webpack.incremental_ttl %> DEV_SERVER_LIVERELOAD=<%= config.webpack.live_reload? %> NO_SOURCEMAPS=<%= !config.webpack.sourcemaps? %> DEV_SERVER_PORT=<%= config.webpack.port %> DEV_SERVER_PUBLIC_ADDR=<%= config.webpack.__dev_server_public %> DEV_SERVER_HOST=<%= config.webpack.host %> DEV_SERVER_ALLOWED_HOSTS="<%= config.webpack.allowed_hosts.join(',') %>" GITLAB_UI_WATCH=<%= config.gitlab_ui? %> support/exec-cd gitlab yarn dev-server
 <%= service(:RailsWeb).procfile_entry %>
 <%= '#' unless config.gitlab_pages? %>gitlab-pages: exec gitlab-pages/bin/gitlab-pages -config=<%= config.gdk_root.join('gitlab-pages', 'gitlab-pages.conf') %>