1. Container-Presenter pattern.
Container component owns state and Apex calls; presentation components are stateless and receive data via @api.
2. Lightning Message Service (LMS).
Cross-tree communication via Message Channels. Decouples siblings.
3. Custom Events for parent-child.
Children dispatch CustomEvent; parents handle. Standard pattern.
4. Composition over inheritance.
LWC doesn't support inheritance; use composition. Mixins via JS modules.
5. Lightning Data Service (LDS).
Use getRecord/updateRecord for single-record CRUD without writing Apex. Cached, FLS-aware.
6. `@wire` reactive data.
Reactive data binding. Records refresh automatically when underlying data changes.
7. Imperative Apex for actions.
User actions call Apex imperatively; results update component state.
8. Custom Property API.
@api properties as the public interface; private properties not exposed.
9. Lazy loading.
Heavy components load on demand (if:true gates rendering).
10. Component reuse via slots.
<slot> lets parent inject content into child layout.
Architect role: define standards for component organisation, naming, public interfaces, testing, and styling. Without standards, LWC codebases drift.
