While fixing a Shopify search bug for a client, we found that the store's older theme was excluding a published product from the results. The theme had not been updated for several years, and its outdated search logic was still controlling how storefront queries were built. The product itself was available and searchable. The problem was the query silently created when a shopper selected All Categories.
The Shopify Search Bug Our Client Reported
The client showed us a product that did not appear when they searched for a relevant keyword on the storefront. Another matching product appeared, but the product they expected was missing.
The missing product was published to the Online Store, available for sale, and accessible through its direct URL. Its title, description, and tags also contained the search term. From the storefront, this could easily look like an indexing delay or a Search & Discovery problem.
How We Traced the Missing Product
We first confirmed the product's availability and searchable content. We then compared a direct Shopify keyword search with the search URL generated by the theme.
The keyword by itself returned the missing product. The theme-generated search added another condition:
product_type:* + search term
That difference pointed us away from the product data and toward the theme's search form and JavaScript.

An anonymized and recreated example of the legacy theme's Product type search state.
What Was Actually Causing the Bug?
The old theme built its category dropdown from Shopify Product types. Its All Categories option used * as the value, and the theme's JavaScript combined it with the shopper's keyword as product_type:*.
The theme treated that condition as “all categories.” In practice, it required a product to have a Product type value. The missing product's Product type was blank, so Shopify excluded it from the filtered query.
The theme's age was an important part of the problem. The client was still running Kalles 3.0.1, a legacy version that had not been updated for several years. Newer Kalles versions were available, but this uploaded third-party installation could not use Shopify's standard theme update process. Its legacy search implementation therefore remained in place while Shopify's search and filtering features continued to evolve.

The client was using a legacy Kalles 3.0.1 installation. Newer versions existed, but this uploaded copy was not eligible for Shopify's standard theme update process.

The product names, images, prices, category, and search term were changed to protect the client's identity.
How We Fixed It
We changed the theme logic so that choosing All Categories no longer adds product_type:* to the search query. The theme now adds a Product type condition only when a shopper deliberately selects a specific type.
Simplified, the corrected logic looks like this:
let query;
if (productType === "*") {
query = searchTerm;
} else {
query = `product_type:${productType} ${searchTerm}`;
}
The important change is the first branch: * now means “do not restrict by Product type,” instead of becoming part of the Shopify search query.
We could have filled in the Product type on the one missing product. That would have made this product appear, but it would not have fixed the underlying bug. Any future product with a blank Product type could have disappeared in the same way.
After correcting the query, we checked products with and without a Product type, compared All Categories with specific types, and tested both predictive search and the full results page.
Was Search & Discovery the Problem?
Not directly. Shopify's Search & Discovery filters require support from the active theme. That can make an older theme's search behavior look like an app compatibility issue.
In this case, the condition hiding the product came from the theme's own JavaScript. Shopify's current storefront search guidance submits the search term through the q parameter and handles supported filters separately.
What Other Shopify Merchants Can Learn From This
The broader takeaway is that Shopify themes should be checked and updated regularly. Shopify notes that theme updates commonly include new features, design improvements, and bug fixes. Some newer Shopify features also require updated theme architecture and will not be added automatically to an older theme.
A theme does not need to be replaced every time a version is released. But leaving it untouched for several years can increase the risk of outdated code, missing platform features, and compatibility problems that are difficult to see until something breaks.
A heavily customized store should still test an updated theme as a draft before publishing it. Custom code and app integrations may need to be reviewed or carried forward, so “update the theme” is a project to verify—not a button to press blindly.
If a published product can be opened directly but does not appear in search, do not assume the product is still being indexed. Check what the theme actually sends to Shopify.
A search interface can say All Categories while its code applies an extra restriction behind the scenes. Comparing the plain keyword search with the theme-generated URL is often the fastest way to tell whether the problem belongs to the product data, Shopify's search results, an app setting, or the theme itself.
Related reading: why your Shopify search is slow.