diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt
index af60aebcf..8c7821b43 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt
@@ -13,7 +13,7 @@ import eu.kanade.presentation.browse.SourceFeedScreen
 import eu.kanade.presentation.browse.components.SourceFeedAddDialog
 import eu.kanade.presentation.browse.components.SourceFeedDeleteDialog
 import eu.kanade.presentation.util.Screen
-import eu.kanade.tachiyomi.source.CatalogueSource
+import eu.kanade.tachiyomi.source.Source
 import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreen
 import eu.kanade.tachiyomi.ui.browse.source.browse.SourceFilterDialog
 import eu.kanade.tachiyomi.ui.manga.MangaScreen
@@ -150,19 +150,19 @@ class SourceFeedScreen(val sourceId: Long) : Screen() {
         navigator.replace(BrowseSourceScreen(sourceId, search, savedSearch = savedSearch, filtersJson = filters))
     }
 
-    private fun onLatestClick(navigator: Navigator, source: CatalogueSource) {
+    private fun onLatestClick(navigator: Navigator, source: Source) {
         navigator.replace(BrowseSourceScreen(source.id, GetRemoteManga.QUERY_LATEST))
     }
 
-    fun onBrowseClick(navigator: Navigator, source: CatalogueSource) {
+    fun onBrowseClick(navigator: Navigator, source: Source) {
         navigator.replace(BrowseSourceScreen(source.id, GetRemoteManga.QUERY_POPULAR))
     }
 
-    private fun onSavedSearchClick(navigator: Navigator, source: CatalogueSource, savedSearch: SavedSearch) {
+    private fun onSavedSearchClick(navigator: Navigator, source: Source, savedSearch: SavedSearch) {
         navigator.replace(BrowseSourceScreen(source.id, listingQuery = null, savedSearch = savedSearch.id))
     }
 
-    private fun onSearchClick(navigator: Navigator, source: CatalogueSource, query: String) {
+    private fun onSearchClick(navigator: Navigator, source: Source, query: String) {
         onBrowseClick(navigator, source.id, query.nullIfBlank())
     }
 }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreenModel.kt
index f69cb4c04..bc26ada82 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreenModel.kt
@@ -69,7 +69,7 @@ open class SourceFeedScreenModel(
     private val getExhSavedSearch: GetExhSavedSearch = Injekt.get(),
 ) : StateScreenModel<SourceFeedState>(SourceFeedState()) {
 
-    val source = sourceManager.getOrStub(sourceId) as CatalogueSource
+    val source = sourceManager.getOrStub(sourceId)
 
     val sourceIsMangaDex = sourceId in mangaDexSourceIds
 
@@ -78,24 +78,26 @@ open class SourceFeedScreenModel(
     val startExpanded by uiPreferences.expandFilters().asState(coroutineScope)
 
     init {
-        setFilters(source.getFilterList())
+        if (source is CatalogueSource) {
+            setFilters(source.getFilterList())
 
-        coroutineScope.launchIO {
-            val searches = loadSearches()
-            mutableState.update { it.copy(savedSearches = searches) }
-        }
-
-        getFeedSavedSearchBySourceId.subscribe(source.id)
-            .onEach {
-                val items = getSourcesToGetFeed(it)
-                mutableState.update { state ->
-                    state.copy(
-                        items = items,
-                    )
-                }
-                getFeed(items)
+            coroutineScope.launchIO {
+                val searches = loadSearches()
+                mutableState.update { it.copy(savedSearches = searches) }
             }
-            .launchIn(coroutineScope)
+
+            getFeedSavedSearchBySourceId.subscribe(source.id)
+                .onEach {
+                    val items = getSourcesToGetFeed(it)
+                    mutableState.update { state ->
+                        state.copy(
+                            items = items,
+                        )
+                    }
+                    getFeed(items)
+                }
+                .launchIn(coroutineScope)
+        }
     }
 
     fun setFilters(filters: FilterList) {
@@ -126,6 +128,7 @@ open class SourceFeedScreenModel(
     }
 
     private suspend fun getSourcesToGetFeed(feedSavedSearch: List<FeedSavedSearch>): List<SourceFeedUI> {
+        if (source !is CatalogueSource) return emptyList()
         val savedSearches = getSavedSearchBySourceIdFeed.await(source.id)
             .associateBy { it.id }
 
@@ -144,6 +147,7 @@ open class SourceFeedScreenModel(
      * Initiates get manga per feed.
      */
     private fun getFeed(feedSavedSearch: List<SourceFeedUI>) {
+        if (source !is CatalogueSource) return
         coroutineScope.launch {
             feedSavedSearch.map { sourceFeed ->
                 async {
@@ -204,10 +208,11 @@ open class SourceFeedScreenModel(
         }
     }
     private suspend fun loadSearches() =
-        getExhSavedSearch.await(source.id, source::getFilterList)
+        getExhSavedSearch.await(source.id, (source as CatalogueSource)::getFilterList)
             .sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, EXHSavedSearch::name))
 
     fun onFilter(onBrowseClick: (query: String?, filters: String?) -> Unit) {
+        if (source !is CatalogueSource) return
         coroutineScope.launchIO {
             val allDefault = state.value.filters == source.getFilterList()
             dismissDialog()
@@ -230,6 +235,7 @@ open class SourceFeedScreenModel(
         onBrowseClick: (query: String?, searchId: Long) -> Unit,
         onToast: (Int) -> Unit,
     ) {
+        if (source !is CatalogueSource) return
         coroutineScope.launchIO {
             if (search.filterList == null && state.value.filters.isNotEmpty()) {
                 withUIContext {