### JavaScript/React Best Practices
#### Component Structure
- Use functional components with hooks
- Keep components small and focused (< 200 lines)
- Extract custom hooks for reusable logic
- Use PropTypes for runtime type checking
```javascript
// GOOD: Clear component with PropTypes
import PropTypes from 'prop-types';
const UserCard = ({ user, onSelect }) => {
return (
onSelect(user.id)}>
{user.name}
);
};
UserCard.propTypes = {
user: PropTypes.shape({
id: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
}).isRequired,
onSelect: PropTypes.func.isRequired,
};
```
#### State Management
- Use `useState` for local state
- Use `useReducer` for complex state logic
- Lift state up only when needed
- Consider context for deeply nested prop drilling
#### Performance
- Use `React.memo` for expensive pure components
- Use `useMemo` and `useCallback` appropriately
- Avoid inline object/function creation in render
#### Security
- Never use `dangerouslySetInnerHTML` with user input
- Sanitize URLs before using in `href` or `src`
- Validate props at component boundaries