A listing that filters on its records' own fields is simpler than a search view, always current, and respects a member's permissions, so reach for it first. Filtering a listing from the query string covers the URL operators, the tag and category routes, and what matters once the site is cached and has real traffic: keeping the filter in page links, and declaring it to the page cache.

Where filter state belongs is short and front-end only: the URL holds the filter, and the one thing a script remembers belongs to the tab. When a listing should become a search view gives the threshold, with what each side costs; read it before building a view for a page that could have been a listing.