semantic would be when you want to name something based on how its used in a specific context, utility - a more reusable functional naming, can be reused everywhere
The more granular utilities you make, the more composable they get. E.g. you could use tailwind-style atomic utilities, which define one property at a time