diff --git a/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java b/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java
index 4dfbf6c08..7d56863eb 100644
--- a/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java
+++ b/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java
@@ -171,6 +171,7 @@ public class SettingsActivity extends AppCompatActivity implements
     @Override
     public boolean onPreferenceStartFragment(final PreferenceFragmentCompat caller,
                                              final Preference preference) {
+        preference.getExtras()
         showSettingsFragment(instantiateFragment(preference.getFragment()));
         return true;
     }
@@ -221,20 +222,24 @@ public class SettingsActivity extends AppCompatActivity implements
         searchContainer.findViewById(R.id.toolbar_search_clear)
                 .setOnClickListener(ev -> resetSearchText());
 
-        prepareSearchConfig();
+        ensureSearchRepresentsApplicationState();
 
         // Build search configuration using SettingsResourceRegistry
         final PreferenceSearchConfiguration config = new PreferenceSearchConfiguration();
-        SettingsResourceRegistry.getInstance().getAllEntries().stream()
-                .filter(SettingsResourceRegistry.SettingRegistryEntry::isSearchable)
-                .map(SettingsResourceRegistry.SettingRegistryEntry::getPreferencesResId)
-                .forEach(config::index);
+
 
         // Build search items
         final PreferenceParser parser = new PreferenceParser(getApplicationContext(), config);
         final PreferenceSearcher searcher = new PreferenceSearcher(config);
-        config.getFiles().stream()
+
+        // Find all searchable SettingsResourceRegistry fragments
+        SettingsResourceRegistry.getInstance().getAllEntries().stream()
+                .filter(SettingsResourceRegistry.SettingRegistryEntry::isSearchable)
+                // Get the resId
+                .map(SettingsResourceRegistry.SettingRegistryEntry::getPreferencesResId)
+                // Parse
                 .map(parser::parse)
+                // Add it to the searcher
                 .forEach(searcher::add);
 
         if (restored) {
@@ -252,7 +257,13 @@ public class SettingsActivity extends AppCompatActivity implements
         searchFragment.setSearcher(searcher);
     }
 
