diff --git a/loader/src/ui/mods/sources/ModListSource.cpp b/loader/src/ui/mods/sources/ModListSource.cpp
index f2698bf0..cacbc84e 100644
--- a/loader/src/ui/mods/sources/ModListSource.cpp
+++ b/loader/src/ui/mods/sources/ModListSource.cpp
@@ -104,12 +104,12 @@ ListenerResult InvalidateCacheFilter::handle(MiniFunction<Callback> fn, Invalida
 
 InvalidateCacheFilter::InvalidateCacheFilter(ModListSource* src) : m_source(src) {}
 
-typename ModListSource::PageLoadTask ModListSource::loadPage(size_t page, bool update) {
-    if (!update && m_cachedPages.contains(page)) {
+typename ModListSource::PageLoadTask ModListSource::loadPage(size_t page, bool forceUpdate) {
+    if (!forceUpdate && m_cachedPages.contains(page)) {
         return PageLoadTask::immediate(Ok(m_cachedPages.at(page)));
     }
     m_cachedPages.erase(page);
-    return this->fetchPage(page, PER_PAGE).map(
+    return this->fetchPage(page, PER_PAGE, forceUpdate).map(
         [this, page](Result<ProvidedMods, LoadPageError>* result) -> Result<Page, LoadPageError> {
             if (result->isOk()) {
                 auto data = result->unwrap();
@@ -178,7 +178,7 @@ void InstalledModListSource::resetQuery() {
     };
 }
 
-InstalledModListSource::ProviderTask InstalledModListSource::fetchPage(size_t page, size_t pageSize) {
+InstalledModListSource::ProviderTask InstalledModListSource::fetchPage(size_t page, size_t pageSize, bool forceUpdate) {
     m_query.page = page;
     m_query.pageSize = pageSize;
 
@@ -277,10 +277,10 @@ void ServerModListSource::resetQuery() {
     }
 }
 
-ServerModListSource::ProviderTask ServerModListSource::fetchPage(size_t page, size_t pageSize) {
+ServerModListSource::ProviderTask ServerModListSource::fetchPage(size_t page, size_t pageSize, bool forceUpdate) {
     m_query.page = page;
     m_query.pageSize = pageSize;
-    return server::getMods(m_query).map(
+    return server::getMods(m_query, !forceUpdate).map(
         [](Result<server::ServerModsList, server::ServerError>* result) -> ProviderTask::Value {
             if (result->isOk()) {
                 auto list = result->unwrap();
@@ -355,7 +355,7 @@ bool ServerModListSource::wantsRestart() const {
 }
 
 void ModPackListSource::resetQuery() {}
-ModPackListSource::ProviderTask ModPackListSource::fetchPage(size_t page, size_t pageSize) {
+ModPackListSource::ProviderTask ModPackListSource::fetchPage(size_t page, size_t pageSize, bool forceUpdate) {
     return ProviderTask::immediate(Err(LoadPageError("Coming soon ;)")));
 }
 
diff --git a/loader/src/ui/mods/sources/ModListSource.hpp b/loader/src/ui/mods/sources/ModListSource.hpp
index c17aeab4..a0bff941 100644
--- a/loader/src/ui/mods/sources/ModListSource.hpp
+++ b/loader/src/ui/mods/sources/ModListSource.hpp
@@ -60,7 +60,7 @@ protected:
     std::optional<size_t> m_cachedItemCount;
 
     virtual void resetQuery() = 0;
-    virtual ProviderTask fetchPage(size_t page, size_t pageSize) = 0;
+    virtual ProviderTask fetchPage(size_t page, size_t pageSize, bool forceUpdate) = 0;
     virtual void setSearchQuery(std::string const& query) = 0;
 
     ModListSource();
@@ -77,8 +77,8 @@ public:
     virtual std::unordered_set<std::string> getModTags() const = 0;
     virtual void setModTags(std::unordered_set<std::string> const& tags) = 0;
 
-    // Load page, uses cache if possible unless `update` is true
-    PageLoadTask loadPage(size_t page, bool update = false);
+    // Load page, uses cache if possible unless `forceUpdate` is true
+    PageLoadTask loadPage(size_t page, bool forceUpdate = false);
     std::optional<size_t> getPageCount() const;
     std::optional<size_t> getItemCount() const;
 
@@ -110,7 +110,7 @@ protected:
     InstalledModsQuery m_query;
 
     void resetQuery() override;
-    ProviderTask fetchPage(size_t page, size_t pageSize) override;
+    ProviderTask fetchPage(size_t page, size_t pageSize, bool forceUpdate) override;
     void setSearchQuery(std::string const& query) override;
 
     InstalledModListSource(bool onlyUpdates);
@@ -140,7 +140,7 @@ protected:
     server::ModsQuery m_query;
 
     void resetQuery() override;
-    ProviderTask fetchPage(size_t page, size_t pageSize) override;
+    ProviderTask fetchPage(size_t page, size_t pageSize, bool forceUpdate) override;
     void setSearchQuery(std::string const& query) override;
 
     ServerModListSource(ServerModListType type);
@@ -160,7 +160,7 @@ public:
 class ModPackListSource : public ModListSource {
 protected:
     void resetQuery() override;
-    ProviderTask fetchPage(size_t page, size_t pageSize) override;
+    ProviderTask fetchPage(size_t page, size_t pageSize, bool forceUpdate) override;
     void setSearchQuery(std::string const& query) override;
 
     ModPackListSource();