I found an app finally that does this, check out Intuitive Shipping.
Topic summary
Restricting shipping by product/collection is mainly done via Shipping Profiles: create a new profile, add specific products (or variants), then define Shipping Zones (countries/regions) with standard or calculated rates. There is no staging environment; stores can be password-protected to test checkout and rates.
Customer experience: shoppers only see the available rates at checkout based on cart contents; profiles aren’t visible to them. Hiding products by country is not native—apps like Locksmith, Geo Blocking, or LockOn can block viewing/ordering.
A key problem reported: double shipping charges when a cart mixes items from different shipping profiles. Workarounds include Shopify Script Editor examples to hide rates for specific products in certain countries, or using Intuitive Shipping to better handle blended/mixed-cart rates.
Product visibility and market restrictions: “Exclude from markets” can block products in selected countries, but bulk management is tedious and initially noted as product-level (not variant-level). One reply indicates variants can be added to shipping profiles; others seek variant-level restrictions via apps.
Scope questions remain, including whether restrictions work at state-level versus country-level. The discussion provides options but no single native resolution for mixed-cart double charges; testing is recommended and the thread remains open.