diff --git a/gui/slick/js/core.js b/gui/slick/js/core.js
index dcbad8e10fd960c6360412ed1255f94321bcb080..3735014e093551dd9f7ad6e68708310c566e0890 100644
--- a/gui/slick/js/core.js
+++ b/gui/slick/js/core.js
@@ -429,6 +429,27 @@ var SICKRAGE = {
             $('#log_dir').fileBrowser({title: _('Select log file folder location')});
             $('#sickrage_background_path').fileBrowser({title: _('Select Background Image'), key: 'sickrage_background_path', includeFiles: 1, fileTypes: ['images']});
             $('#custom_css_path').fileBrowser({title: _('Select CSS file'), key: 'custom_css_path', includeFiles: 1, fileTypes: ['css']});
+
+            // List remote branches available for checkout
+            const branchVersion = $('#branchVersion');
+            const branchVersionLabel = $('#branchVersionLabel');
+            const branchCheckout = $('#branchCheckout');
+            $.getJSON(srRoot + '/home/fetchRemoteBranches', function(branches) {
+                if (branches.length) {
+                    const baseOptionElem = $('<option></option>');
+                    let optionElem = null;
+                    for (let i = 0; i < branches.length; i++) {
+                        optionElem = baseOptionElem.clone().text(branches[i].name).attr('value', branches[i].name);
+                        optionElem.prop('selected', Boolean(branches[i].current));
+                        optionElem.appendTo(branchVersion);
+                    }
+                    branchCheckout.prop('disabled', false);
+                    branchVersionLabel.html(_('select branch to use (restart required)'));
+                } else {
+                    branchCheckout.prop('disabled', true);
+                    branchVersionLabel.html(_('error: No branches found.')).css({color: '#FF0000'});
+                }
+            });
         },
         backupRestore: function() {
             $('#Backup').on('click', function() {
diff --git a/gui/slick/js/core.min.js b/gui/slick/js/core.min.js
index b6380bcb441386ac99132955a5d5a3c969154d47..d5f0c577c8bccc4b411bc2b8c5afb9d949d0841b 100644
Binary files a/gui/slick/js/core.min.js and b/gui/slick/js/core.min.js differ
diff --git a/gui/slick/views/config_general.mako b/gui/slick/views/config_general.mako
index 18f53c0dab8adabf5290e8f894a261f3a5ee8625..0da50de5b68db34f73334108cd84b0d427e7e1a4 100644
--- a/gui/slick/views/config_general.mako
+++ b/gui/slick/views/config_general.mako
@@ -2,6 +2,7 @@
 <%!
     import os
     import datetime
+
     import sickbeard
     from sickbeard.common import SKIPPED, ARCHIVED, IGNORED, statusStrings, cpu_presets
     from sickbeard.sbdatetime import sbdatetime, date_presets, time_presets
@@ -1085,36 +1086,14 @@
                             <div class="col-lg-9 col-md-8 col-sm-7 col-xs-12 component-desc">
                                 <div class="row">
                                     <div class="col-md-12">
-                                        <select id="branchVersion" class="form-control form-control-inline input-sm pull-left" title="Branch Version">
-                                            <% gh_branch = sickbeard.versionCheckScheduler.action.list_remote_branches() %>
-                                            <% gh_credentials = (sickbeard.GIT_AUTH_TYPE == 0 and sickbeard.GIT_USERNAME and sickbeard.GIT_PASSWORD) \
-                                                                  or (sickbeard.GIT_AUTH_TYPE == 1 and sickbeard.GIT_TOKEN) %>
-                                            % if gh_branch:
-                                                % for cur_branch in gh_branch:
-                                                    % if gh_credentials and sickbeard.DEVELOPER == 1:
-                                                        <option value="${cur_branch}" ${('', 'selected="selected"')[sickbeard.BRANCH == cur_branch]}>${cur_branch}</option>
-                                                    % elif gh_credentials and cur_branch in ['master', 'develop']:
-                                                        <option value="${cur_branch}" ${('', 'selected="selected"')[sickbeard.BRANCH == cur_branch]}>${cur_branch}</option>
-                                                    % elif cur_branch == 'master':
-                                                        <option value="${cur_branch}" ${('', 'selected="selected"')[sickbeard.BRANCH == cur_branch]}>${cur_branch}</option>
-                                                    % endif
-                                                % endfor
-                                            % endif
-                                        </select>
-                                        % if not gh_branch:
-                                            <input class="btn btn-inline" style="margin-left: 6px;" type="button" id="branchCheckout" value="Checkout Branch" disabled>
-                                        % else:
-                                            <input class="btn btn-inline" style="margin-left: 6px;" type="button" id="branchCheckout" value="Checkout Branch">
-                                        % endif
+                                        <select id="branchVersion" class="form-control form-control-inline input-sm pull-left" title="Branch Version"></select>
+                                        <input class="btn btn-inline" style="margin-left: 6px;" type="button" id="branchCheckout" value="Checkout Branch" disabled>
                                     </div>
                                 </div>
                                 <div class="row">
                                     <div class="col-md-12">
-                                        % if not gh_branch:
-                                            <div class="clear-left" style="color:#FF0000"><label>${_('error: No branches found.')}</label></div>
-                                        % else:
-                                            <div class="clear-left"><label>${_('select branch to use (restart required)')}</label></div>
-                                        % endif
+                                        <% loading_spinner = static_url('images/loading16' + ('', '-dark')[sickbeard.THEME_NAME == 'dark'] + '.gif') %>
+                                        <div class="clear-left"><label id="branchVersionLabel"><img src="${loading_spinner}" height="16" width="16" /> Loading...</label></div>
                                     </div>
                                 </div>
                             </div>
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index da9227f0ab02a90858ecaa3ee5333a191072c6ab..7a89584eea2ec45ca38ccb9d8c8ea25340618c61 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -36,6 +36,7 @@ import adba
 import markdown2
 import six
 from dateutil import tz
+from github.GithubException import GithubException
 from libtrakt import TraktAPI
 from libtrakt.exceptions import traktException
 from mako.exceptions import RichTraceback
@@ -1301,6 +1302,29 @@ class Home(WebRoot):
         else:
             return self.redirect('/' + sickbeard.DEFAULT_PAGE + '/')
 
+    @staticmethod
+    def fetchRemoteBranches():
+        response = []
+        try:
+            gh_branches = sickbeard.versionCheckScheduler.action.list_remote_branches()
+        except GithubException:
+            gh_branches = None
+
+        if gh_branches:
+            gh_credentials = (sickbeard.GIT_AUTH_TYPE == 0 and sickbeard.GIT_USERNAME and sickbeard.GIT_PASSWORD or
+                              sickbeard.GIT_AUTH_TYPE == 1 and sickbeard.GIT_TOKEN)
+            for cur_branch in gh_branches:
+                branch_obj = {'name': cur_branch}
+                if cur_branch == sickbeard.BRANCH:
+                    branch_obj['current'] = True
+
+                if (gh_credentials and sickbeard.DEVELOPER == 1 or
+                    gh_credentials and cur_branch in ['master', 'develop'] or
+                    cur_branch == 'master'):
+                    response.append(branch_obj)
+
+        return json.dumps(response)
+
     def branchCheckout(self, branch):
         if sickbeard.BRANCH != branch:
             sickbeard.BRANCH = branch