diff --git a/CHANGELOG b/CHANGELOG
index f5416434ab1dab8c20dfdb7ed86dc97b119cb9a2..a00b98cfe071b82184f90ce64a087606fc3c5024 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -33,6 +33,7 @@ v 8.11.0 (unreleased)
   - Retrieve rendered HTML from cache in one request
   - Fix renaming repository when name contains invalid chararacters under project settings
   - Fix devise deprecation warnings.
+  - Update version_sorter and use new interface for faster tag sorting
   - Optimize checking if a user has read access to a list of issues !5370
   - Nokogiri's various parsing methods are now instrumented
   - Add simple identifier to public SSH keys (muteor)
diff --git a/Gemfile b/Gemfile
index 8f94ee72a322bad78fd45e89248ef7c1ba5bdc22..104929665e8f9aecefd91fbaba2970bd6bf18692 100644
--- a/Gemfile
+++ b/Gemfile
@@ -154,7 +154,7 @@ gem 'settingslogic', '~> 2.0.9'
 
 # Misc
 
-gem 'version_sorter', '~> 2.0.0'
+gem 'version_sorter', '~> 2.1.0'
 
 # Cache
 gem 'redis-rails', '~> 4.0.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index 870f9397b9e1e3e44a4b42b874587fcc57eece6d..87f08d6f372d07c5a82304c4c370398a00e04a04 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -778,7 +778,7 @@ GEM
     uniform_notifier (1.10.0)
     uuid (2.3.8)
       macaddr (~> 1.0)
-    version_sorter (2.0.0)
+    version_sorter (2.1.0)
     virtus (1.0.5)
       axiom-types (~> 0.1)
       coercible (~> 1.0)
@@ -989,7 +989,7 @@ DEPENDENCIES
   unf (~> 0.1.4)
   unicorn (~> 4.9.0)
   unicorn-worker-killer (~> 0.4.2)
-  version_sorter (~> 2.0.0)
+  version_sorter (~> 2.1.0)
   virtus (~> 1.0.1)
   vmstat (~> 2.1.1)
   web-console (~> 2.0)
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 701f867f67cf7c12f505d1a4d3b4e46a1b73e182..e56bac509a4ed1e774778c68b998565b8b1218b9 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -636,9 +636,7 @@ def branches_sorted_by(value)
   def tags_sorted_by(value)
     case value
     when 'name'
-      # Would be better to use `sort_by` but `version_sorter` only exposes
-      # `sort` and `rsort`
-      VersionSorter.rsort(tag_names).map { |tag_name| find_tag(tag_name) }
+      VersionSorter.rsort(tags) { |tag| tag.name }
     when 'updated_desc'
       tags_sorted_by_committed_date.reverse
     when 'updated_asc'