diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 2d735b905970f648c34f19c31c2df77e4a25fca5..824175c8a6c8f217ee428f8b3db84d50ad07a61c 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -298,7 +298,8 @@ class ApplicationController < ActionController::Base
   end
 
   def set_filters_params
-    params[:sort] ||= 'id_desc'
+    set_default_sort
+
     params[:scope] = 'all' if params[:scope].blank?
     params[:state] = 'opened' if params[:state].blank?
 
@@ -405,4 +406,24 @@ class ApplicationController < ActionController::Base
 
     current_user.nil? && root_path == request.path
   end
+
+  private
+
+  def set_default_sort
+    key = if is_a_listing_page_for?('issues') || is_a_listing_page_for?('merge_requests')
+            'issuable_sort'
+          end
+
+    cookies[key]  = params[:sort] if key && params[:sort].present?
+    params[:sort] = cookies[key] if key
+    params[:sort] ||= 'id_desc'
+  end
+
+  def is_a_listing_page_for?(page_type)
+    controller_name, action_name = params.values_at(:controller, :action)
+
+    (controller_name == "projects/#{page_type}" && action_name == 'index') ||
+    (controller_name == 'groups' && action_name == page_type) ||
+    (controller_name == 'dashboard' && action_name == page_type)
+  end
 end
diff --git a/app/models/group.rb b/app/models/group.rb
index 5a31b46920ca174c736151ec0cacd38cbd0a1f94..76042b3e3fd341ef46c1e8bc3d2cf0acd13d0aa1 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -19,7 +19,7 @@ require 'file_size_validator'
 class Group < Namespace
   include Gitlab::ConfigHelper
   include Referable
-  
+
   has_many :group_members, dependent: :destroy, as: :source, class_name: 'GroupMember'
   alias_method :members, :group_members
   has_many :users, through: :group_members
diff --git a/features/dashboard/dashboard.feature b/features/dashboard/dashboard.feature
index b667b587c5bcff42602ff188930590a14c331c48..c3b3577c449c42a727bd5b83327896046522ce08 100644
--- a/features/dashboard/dashboard.feature
+++ b/features/dashboard/dashboard.feature
@@ -41,3 +41,33 @@ Feature: Dashboard
     And user with name "John Doe" left project "Shop"
     When I visit dashboard activity page
     Then I should see "John Doe left project Shop" event
+
+  @javascript
+  Scenario: Sorting Issues
+    Given I visit dashboard issues page
+    And I sort the list by "Oldest updated"
+    And I visit dashboard activity page
+    And I visit dashboard issues page
+    Then The list should be sorted by "Oldest updated"
+
+  @javascript
+  Scenario: Visiting Project's issues after sorting
+    Given I visit dashboard issues page
+    And I sort the list by "Oldest updated"
+    And I visit project "Shop" issues page
+    Then The list should be sorted by "Oldest updated"
+
+  @javascript
+  Scenario: Sorting Merge Requests
+    Given I visit dashboard merge requests page
+    And I sort the list by "Oldest updated"
+    And I visit dashboard activity page
+    And I visit dashboard merge requests page
+    Then The list should be sorted by "Oldest updated"
+
+  @javascript
+  Scenario: Visiting Project's merge requests after sorting
+    Given I visit dashboard merge requests page
+    And I sort the list by "Oldest updated"
+    And I visit project "Shop" merge requests page
+    Then The list should be sorted by "Oldest updated"
diff --git a/features/project/issues/issues.feature b/features/project/issues/issues.feature
index 1502b0952cd681c1f55fd7ecc290f269ccff8551..0b3d03aa2a58fdcbbd2c7f9b9bff63ab3a3b319b 100644
--- a/features/project/issues/issues.feature
+++ b/features/project/issues/issues.feature
@@ -59,6 +59,28 @@ Feature: Project Issues
     And I sort the list by "Last updated"
     Then I should see "Release 0.4" at the top
 
