frontend-patterns/research/candidates/VerticalFeatureSlice.md

51 lines
2.5 KiB
Markdown
Raw Normal View History

---
title: Vertical Feature Slice
status: draft
maturity: hypothesis
families: [composition]
scales: [L4]
admission: research-candidate-only
---
# Vertical Feature Slice
Context: one product change spans UI, state and service interaction scattered across
technical folders. Change locality competes with reuse and cross-feature coordination.
Proposed solution: group the frontend parts of a cohesive capability behind an
explicit public interface. Declare permitted dependencies and compose capabilities
at a higher boundary. Put shared primitives where their ownership is clear; do not
hide cross-feature workflows inside another feature's private modules.
Result: a capability can evolve internally, but interface design and shared concepts
need maintenance. A folder or barrel export does not enforce isolation. This is a
source-code boundary, not proof of independent deployment, team autonomy, security
isolation or an end-to-end backend service boundary.
Evidence: B03 locates Feature-Sliced Design's product-oriented grouping and public
API rules. The proposed pattern abstracts those mechanisms without adopting its
entire layer taxonomy. Full-pattern application recurrence remains unverified.
Alternative: technical layers for a small cohesive application; extract shared
behavior only when its ownership and consumers justify the new coupling.
Proposed relation: may contain [Presentation Model](PresentationModel.md); feature
boundaries need not coincide with [Failure Boundary](FailureBoundary.md).
Next test: change one capability's storage adapter; inspect imports and consumer
contracts. Change only deployment cadence next and identify new obligations.
Evidence locators: [breadth review](../reviews/PatternBreadthExpansion.md).
All relations are research proposals; no canonical identity or admitted graph edges.
The next test is planned, not executed. Known uses of the complete proposed contract
have not been verified in this investigation.
## Pinned source-layout contrast — 2026-09-26
[Boundary review](../reviews/FeatureDeploymentBoundaries.md) D01–D03 locates public
feature entry points, UI/model separation and page composition in a pinned FSD todo
example, alongside one application build script. The shared entity/API layer means
feature grouping does not imply a private persistence adapter. This is a partial
static use, not a release or import-enforcement test. Compare
[Independent Feature Boundary](IndependentFeatureBoundary.md): release cadence adds
activation/version contracts that source grouping alone does not provide.