Recent bug in POS Product Search API - hasOnlyDefaultVariant returning false when it should be true

We have received reports of this in recent weeks and believe we can reproduce. Please see the payload below as an example, it’s showing true inside the variant object, but false at the product level.

10:18:55 │ Weigh an Item (2025 stabl │ {
10:18:55 │ Weigh an Item (2025 stabl │   "id": 8259154935971,
10:18:55 │ Weigh an Item (2025 stabl │   "createdAt": "2024-03-11T00:00:35.000Z",
10:18:55 │ Weigh an Item (2025 stabl │   "updatedAt": "2026-05-05T16:52:58.000Z",
10:18:55 │ Weigh an Item (2025 stabl │   "title": "Body Wash (1 oz)",
10:18:55 │ Weigh an Item (2025 stabl │   "description": "",
10:18:55 │ Weigh an Item (2025 stabl │   "descriptionHtml": "",
10:18:55 │ Weigh an Item (2025 stabl │   "isGiftCard": false,
10:18:55 │ Weigh an Item (2025 stabl │   "tracksInventory": true,
10:18:55 │ Weigh an Item (2025 stabl │   "vendor": "fjtesting4",
10:18:55 │ Weigh an Item (2025 stabl │   "minVariantPrice": "0.1",
10:18:55 │ Weigh an Item (2025 stabl │   "maxVariantPrice": "0.1",
10:18:55 │ Weigh an Item (2025 stabl │   "minVariantContextualPrice": "0.1",
10:18:55 │ Weigh an Item (2025 stabl │   "maxVariantContextualPrice": "0.1",
10:18:55 │ Weigh an Item (2025 stabl │   "productType": "",
10:18:55 │ Weigh an Item (2025 stabl │   "productCategory": "",
10:18:55 │ Weigh an Item (2025 stabl │   "tags": [
10:18:55 │ Weigh an Item (2025 stabl │     "bulk"
10:18:55 │ Weigh an Item (2025 stabl │   ],
10:18:55 │ Weigh an Item (2025 stabl │   "numVariants": 1,
10:18:55 │ Weigh an Item (2025 stabl │   "totalInventory": 0,
10:18:55 │ Weigh an Item (2025 stabl │   "totalAvailableInventory": 0,
10:18:55 │ Weigh an Item (2025 stabl │   "variants": [
10:18:55 │ Weigh an Item (2025 stabl │     {
10:18:55 │ Weigh an Item (2025 stabl │       "id": 44112702177443,
10:18:55 │ Weigh an Item (2025 stabl │       "productId": 8259154935971,
10:18:55 │ Weigh an Item (2025 stabl │       "createdAt": "2024-03-11T00:00:35.000Z",
10:18:55 │ Weigh an Item (2025 stabl │       "updatedAt": "2026-05-05T16:52:59.000Z",
10:18:55 │ Weigh an Item (2025 stabl │       "title": "Default Title",
10:18:55 │ Weigh an Item (2025 stabl │       "displayName": "Body Wash (1 oz) - Default Title",
10:18:55 │ Weigh an Item (2025 stabl │       "price": "0.10",
10:18:55 │ Weigh an Item (2025 stabl │       "compareAtPrice": "",
10:18:55 │ Weigh an Item (2025 stabl │       "contextualPrice": "0.1",
10:18:55 │ Weigh an Item (2025 stabl │       "sku": "",
10:18:55 │ Weigh an Item (2025 stabl │       "barcode": "",
10:18:55 │ Weigh an Item (2025 stabl │       "options": [
10:18:55 │ Weigh an Item (2025 stabl │         {
10:18:55 │ Weigh an Item (2025 stabl │           "name": "Title",
10:18:55 │ Weigh an Item (2025 stabl │           "value": "Default Title"
10:18:55 │ Weigh an Item (2025 stabl │         }
10:18:55 │ Weigh an Item (2025 stabl │       ],
10:18:55 │ Weigh an Item (2025 stabl │       "position": 2,
10:18:55 │ Weigh an Item (2025 stabl │       "inventoryIsTracked": true,
10:18:55 │ Weigh an Item (2025 stabl │       "inventoryPolicy": "DENY",
10:18:55 │ Weigh an Item (2025 stabl │       "inventoryAtLocation": 0,
10:18:55 │ Weigh an Item (2025 stabl │       "inventoryAtAllLocations": 0,
10:18:55 │ Weigh an Item (2025 stabl │       "safetyStockAtLocation": 0,
10:18:55 │ Weigh an Item (2025 stabl │       "requiresShipping": true,
10:18:55 │ Weigh an Item (2025 stabl │       "taxable": true,
10:18:55 │ Weigh an Item (2025 stabl │       "requiresComponents": false,
10:18:55 │ Weigh an Item (2025 stabl │       "hasSellingPlanGroups": false,
10:18:55 │ Weigh an Item (2025 stabl │       "product": {
10:18:55 │ Weigh an Item (2025 stabl │         "id": 8259154935971,
10:18:55 │ Weigh an Item (2025 stabl │         "createdAt": "2024-03-11T00:00:35.000Z",
10:18:55 │ Weigh an Item (2025 stabl │         "updatedAt": "2026-05-05T16:52:58.000Z",
10:18:55 │ Weigh an Item (2025 stabl │         "title": "Body Wash (1 oz)",
10:18:55 │ Weigh an Item (2025 stabl │         "description": "",
10:18:55 │ Weigh an Item (2025 stabl │         "descriptionHtml": "",
10:18:55 │ Weigh an Item (2025 stabl │         "isGiftCard": false,
10:18:55 │ Weigh an Item (2025 stabl │         "tracksInventory": true,
10:18:55 │ Weigh an Item (2025 stabl │         "vendor": "fjtesting4",
10:18:55 │ Weigh an Item (2025 stabl │         "minVariantPrice": "0.1",
10:18:55 │ Weigh an Item (2025 stabl │         "maxVariantPrice": "0.1",
10:18:55 │ Weigh an Item (2025 stabl │         "minVariantContextualPrice": "0.1",
10:18:55 │ Weigh an Item (2025 stabl │         "maxVariantContextualPrice": "0.1",
10:18:55 │ Weigh an Item (2025 stabl │         "productType": "",
10:18:55 │ Weigh an Item (2025 stabl │         "productCategory": "",
10:18:55 │ Weigh an Item (2025 stabl │         "tags": [
10:18:55 │ Weigh an Item (2025 stabl │           "bulk"
10:18:55 │ Weigh an Item (2025 stabl │         ],
10:18:55 │ Weigh an Item (2025 stabl │         "numVariants": 1,
10:18:55 │ Weigh an Item (2025 stabl │         "totalInventory": 0,
10:18:55 │ Weigh an Item (2025 stabl │         "totalAvailableInventory": 0,
10:18:55 │ Weigh an Item (2025 stabl │         "variants": [],
10:18:55 │ Weigh an Item (2025 stabl │         "options": [
10:18:55 │ Weigh an Item (2025 stabl │           {
10:18:55 │ Weigh an Item (2025 stabl │             "id": 10582643998883,
10:18:55 │ Weigh an Item (2025 stabl │             "name": "Title",
10:18:55 │ Weigh an Item (2025 stabl │             "optionValues": [
10:18:55 │ Weigh an Item (2025 stabl │               "Default Title"
10:18:55 │ Weigh an Item (2025 stabl │             ],
10:18:55 │ Weigh an Item (2025 stabl │             "product_id": 8259154935971,
10:18:55 │ Weigh an Item (2025 stabl │             "productId": 8259154935971
10:18:55 │ Weigh an Item (2025 stabl │           }
10:18:55 │ Weigh an Item (2025 stabl │         ],
10:18:55 │ Weigh an Item (2025 stabl │         "hasOnlyDefaultVariant": true,
10:18:55 │ Weigh an Item (2025 stabl │         "hasInStockVariants": false,
10:18:55 │ Weigh an Item (2025 stabl │         "publishedOnCurrentPublication": true,
10:18:55 │ Weigh an Item (2025 stabl │         "hasVariantsThatRequiresComponents": false,
10:18:55 │ Weigh an Item (2025 stabl │         "hasVariantWithBundleComponents": false,
10:18:55 │ Weigh an Item (2025 stabl │         "requiresSellingPlan": false,
10:18:55 │ Weigh an Item (2025 stabl │         "hasSellingPlanGroups": false
10:18:55 │ Weigh an Item (2025 stabl │       }
10:18:55 │ Weigh an Item (2025 stabl │     }
10:18:55 │ Weigh an Item (2025 stabl │   ],
10:18:55 │ Weigh an Item (2025 stabl │   "options": [
10:18:55 │ Weigh an Item (2025 stabl │     {
10:18:55 │ Weigh an Item (2025 stabl │       "id": 10582643998883,
10:18:55 │ Weigh an Item (2025 stabl │       "name": "Title",
10:18:55 │ Weigh an Item (2025 stabl │       "optionValues": [
10:18:55 │ Weigh an Item (2025 stabl │         "Default Title"
10:18:55 │ Weigh an Item (2025 stabl │       ],
10:18:55 │ Weigh an Item (2025 stabl │       "product_id": 8259154935971,
10:18:55 │ Weigh an Item (2025 stabl │       "productId": 8259154935971
10:18:55 │ Weigh an Item (2025 stabl │     }
10:18:55 │ Weigh an Item (2025 stabl │   ],
10:18:55 │ Weigh an Item (2025 stabl │   "hasOnlyDefaultVariant": false,
10:18:55 │ Weigh an Item (2025 stabl │   "hasInStockVariants": false,
10:18:55 │ Weigh an Item (2025 stabl │   "publishedOnCurrentPublication": true,
10:18:55 │ Weigh an Item (2025 stabl │   "hasVariantsThatRequiresComponents": false,
10:18:55 │ Weigh an Item (2025 stabl │   "hasVariantWithBundleComponents": false,
10:18:55 │ Weigh an Item (2025 stabl │   "requiresSellingPlan": false,
10:18:55 │ Weigh an Item (2025 stabl │   "hasSellingPlanGroups": false
10:18:55 │ Weigh an Item (2025 stabl │ }

Hi team, any update here? We had to ultimately ship our own fix to retain the original behavior merchants expect, which entailed complicating our business logic using a combination of numVariants and hasOtherVariants (which is a property that may not exist depending on the type of selection payload).

If the bug could be fixed, that would be appreciated. Thanks.