+  @javascript
+  Scenario: Visiting Issues after being sorted the list
+    Given I visit project "Shop" issues page
+    And I sort the list by "Oldest updated"
+    And I visit my project's home page
+    And I visit project "Shop" issues page
+    Then The list should be sorted by "Oldest updated"
+
+  @javascript
+  Scenario: Visiting Merge Requests after being sorted the list
+    Given I visit project "Shop" issues page
+    And I sort the list by "Oldest updated"
+    And I visit project "Shop" merge requests page
+    Then The list should be sorted by "Oldest updated"
+
+  @javascript
+  Scenario: Visiting Merge Requests from a differente Project after sorting
+    Given I visit project "Shop" merge requests page
+    And I sort the list by "Oldest updated"
+    And I visit dashboard merge requests page
+    Then The list should be sorted by "Oldest updated"
+
   @javascript
   Scenario: I search issue
     Given I fill in issue search with "Re"
diff --git a/features/project/merge_requests.feature b/features/project/merge_requests.feature
index 4f780aa680fa4046517c90ce3cce3c85d96b7db1..ca1ee6b3c2b8935475870b82de4e4887f330173c 100644
--- a/features/project/merge_requests.feature
+++ b/features/project/merge_requests.feature
@@ -84,6 +84,28 @@ Feature: Project Merge Requests
     And I sort the list by "Last updated"
     Then I should see "Bug NS-04" at the top
 
+  @javascript
+  Scenario: Visiting Merge Requests after being sorted the list
+    Given I visit project "Shop" merge requests page
+    And I sort the list by "Oldest updated"
+    And I visit my project's home page
+    And I visit project "Shop" merge requests page
+    Then The list should be sorted by "Oldest updated"
+
+  @javascript
+  Scenario: Visiting Issues after being sorted the list
+    Given I visit project "Shop" merge requests page
+    And I sort the list by "Oldest updated"
+    And I visit project "Shop" issues page
+    Then The list should be sorted by "Oldest updated"
+
+  @javascript
+  Scenario: Visiting Merge Requests from a differente Project after sorting
+    Given I visit project "Shop" merge requests page
+    And I sort the list by "Oldest updated"
+    And I visit dashboard merge requests page
+    Then The list should be sorted by "Oldest updated"
+
   @javascript
   Scenario: Visiting Merge Requests after commenting on diffs
     Given project "Shop" have "Bug NS-05" open merge request with diffs inside
diff --git a/features/steps/dashboard/dashboard.rb b/features/steps/dashboard/dashboard.rb
index 63f0ec2b6e86dea2712621482591ecd03110e6f9..5062e3488441ee55a4b452d20252b8f336c81a5e 100644
--- a/features/steps/dashboard/dashboard.rb
+++ b/features/steps/dashboard/dashboard.rb
@@ -2,6 +2,7 @@ class Spinach::Features::Dashboard < Spinach::FeatureSteps
   include SharedAuthentication
   include SharedPaths
   include SharedProject
+  include SharedIssuable
 
   step 'I should see "New Project" link' do
     expect(page).to have_link "New project"
diff --git a/features/steps/shared/issuable.rb b/features/steps/shared/issuable.rb
index 4c5f7488efbd8383572c9bd1c277a33d32a7cc18..25c2b476f43b0ed21488b2435ea14a4832710edd 100644
--- a/features/steps/shared/issuable.rb
+++ b/features/steps/shared/issuable.rb
@@ -106,6 +106,19 @@ module SharedIssuable
     edit_issuable
   end
 
+  step 'I sort the list by "Oldest updated"' do
+    find('button.dropdown-toggle.btn').click
+    page.within('ul.dropdown-menu.dropdown-menu-align-right li') do
+      click_link "Oldest updated"
+    end
+  end
+
+  step 'The list should be sorted by "Oldest updated"' do
+    page.within('div.dropdown.inline.prepend-left-10') do
+      expect(page.find('button.dropdown-toggle.btn')).to have_content('Oldest updated')
+    end
+  end
+
   def create_issuable_for_project(project_name:, title:, type: :issue)
     project = Project.find_by(name: project_name)