diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index 0e2ccf8579e1b8de4a6df6130b309cf6eaba8070..4a4ba307cad43de94940fe9ed9c6a85e79afd46d 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -10,7 +10,6 @@
 #include <compare>
 #include <cstddef>
 #include <filesystem>
-#include <forward_list>
 #include <functional>
 #include <string_view>
 #include <type_traits>
diff --git a/src/common/settings_common.h b/src/common/settings_common.h
index bfd1bad6419ddfcc3e6f68e0a10f1756266ab072..6f90ae90d9afae96d2dfd577a5e372e077538579 100644
--- a/src/common/settings_common.h
+++ b/src/common/settings_common.h
@@ -3,7 +3,6 @@
 
 #pragma once
 
-#include <forward_list>
 #include <functional>
 #include <map>
 #include <string>
diff --git a/src/yuzu/configuration/configuration_shared.cpp b/src/yuzu/configuration/configuration_shared.cpp
index 8c12d063e1770229d6ce0ebca71979a500509236..0ed6146a0f6362acc657948cc1f7f1e69ba06827 100644
--- a/src/yuzu/configuration/configuration_shared.cpp
+++ b/src/yuzu/configuration/configuration_shared.cpp
@@ -3,13 +3,14 @@
 
 #include <memory>
 #include <type_traits>