-    private void prepareSearchConfig() {
+    /**
+     * Ensures that the search shows the correct/available search results.
+     * <br/>
+     * Some features are e.g. only available for debug builds, these should not
+     * be found when searching inside a release.
+     */
+    private void ensureSearchRepresentsApplicationState() {
         // Check if the update settings are available
         if (!CheckForNewAppVersion.isReleaseApk(App.getApp())) {
             SettingsResourceRegistry.getInstance()
diff --git a/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceParser.java b/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceParser.java
index afd2c1b4f..ccddee97b 100644
--- a/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceParser.java
+++ b/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceParser.java
@@ -39,27 +39,22 @@ public class PreferenceParser {
     }
 
     public List<PreferenceSearchItem> parse(
-            final PreferenceSearchConfiguration.SearchIndexItem item
+            @XmlRes final int resId
     ) {
-        Objects.requireNonNull(item, "item can't be null");
-
         final List<PreferenceSearchItem> results = new ArrayList<>();
-        final XmlPullParser xpp = context.getResources().getXml(item.getResId());
+        final XmlPullParser xpp = context.getResources().getXml(resId);
 
         try {
             xpp.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
             xpp.setFeature(XmlPullParser.FEATURE_REPORT_NAMESPACE_ATTRIBUTES, true);
 
             final List<String> breadcrumbs = new ArrayList<>();
-            if (!TextUtils.isEmpty(item.getBreadcrumb())) {
-                breadcrumbs.add(item.getBreadcrumb());
-            }
             while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
                 if (xpp.getEventType() == XmlPullParser.START_TAG) {
                     final PreferenceSearchItem result = parseSearchResult(
                             xpp,
                             joinBreadcrumbs(breadcrumbs),
-                            item.getResId()
+                            resId
                     );
 
                     if (!searchConfiguration.getParserIgnoreElements().contains(xpp.getName())
@@ -79,7 +74,7 @@ public class PreferenceParser {
                 xpp.next();
             }
         } catch (final Exception e) {
-            Log.w(TAG, "Failed to parse resid=" + item.getResId(), e);
+            Log.w(TAG, "Failed to parse resid=" + resId, e);
         }
         return results;
     }
diff --git a/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearchConfiguration.java b/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearchConfiguration.java
index 1c9dc99aa..3d49140fb 100644
--- a/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearchConfiguration.java
+++ b/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearchConfiguration.java
@@ -1,14 +1,10 @@
 package org.schabi.newpipe.settings.preferencesearch;
 
-import android.os.Parcel;
-import android.os.Parcelable;
 import android.text.TextUtils;
 
-import androidx.annotation.XmlRes;
 import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceScreen;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
@@ -16,8 +12,6 @@ import java.util.function.BinaryOperator;
 import java.util.stream.Stream;
 
 public class PreferenceSearchConfiguration {
-    private final ArrayList<SearchIndexItem> itemsToIndex = new ArrayList<>();
-
     private BinaryOperator<String> breadcrumbConcat =
             (s1, s2) -> TextUtils.isEmpty(s1) ? s2 : (s1 + " > " + s2);
 
@@ -38,27 +32,11 @@ public class PreferenceSearchConfiguration {
         this.searcher = Objects.requireNonNull(searcher);
     }
 
-    /**
-     * Adds a new file to the index.
-     *
-     * @param resId The preference file to index
-     * @return SearchIndexItem
-     */
-    public SearchIndexItem index(@XmlRes final int resId) {
-        final SearchIndexItem item = new SearchIndexItem(resId, this);
-        itemsToIndex.add(item);
-        return item;
-    }
-
-    public List<SearchIndexItem> getFiles() {
-        return itemsToIndex;
-    }
-
     public BinaryOperator<String> getBreadcrumbConcat() {
         return breadcrumbConcat;
     }
 
-    public PreferenceSearchFunction getSearchMatcher() {
+    public PreferenceSearchFunction getSearcher() {
         return searcher;
     }
 
@@ -70,81 +48,6 @@ public class PreferenceSearchConfiguration {
         return parserContainerElements;
     }
 
-    /**
-     * Adds a given R.xml resource to the search index.
-     */
-    public static final class SearchIndexItem implements Parcelable {
-        private String breadcrumb = "";
-        @XmlRes
-        private final int resId;
-        private final PreferenceSearchConfiguration searchConfiguration;
-
-        /**
-         * Includes the given R.xml resource in the index.
-         *
-         * @param resId               The resource to index
-         * @param searchConfiguration The configuration for the search
-         */
-        private SearchIndexItem(
-                @XmlRes final int resId,
-                final PreferenceSearchConfiguration searchConfiguration
-        ) {
-            this.resId = resId;
-            this.searchConfiguration = searchConfiguration;
-        }
-
-        /**
-         * Adds a breadcrumb.
-         *
-         * @param breadcrumb The breadcrumb to add
-         * @return For chaining
-         */
-        @SuppressWarnings("HiddenField")
-        public SearchIndexItem withBreadcrumb(final String breadcrumb) {
-            this.breadcrumb =
-                    searchConfiguration.getBreadcrumbConcat().apply(this.breadcrumb, breadcrumb);
-            return this;
-        }
-
-        @XmlRes
-        int getResId() {
-            return resId;
-        }
-
-        String getBreadcrumb() {
-            return breadcrumb;
-        }
-
-        public static final Creator<SearchIndexItem> CREATOR = new Creator<>() {
-            @Override
-            public SearchIndexItem createFromParcel(final Parcel in) {
-                return new SearchIndexItem(in);
-            }
-
-            @Override
-            public SearchIndexItem[] newArray(final int size) {
-                return new SearchIndexItem[size];
-            }
-        };
-
-        private SearchIndexItem(final Parcel parcel) {
-            this.breadcrumb = parcel.readString();
-            this.resId = parcel.readInt();
-            this.searchConfiguration = null;
-        }
-
-        @Override
-        public void writeToParcel(final Parcel dest, final int flags) {
-            dest.writeString(this.breadcrumb);
-            dest.writeInt(this.resId);
-        }
-
-        @Override
-        public int describeContents() {
-            return 0;
-        }
-    }
-
     @FunctionalInterface
     public interface PreferenceSearchFunction {
         Stream<PreferenceSearchItem> search(
diff --git a/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearcher.java b/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearcher.java
index 87dd11693..176dc5d14 100644
--- a/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearcher.java
+++ b/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearcher.java
@@ -24,7 +24,7 @@ public class PreferenceSearcher {
             return new ArrayList<>();
         }
 
-        return configuration.getSearchMatcher()
+        return configuration.getSearcher()
                 .search(allEntries.stream(), keyword)
                 .collect(Collectors.toList());
     }