1.5 KiB
1.5 KiB
Components
- Use
ChangeDetectionStrategy.OnPushunless there is a concrete reason not to. - Prefer signal-based state for local component state.
- Prefer
computedfor derived state. - Prefer
effectonly for actual side effects. - Do not use
effectas a replacement for normal data flow. - Keep component state minimal.
- Avoid duplicating derived state.
- Prefer immutable state updates.
- Avoid direct mutation of shared state.
- Keep inputs and outputs strongly typed.
- Prefer signal-based inputs and outputs when consistent with the project.
- Avoid unnecessary two-way binding.
- Avoid unnecessary component-to-component coupling.
- Prefer explicit data flow from parent to child and explicit events upward.
- Do not expose internal component state unnecessarily.
- Use lifecycle hooks only when required.
- Avoid complex initialization logic inside constructors.
Signals and State
- Prefer signals for local and synchronous reactive state.
- Prefer
computedfor derived values. - Keep signals private when external mutation is not intended.
- Expose readonly state where practical.
- Avoid storing values that can be derived from existing state.
- Avoid circular signal dependencies.
- Avoid side effects inside
computed. - Keep effects small and deterministic.
- Clean up resources created by effects.
- Do not use global state unless multiple unrelated parts of the application genuinely need it.
- Do not introduce a state-management library without a clear requirement.