# Package by Feature

> A design rule that code is grouped by the feature it serves, so one change stays inside one package.

Record: `architecture:package-by-feature`
Kind: principle
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: recommended
Scope: package, module
Canonical: https://banes-lab.com/ontology#architecture-package-by-feature

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Component-Based Architecture](https://banes-lab.com/records/architecture/component-based-architecture.md) and before [Microservices](https://banes-lab.com/records/architecture/microservices.md).

## Repair

- Refactored by: Repackage by Feature, Move Classes
- Detected by: change sets spanning many layer packages
- Violated by: feature logic scattered across technical folders
- Measured by: change locality
- Enforced by: package conventions

## Requires

- [Feature Cohesion](https://banes-lab.com/records/lexicon/feature-cohesion.md)

## Reinforces

- [Modularity](https://banes-lab.com/records/architecture/modularity.md)
- [Bounded Context](https://banes-lab.com/records/architecture/bounded-context.md)

## Enables

- [Locality of Change](https://banes-lab.com/records/lexicon/locality-of-change.md)

## Conflicts with

- [Package by Technical Layer Only](https://banes-lab.com/records/lexicon/package-by-technical-layer-only.md)

## In tension with

- [Shared Technical Concerns](https://banes-lab.com/records/lexicon/shared-technical-concerns.md)

## Tensions

- [Package by Feature / Shared Technical Concerns](https://banes-lab.com/records/tension/package-by-feature-shared-technical-concerns.md)

## Severity

- [recommended](https://banes-lab.com/records/vocabulary/severity-recommended.md)

## Category

- [Codebase / System Architecture Styles](https://banes-lab.com/records/architecture-category/codebase-system-architecture-styles.md)

## Linked from

- [The layer spine](https://banes-lab.com/software-architecture/model/the-layer-spine.md)
- [Domain Architecture](https://banes-lab.com/ontology/principles/architecture-category-domain-architecture.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Codebase / System Architecture Styles](https://banes-lab.com/ontology/lexicon/lexicon-category-codebase-system-architecture-styles.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
