Keep utilities close to the feature that owns them, and extract shared code only when multiple modules truly need it. Prefer small, well-named shared libraries with clear ownership instead of one giant `utils` module.