diff --git a/app/assets/javascripts/project.js b/app/assets/javascripts/project.js
index 016d999d77ee4675003ba90be7da9509481dfa3e..78ab69206af1163543645ba6eb12b8ea14fba3e2 100644
--- a/app/assets/javascripts/project.js
+++ b/app/assets/javascripts/project.js
@@ -63,7 +63,8 @@
             return $.ajax({
               url: $dropdown.data('refs-url'),
               data: {
-                ref: $dropdown.data('ref')
+                ref: $dropdown.data('ref'),
+                search: term
               },
               dataType: "json"
             }).done(function(refs) {
@@ -72,16 +73,26 @@
           },
           selectable: true,
           filterable: true,
+          filterRemote: true,
           filterByText: true,
           fieldName: $dropdown.data('field-name'),
           renderRow: function(ref) {
-            var link;
+            var li = document.createElement('li');
+
             if (ref.header != null) {
-              return $('<li />').addClass('dropdown-header').text(ref.header);
+              li.className = 'dropdown-header';
+              li.textContent = ref.header;
             } else {
-              link = $('<a />').attr('href', '#').addClass(ref === selected ? 'is-active' : '').text(ref).attr('data-ref', ref);
-              return $('<li />').append(link);
+              var link = document.createElement('a');
+              link.href = '#';
+              link.className = ref.name === selected ? 'is-active' : '';
+              link.textContent = ref.name;
+              link.dataset.ref = ref.name;
+
+              li.appendChild(link);
             }
+            
+            return li;
           },
           id: function(obj, $el) {
             return $el.attr('data-ref');
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index a8a18b4fa1673c7a48a9c6fd8aee27f564f12cca..fe0670aa24601bf49434227376f71b08f6099b79 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -267,12 +267,15 @@ class ProjectsController < Projects::ApplicationController
   end
 
   def refs
+    branches = BranchesFinder.new(@repository, params).execute
+
     options = {
-      'Branches' => @repository.branch_names,
+      'Branches' => Kaminari.paginate_array(branches).page(params[:page]).per(100),
     }
 
     unless @repository.tag_count.zero?
-      options['Tags'] = VersionSorter.rsort(@repository.tag_names)
+      tags = TagsFinder.new(@repository, params).execute
+      options['Tags'] = Kaminari.paginate_array(tags).page(params[:page]).per(100)
     end
 
     # If reference is commit id - we should add it to branch/tag selectbox