I have one consumable product in my iOS app that doesn’t link to any entitlements as recommended in the docs:
If you have non-subscription products, you may or may not want to add them to entitlements depending on your use case. If the product is non-consumable (e.g. lifetime access to "pro" features), you likely want to attach it to an entitlement. However, if it is consumable (e.g. purchase more lives in a game) you likely do not want to add them to an entitlement.
Right now I’m using the transaction history to keep track of the purchases and unlock in-app content accordingly. Not sure what’s the best approach for this to correctly handle refunds.