+#include <vector>
 #include "yuzu/configuration/configuration_shared.h"
 
 namespace ConfigurationShared {
 
-Tab::Tab(std::shared_ptr<std::forward_list<Tab*>> group, QWidget* parent) : QWidget(parent) {
+Tab::Tab(std::shared_ptr<std::vector<Tab*>> group, QWidget* parent) : QWidget(parent) {
     if (group != nullptr) {
-        group->push_front(this);
+        group->push_back(this);
     }
 }
 
diff --git a/src/yuzu/configuration/configuration_shared.h b/src/yuzu/configuration/configuration_shared.h
index 2a084b584ec5fb7c81eb079a2a91a3e560246137..31897a6b0a0098224f5b9111949a3be2ceb1ae26 100644
--- a/src/yuzu/configuration/configuration_shared.h
+++ b/src/yuzu/configuration/configuration_shared.h
@@ -3,8 +3,8 @@
 
 #pragma once
 
-#include <forward_list>
 #include <memory>
+#include <vector>
 #include <QString>
 #include <QWidget>
 #include <qobjectdefs.h>
@@ -17,7 +17,7 @@ class Tab : public QWidget {
     Q_OBJECT
 
 public:
-    explicit Tab(std::shared_ptr<std::forward_list<Tab*>> group, QWidget* parent = nullptr);
+    explicit Tab(std::shared_ptr<std::vector<Tab*>> group, QWidget* parent = nullptr);
     ~Tab();
 
     virtual void ApplyConfiguration() = 0;
diff --git a/src/yuzu/configuration/configure_audio.cpp b/src/yuzu/configuration/configure_audio.cpp
index 11714b86db6ed49db55d0df6063925842ad46a92..7eb7528980c7b240733be22b4982e6a9253cbd36 100644
--- a/src/yuzu/configuration/configure_audio.cpp
+++ b/src/yuzu/configuration/configure_audio.cpp
@@ -1,8 +1,8 @@
 // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include <forward_list>
 #include <memory>
+#include <vector>
 #include <QComboBox>
 
 #include "audio_core/sink/sink.h"
@@ -17,7 +17,7 @@
 #include "yuzu/uisettings.h"
 
 ConfigureAudio::ConfigureAudio(const Core::System& system_,
-                               std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_,
+                               std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
                                const ConfigurationShared::Builder& builder, QWidget* parent)
     : Tab(group_, parent), ui(std::make_unique<Ui::ConfigureAudio>()), system{system_} {
     ui->setupUi(this);
@@ -31,11 +31,11 @@ ConfigureAudio::~ConfigureAudio() = default;
 void ConfigureAudio::Setup(const ConfigurationShared::Builder& builder) {
     auto& layout = *ui->audio_widget->layout();
 
-    std::forward_list<Settings::BasicSetting*> settings;
+    std::vector<Settings::BasicSetting*> settings;
 
     auto push = [&](Settings::Category category) {
         for (auto* setting : Settings::values.linkage.by_category[category]) {
-            settings.push_front(setting);
+            settings.push_back(setting);
         }
     };
 
diff --git a/src/yuzu/configuration/configure_audio.h b/src/yuzu/configuration/configure_audio.h
index 94606f210e40e13059ddd4099d2cd3d265d22bce..79538e81c61f0899e73ecff9127802f1269f2686 100644
--- a/src/yuzu/configuration/configure_audio.h
+++ b/src/yuzu/configuration/configure_audio.h
@@ -3,9 +3,9 @@
 
 #pragma once
 
-#include <forward_list>
 #include <functional>
 #include <memory>
+#include <vector>
 #include <QWidget>
 #include "yuzu/configuration/configuration_shared.h"
 
@@ -26,7 +26,7 @@ class Builder;
 class ConfigureAudio : public ConfigurationShared::Tab {
 public:
     explicit ConfigureAudio(const Core::System& system_,
-                            std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group,
+                            std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
                             const ConfigurationShared::Builder& builder, QWidget* parent = nullptr);
     ~ConfigureAudio() override;
 
@@ -51,7 +51,7 @@ private:
 
     const Core::System& system;
 
-    std::forward_list<std::function<void(bool)>> apply_funcs{};
+    std::vector<std::function<void(bool)>> apply_funcs{};
 
     QComboBox* sink_combo_box;
     QComboBox* output_device_combo_box;
diff --git a/src/yuzu/configuration/configure_cpu.cpp b/src/yuzu/configuration/configure_cpu.cpp
index 7d122906ef8cf562a30addc9988db9c3d778b3b2..8ed9a65f343f3fbf93324502a37f0545e5d8b645 100644
--- a/src/yuzu/configuration/configure_cpu.cpp
+++ b/src/yuzu/configuration/configure_cpu.cpp
@@ -1,9 +1,9 @@
 // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include <forward_list>
 #include <memory>
 #include <typeinfo>
+#include <vector>
 #include <QComboBox>
 #include "common/common_types.h"
 #include "common/settings.h"
@@ -15,7 +15,7 @@
 #include "yuzu/configuration/configure_cpu.h"
 
 ConfigureCpu::ConfigureCpu(const Core::System& system_,
-                           std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_,
+                           std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
                            const ConfigurationShared::Builder& builder, QWidget* parent)
     : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureCpu>()}, system{system_},
       combobox_translations(builder.ComboboxTranslations()) {
@@ -37,10 +37,10 @@ void ConfigureCpu::Setup(const ConfigurationShared::Builder& builder) {
     auto* unsafe_layout = ui->unsafe_widget->layout();
     std::map<std::string, QWidget*> unsafe_hold{};
 
-    std::forward_list<Settings::BasicSetting*> settings;
+    std::vector<Settings::BasicSetting*> settings;
     const auto push = [&](Settings::Category category) {
         for (const auto setting : Settings::values.linkage.by_category[category]) {
-            settings.push_front(setting);
+            settings.push_back(setting);
         }
     };
 
diff --git a/src/yuzu/configuration/configure_cpu.h b/src/yuzu/configuration/configure_cpu.h
index ab19c0ba1883357a027feaa71426e247b6f39389..61a6de7aa7ad9739f68c5f01ce0f4c6043d6b7a0 100644
--- a/src/yuzu/configuration/configure_cpu.h
+++ b/src/yuzu/configuration/configure_cpu.h
@@ -4,6 +4,7 @@
 #pragma once
 
 #include <memory>
+#include <vector>
 #include <QWidget>
 #include "yuzu/configuration/configuration_shared.h"
 #include "yuzu/configuration/shared_translation.h"
@@ -25,7 +26,7 @@ class Builder;
 class ConfigureCpu : public ConfigurationShared::Tab {
 public:
     explicit ConfigureCpu(const Core::System& system_,
-                          std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group,
+                          std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
                           const ConfigurationShared::Builder& builder, QWidget* parent = nullptr);
     ~ConfigureCpu() override;
 
@@ -45,7 +46,7 @@ private:
     const Core::System& system;
 
     const ConfigurationShared::ComboboxTranslationMap& combobox_translations;
-    std::forward_list<std::function<void(bool)>> apply_funcs{};
+    std::vector<std::function<void(bool)>> apply_funcs{};
 
     QComboBox* accuracy_combobox;
 };
diff --git a/src/yuzu/configuration/configure_dialog.h b/src/yuzu/configuration/configure_dialog.h
index 1bfc9f9d0363181bf73f627330d47d4192f90ea3..96e9a8c3e5bd8f2f0fcb82fba5f3173c1891cf99 100644
--- a/src/yuzu/configuration/configure_dialog.h
+++ b/src/yuzu/configuration/configure_dialog.h
@@ -3,7 +3,6 @@
 
 #pragma once
 
-#include <forward_list>
 #include <memory>
 #include <vector>
 #include <QDialog>
@@ -74,7 +73,7 @@ private:
 
     Core::System& system;
     std::unique_ptr<ConfigurationShared::Builder> builder;
-    std::forward_list<ConfigurationShared::Tab*> tab_group;
+    std::vector<ConfigurationShared::Tab*> tab_group;
 
     std::unique_ptr<ConfigureAudio> audio_tab;
     std::unique_ptr<ConfigureCpu> cpu_tab;
diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp
index 54113543af02ff23d7277eb98a7a21226bc940b3..fc43a531d8cf6bb0626f1296fa5f3f805b6229f8 100644
--- a/src/yuzu/configuration/configure_general.cpp
+++ b/src/yuzu/configuration/configure_general.cpp
@@ -3,6 +3,7 @@
 
 #include <functional>
 #include <utility>
+#include <vector>
 #include <QMessageBox>
 #include "common/settings.h"
 #include "core/core.h"
@@ -12,10 +13,9 @@
 #include "yuzu/configuration/shared_widget.h"
 #include "yuzu/uisettings.h"
 
-ConfigureGeneral::ConfigureGeneral(
-    const Core::System& system_,
-    std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_,
-    const ConfigurationShared::Builder& builder, QWidget* parent)
+ConfigureGeneral::ConfigureGeneral(const Core::System& system_,
+                                   std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
+                                   const ConfigurationShared::Builder& builder, QWidget* parent)
     : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGeneral>()}, system{system_} {
     ui->setupUi(this);
 
diff --git a/src/yuzu/configuration/configure_general.h b/src/yuzu/configuration/configure_general.h
index f8ed3f8ab98353ff2c8e891c872ebc81081151ca..2d953f679381787ea3a2e0a4cfc11c922d6846df 100644
--- a/src/yuzu/configuration/configure_general.h
+++ b/src/yuzu/configuration/configure_general.h
@@ -5,6 +5,7 @@
 
 #include <functional>
 #include <memory>
+#include <vector>
 #include <QWidget>
 #include "yuzu/configuration/configuration_shared.h"
 
@@ -26,7 +27,7 @@ class Builder;
 class ConfigureGeneral : public ConfigurationShared::Tab {
 public:
     explicit ConfigureGeneral(const Core::System& system_,
-                              std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group,
+                              std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
                               const ConfigurationShared::Builder& builder,
                               QWidget* parent = nullptr);
     ~ConfigureGeneral() override;
@@ -46,7 +47,7 @@ private:
 
     std::unique_ptr<Ui::ConfigureGeneral> ui;
 
-    std::forward_list<std::function<void(bool)>> apply_funcs{};
+    std::vector<std::function<void(bool)>> apply_funcs{};
 
     const Core::System& system;
 };
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp
index 31e87ccf5d721ed8021df47e265c3a404c1ca54a..a6f711597f05f8b7d49f45c2e6e55c514aa27fe7 100644
--- a/src/yuzu/configuration/configure_graphics.cpp
+++ b/src/yuzu/configuration/configure_graphics.cpp
@@ -77,11 +77,11 @@ static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode)
     }
 }
 
-ConfigureGraphics::ConfigureGraphics(
-    const Core::System& system_, std::vector<VkDeviceInfo::Record>& records_,
-    const std::function<void()>& expose_compute_option_,
-    std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_,
-    const ConfigurationShared::Builder& builder, QWidget* parent)
+ConfigureGraphics::ConfigureGraphics(const Core::System& system_,
+                                     std::vector<VkDeviceInfo::Record>& records_,
+                                     const std::function<void()>& expose_compute_option_,
+                                     std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
+                                     const ConfigurationShared::Builder& builder, QWidget* parent)
     : ConfigurationShared::Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGraphics>()},
       records{records_}, expose_compute_option{expose_compute_option_}, system{system_},
       combobox_translations{builder.ComboboxTranslations()},
@@ -228,7 +228,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) {
     QLayout& graphics_layout = *ui->graphics_widget->layout();
 
     std::map<u32, QWidget*> hold_graphics;
-    std::forward_list<QWidget*> hold_api;
+    std::vector<QWidget*> hold_api;
 
     for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) {
         ConfigurationShared::Widget* widget = [&]() {
@@ -268,12 +268,12 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) {
             }
         } else if (setting->Id() == Settings::values.vulkan_device.Id()) {
             // Keep track of vulkan_device's combobox so we can populate it
-            hold_api.push_front(widget);
+            hold_api.push_back(widget);
             vulkan_device_combobox = widget->combobox;
             vulkan_device_widget = widget;
         } else if (setting->Id() == Settings::values.shader_backend.Id()) {
             // Keep track of shader_backend's combobox so we can populate it
-            hold_api.push_front(widget);
+            hold_api.push_back(widget);
             shader_backend_combobox = widget->combobox;
             shader_backend_widget = widget;
         } else if (setting->Id() == Settings::values.vsync_mode.Id()) {
@@ -296,7 +296,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) {
     // Background color is too specific to build into the new system, so we manage it here
     // (3 settings, all collected into a single widget with a QColor to manage on top)
     if (Settings::IsConfiguringGlobal()) {
-        apply_funcs.push_front([this](bool powered_on) {
+        apply_funcs.push_back([this](bool powered_on) {
             Settings::values.bg_red.SetValue(static_cast<u8>(bg_color.red()));
             Settings::values.bg_green.SetValue(static_cast<u8>(bg_color.green()));
             Settings::values.bg_blue.SetValue(static_cast<u8>(bg_color.blue()));
@@ -322,7 +322,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) {
             bg_restore_button->setEnabled(true);
         });
 
-        apply_funcs.push_front([bg_restore_button, this](bool powered_on) {
+        apply_funcs.push_back([bg_restore_button, this](bool powered_on) {
             const bool using_global = !bg_restore_button->isEnabled();
             Settings::values.bg_red.SetGlobal(using_global);
             Settings::values.bg_green.SetGlobal(using_global);
diff --git a/src/yuzu/configuration/configure_graphics.h b/src/yuzu/configuration/configure_graphics.h
index 633a28414cd840e55e5493a2822c0aa159f488d2..02d9b00f171205644f683d990299b3aa49ac9152 100644
--- a/src/yuzu/configuration/configure_graphics.h
+++ b/src/yuzu/configuration/configure_graphics.h
@@ -46,7 +46,7 @@ public:
     explicit ConfigureGraphics(const Core::System& system_,
                                std::vector<VkDeviceInfo::Record>& records,
                                const std::function<void()>& expose_compute_option_,
-                               std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group,
+                               std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
                                const ConfigurationShared::Builder& builder,
                                QWidget* parent = nullptr);
     ~ConfigureGraphics() override;
@@ -80,7 +80,7 @@ private:
     std::unique_ptr<Ui::ConfigureGraphics> ui;
     QColor bg_color;
 
-    std::forward_list<std::function<void(bool)>> apply_funcs{};
+    std::vector<std::function<void(bool)>> apply_funcs{};
 
     std::vector<VkDeviceInfo::Record>& records;
     std::vector<QString> vulkan_devices;
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp
index 757e4659d16023144aec4f22f4e6c3c2245cd0c8..f60214ff9cb521ed4c53b82a7313e8449f801fb7 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.cpp
+++ b/src/yuzu/configuration/configure_graphics_advanced.cpp
@@ -1,6 +1,7 @@
 // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
+#include <vector>
 #include <QLabel>
 #include <qnamespace.h>
 #include "common/settings.h"
@@ -12,8 +13,7 @@
 #include "yuzu/configuration/shared_widget.h"
 
 ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(
-    const Core::System& system_,
-    std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_,
+    const Core::System& system_, std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
     const ConfigurationShared::Builder& builder, QWidget* parent)
     : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGraphicsAdvanced>()}, system{system_} {
 
diff --git a/src/yuzu/configuration/configure_graphics_advanced.h b/src/yuzu/configuration/configure_graphics_advanced.h
index 5530827d10a6cf1252f1d5338700687469e975be..78b5389c3263b7d235398e88e949c371d1554fb4 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.h
+++ b/src/yuzu/configuration/configure_graphics_advanced.h
@@ -4,6 +4,7 @@
 #pragma once
 
 #include <memory>
+#include <vector>
 #include <QWidget>
 #include "yuzu/configuration/configuration_shared.h"
 
@@ -22,8 +23,7 @@ class Builder;
 class ConfigureGraphicsAdvanced : public ConfigurationShared::Tab {
 public:
     explicit ConfigureGraphicsAdvanced(
-        const Core::System& system_,
-        std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group,
+        const Core::System& system_, std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
         const ConfigurationShared::Builder& builder, QWidget* parent = nullptr);
     ~ConfigureGraphicsAdvanced() override;
 
@@ -41,7 +41,7 @@ private:
 
     const Core::System& system;
 
-    std::forward_list<std::function<void(bool)>> apply_funcs;
+    std::vector<std::function<void(bool)>> apply_funcs;
 
     QWidget* checkbox_enable_compute_pipelines{};
 };
diff --git a/src/yuzu/configuration/configure_per_game.cpp b/src/yuzu/configuration/configure_per_game.cpp
index cee8e726d73d55b086a8d049d3f812c47fb4541b..cd8b3012e84253a3eeb0559db98c481effb24412 100644
--- a/src/yuzu/configuration/configure_per_game.cpp
+++ b/src/yuzu/configuration/configure_per_game.cpp
@@ -44,7 +44,7 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id_, const std::st
     : QDialog(parent),
       ui(std::make_unique<Ui::ConfigurePerGame>()), title_id{title_id_}, system{system_},
       builder{std::make_unique<ConfigurationShared::Builder>(this, !system_.IsPoweredOn())},
-      tab_group{std::make_shared<std::forward_list<ConfigurationShared::Tab*>>()} {
+      tab_group{std::make_shared<std::vector<ConfigurationShared::Tab*>>()} {
     const auto file_path = std::filesystem::path(Common::FS::ToU8String(file_name));
     const auto config_file_name = title_id == 0 ? Common::FS::PathToUTF8String(file_path.filename())
                                                 : fmt::format("{:016X}", title_id);
diff --git a/src/yuzu/configuration/configure_per_game.h b/src/yuzu/configuration/configure_per_game.h
index 4ddd18c1fff792fa268072a5783d27461d64366f..1a727f32c00d0030fdf50e2d5d7b9bbf5d314baf 100644
--- a/src/yuzu/configuration/configure_per_game.h
+++ b/src/yuzu/configuration/configure_per_game.h
@@ -3,7 +3,6 @@
 
 #pragma once
 
-#include <forward_list>
 #include <memory>
 #include <string>
 #include <vector>
@@ -77,7 +76,7 @@ private:
 
     Core::System& system;
     std::unique_ptr<ConfigurationShared::Builder> builder;
-    std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> tab_group;
+    std::shared_ptr<std::vector<ConfigurationShared::Tab*>> tab_group;
 
     std::unique_ptr<ConfigurePerGameAddons> addons_tab;
     std::unique_ptr<ConfigureAudio> audio_tab;
diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp
index 7884886c32ac7a9171f7056c7f2659ab6cde27b6..93a0a41028adb1040310f0ac459f3f5e5f64cb0c 100644
--- a/src/yuzu/configuration/configure_system.cpp
+++ b/src/yuzu/configuration/configure_system.cpp
@@ -2,8 +2,8 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 
 #include <chrono>
-#include <forward_list>
 #include <optional>
+#include <vector>
 
 #include <QCheckBox>
 #include <QComboBox>
@@ -44,9 +44,9 @@ static bool IsValidLocale(u32 region_index, u32 language_index) {
     return ((LOCALE_BLOCKLIST.at(region_index) >> language_index) & 1) == 0;
 }
 
-ConfigureSystem::ConfigureSystem(
-    Core::System& system_, std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_,
-    const ConfigurationShared::Builder& builder, QWidget* parent)
+ConfigureSystem::ConfigureSystem(Core::System& system_,
+                                 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
+                                 const ConfigurationShared::Builder& builder, QWidget* parent)
     : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureSystem>()}, system{system_} {
     ui->setupUi(this);
 
@@ -95,10 +95,10 @@ void ConfigureSystem::Setup(const ConfigurationShared::Builder& builder) {
     std::map<u32, QWidget*> core_hold{};
     std::map<u32, QWidget*> system_hold{};
 
-    std::forward_list<Settings::BasicSetting*> settings;
+    std::vector<Settings::BasicSetting*> settings;
     auto push = [&settings](auto& list) {
         for (auto setting : list) {
-            settings.push_front(setting);
+            settings.push_back(setting);
         }
     };
 
diff --git a/src/yuzu/configuration/configure_system.h b/src/yuzu/configuration/configure_system.h
index f63aedda01cd70b832119e251e92e0a90d8a57e2..eab99a48a74a52e6adc87a4d97961f14a903b67c 100644
--- a/src/yuzu/configuration/configure_system.h
+++ b/src/yuzu/configuration/configure_system.h
@@ -3,9 +3,9 @@
 
 #pragma once
 
-#include <forward_list>
 #include <functional>
 #include <memory>
+#include <vector>
 
 #include <QWidget>
 #include "yuzu/configuration/configuration_shared.h"
@@ -29,7 +29,7 @@ class Builder;
 class ConfigureSystem : public ConfigurationShared::Tab {
 public:
     explicit ConfigureSystem(Core::System& system_,
-                             std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group,
+                             std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
                              const ConfigurationShared::Builder& builder,
                              QWidget* parent = nullptr);
     ~ConfigureSystem() override;
@@ -43,7 +43,7 @@ private:
 
     void Setup(const ConfigurationShared::Builder& builder);
 
-    std::forward_list<std::function<void(bool)>> apply_funcs{};
+    std::vector<std::function<void(bool)>> apply_funcs{};
 
     std::unique_ptr<Ui::ConfigureSystem> ui;
     bool enabled = false;
diff --git a/src/yuzu/configuration/shared_widget.cpp b/src/yuzu/configuration/shared_widget.cpp
index c9ab461f62c5e5694ab691cac873cfffd6b9bce6..cf33bce2bde752b7bfcdae2d9e311aaa89369084 100644
--- a/src/yuzu/configuration/shared_widget.cpp
+++ b/src/yuzu/configuration/shared_widget.cpp
@@ -547,7 +547,7 @@ Widget::~Widget() = default;
 
 Widget::Widget(Settings::BasicSetting* setting_, const TranslationMap& translations_,
                const ComboboxTranslationMap& combobox_translations_, QWidget* parent_,
-               bool runtime_lock_, std::forward_list<std::function<void(bool)>>& apply_funcs_,
+               bool runtime_lock_, std::vector<std::function<void(bool)>>& apply_funcs_,
                RequestType request, bool managed, float multiplier,
                Settings::BasicSetting* other_setting, const QString& suffix)
     : QWidget(parent_), parent{parent_}, translations{translations_},
@@ -584,7 +584,7 @@ Widget::Widget(Settings::BasicSetting* setting_, const TranslationMap& translati
         return;
     }
 
-    apply_funcs.push_front([load_func, setting_](bool powered_on) {
+    apply_funcs.push_back([load_func, setting_](bool powered_on) {
         if (setting_->RuntimeModfiable() || !powered_on) {
             load_func();
         }
@@ -607,7 +607,7 @@ Builder::Builder(QWidget* parent_, bool runtime_lock_)
 Builder::~Builder() = default;
 
 Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
-                             std::forward_list<std::function<void(bool)>>& apply_funcs,
+                             std::vector<std::function<void(bool)>>& apply_funcs,
                              RequestType request, bool managed, float multiplier,
                              Settings::BasicSetting* other_setting, const QString& suffix) const {
     if (!Settings::IsConfiguringGlobal() && !setting->Switchable()) {
@@ -624,7 +624,7 @@ Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
 }
 
 Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
-                             std::forward_list<std::function<void(bool)>>& apply_funcs,
+                             std::vector<std::function<void(bool)>>& apply_funcs,
                              Settings::BasicSetting* other_setting, RequestType request,
                              const QString& suffix) const {
     return BuildWidget(setting, apply_funcs, request, true, 1.0f, other_setting, suffix);
diff --git a/src/yuzu/configuration/shared_widget.h b/src/yuzu/configuration/shared_widget.h
index b3f9efd78041f3644610fdf28a76e79be1e37471..e64693bab3ea9e1fe68a47268f4dd3c23666be1b 100644
--- a/src/yuzu/configuration/shared_widget.h
+++ b/src/yuzu/configuration/shared_widget.h
@@ -3,10 +3,10 @@
 
 #pragma once
 
-#include <forward_list>
 #include <functional>
 #include <memory>
 #include <string>
+#include <vector>
 #include <QString>
 #include <QStringLiteral>
 #include <QWidget>
@@ -62,7 +62,7 @@ public:
      */
     explicit Widget(Settings::BasicSetting* setting, const TranslationMap& translations,
                     const ComboboxTranslationMap& combobox_translations, QWidget* parent,
-                    bool runtime_lock, std::forward_list<std::function<void(bool)>>& apply_funcs_,
+                    bool runtime_lock, std::vector<std::function<void(bool)>>& apply_funcs_,
                     RequestType request = RequestType::Default, bool managed = true,
                     float multiplier = 1.0f, Settings::BasicSetting* other_setting = nullptr,
                     const QString& suffix = QStringLiteral(""));
@@ -125,7 +125,7 @@ private:
     const TranslationMap& translations;
     const ComboboxTranslationMap& combobox_enumerations;
     Settings::BasicSetting& setting;
-    std::forward_list<std::function<void(bool)>>& apply_funcs;
+    std::vector<std::function<void(bool)>>& apply_funcs;
 
     bool created{false};
     bool runtime_lock{false};
@@ -137,13 +137,13 @@ public:
     ~Builder();
 
     Widget* BuildWidget(Settings::BasicSetting* setting,
-                        std::forward_list<std::function<void(bool)>>& apply_funcs,
+                        std::vector<std::function<void(bool)>>& apply_funcs,
                         RequestType request = RequestType::Default, bool managed = true,
                         float multiplier = 1.0f, Settings::BasicSetting* other_setting = nullptr,
                         const QString& suffix = QStringLiteral("")) const;
 
     Widget* BuildWidget(Settings::BasicSetting* setting,
-                        std::forward_list<std::function<void(bool)>>& apply_funcs,
+                        std::vector<std::function<void(bool)>>& apply_funcs,
                         Settings::BasicSetting* other_setting,
                         RequestType request = RequestType::Default,
                         const QString& suffix = QStringLiteral("")) const;