I may need more details as to what you mean by “spares”. Are you wanting to flag a part on the BOM as a potential for standard replacement parts?
If so, a basic UD field on the PartMtl/ECOMtl/JobMtl with the use of UD Field Mapping can provide the data.
A Dashboard/Report can be used to list the replaceable parts.
You will need a custom field of some kind. If you store the value at the Part level, that would mean that part would be a spare on any product. If you store it at the BOM level (PartMtl/ECOMtl/JobMtl), then that would mean the part is a spare specifically for that BOM.
You might be able to Use Part Substitute\Alternate’s functionality for this if it’s simply part specific. If it’s method specific then I agree with @Jason_Woods.
I had a client that actually added the part to the BOM as another Material sequence but just set it’s Qty/Parent to zero. Then if they needed it, they would delete the original Material Sequence and set the Qty\Parent value.