From 15af18a7006f47b0f7fee6d895ed216fce08154a Mon Sep 17 00:00:00 2001
From: Jannik Lehmann <jlehmann@gitlab.com>
Date: Tue, 11 Jul 2023 20:11:27 +0000
Subject: [PATCH] Reorder head tags to optimize rendering performance

---
 app/views/layouts/_head.html.haml | 27 ++++++++++-----------------
 1 file changed, 10 insertions(+), 17 deletions(-)

diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml
index 69a36e6c2e356..53ecad1b47497 100644
--- a/app/views/layouts/_head.html.haml
+++ b/app/views/layouts/_head.html.haml
@@ -3,12 +3,11 @@
 - omit_og = sign_in_with_redirect?
 %head{ omit_og ? { } : { prefix: "og: http://ogp.me/ns#" } }
   %meta{ charset: "utf-8" }
-
-  %title= page_title(site_name)
-
-  = render 'layouts/loading_hints'
-
   %meta{ 'http-equiv' => 'X-UA-Compatible', content: 'IE=edge' }
+  %meta{ name: 'viewport', content: 'width=device-width, initial-scale=1, maximum-scale=1' }
+  %title= page_title(site_name)
+  = Gon::Base.render_data(nonce: content_security_policy_nonce)
+  = yield :project_javascripts
 
   = render 'layouts/startup_js'
   = yield :startup_js
@@ -18,8 +17,6 @@
 
   = yield :prefetch_asset_tags
 
-  = favicon_link_tag favicon, id: 'favicon', data: { original_href: favicon }, type: 'image/png'
-
   - diffs_colors = user_diffs_colors
   = stylesheet_link_tag "themes/#{user_application_theme_css_filename}" if user_application_theme_css_filename
   = render 'layouts/diffs_colors_css', diffs_colors if diffs_colors.present? || request.path == profile_preferences_path
@@ -42,8 +39,7 @@
 
   = stylesheet_link_tag 'performance_bar' if performance_bar_enabled?
   = render 'layouts/snowplow'
-
-  = Gon::Base.render_data(nonce: content_security_policy_nonce)
+  = render 'layouts/loading_hints'
 
   = render_if_exists 'layouts/header/translations'
   - if Feature.enabled?(:enable_new_sentry_clientside_integration, current_user) && Gitlab::CurrentSettings.sentry_enabled
@@ -58,8 +54,6 @@
 
   = webpack_controller_bundle_tags
 
-  = yield :project_javascripts
-
   - unless omit_og
     -# Open Graph - http://ogp.me/
     %meta{ property: 'og:type', content: "object" }
@@ -78,16 +72,13 @@
     %meta{ property: 'twitter:image', content: page_image }
     = page_card_meta_tags
 
-  %meta{ name: "description", content: page_description }
-
-  %link{ rel: 'manifest', href: manifest_path(format: :json) }
-  %meta{ name: 'viewport', content: 'width=device-width, initial-scale=1, maximum-scale=1' }
-  %meta{ name: 'theme-color', content: user_theme_primary_color }
-
   = csrf_meta_tags
   = csp_meta_tag
   = action_cable_meta_tag
 
+  %link{ rel: 'manifest', href: manifest_path(format: :json) }
+  = favicon_link_tag favicon, id: 'favicon', data: { original_href: favicon }, type: 'image/png'
+
   -# Apple Safari/iOS home screen icons
   = favicon_link_tag 'apple-touch-icon.png', rel: 'apple-touch-icon'
 
@@ -100,3 +91,5 @@
   = render 'layouts/matomo' if extra_config.has_key?('matomo_url') && extra_config.has_key?('matomo_site_id')
   -# This is needed by [GitLab JH](https://gitlab.com/gitlab-jh/gitlab/-/issues/184)
   = render_if_exists "layouts/frontend_monitor"
+  %meta{ name: "description", content: page_description }
+  %meta{ name: 'theme-color', content: user_theme_primary_color }
-- 
GitLab