Reusable components and state management
You learn JSX ergonomics, prop design, composition over inheritance, and when to lift state versus colocate it. Patterns include controlled inputs, derived state pitfalls, and splitting components for testability. Exercises refactor a messy screen into smaller pieces with clear boundaries. Accessibility reminders appear throughout so keyboard navigation and labels remain first-class concerns rather than afterthoughts.
Data fetching, caching, and async UX
This module compares fetch strategies with hooks, basic caching mental models, and loading or error UI that keeps users oriented. You discuss optimistic updates versus pessimistic flows for risky actions, and how to surface recoverable errors without blameful copy. Labs consume a public API with pagination and empty states that feel intentional rather than broken.
Routing, auth, and authorization in the UI
Lessons implement client-side routes, protected paths, and role-aware navigation while acknowledging token storage trade-offs at a high level. You practice redirect patterns after login and deep-link preservation. Security discussion stays practical: never ship secrets to the browser, and always assume XSS defenses must cooperate with server policies.
Testing, tooling, and shipping
You write component tests with Testing Library habits that resemble user behavior, configure lint rules teams can agree on, and tune production builds for bundle size awareness. The capstone emphasizes a concise README and a demo that shows loading, empty, and failure paths because reviewers look for operational maturity as much as feature count.
Performance and accessibility follow-through
You profile render costs with browser tools, memoize where appropriate, and avoid layout thrashing patterns common in list views. Accessibility passes cover focus management in routed views and live regions for async updates. A short checklist helps you evaluate whether a component is ready for design system inclusion. Capstone reviewers specifically look for reduced-motion respect, keyboard-only navigation, and sensible loading priorities on slow networks. Supplemental readings introduce code-splitting trade-offs and service worker pitfalls so you can discuss delivery strategy in architecture reviews. Final demos include a brief risk note about third-party script budgets.