Awesome-omni-skill frontend-patterns

Frontend development patterns for React and modern frameworks

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/frontend-patterns-besync-labs" ~/.claude/skills/diegosouzapw-awesome-omni-skill-frontend-patterns && rm -rf "$T"
manifest: skills/development/frontend-patterns-besync-labs/SKILL.md
source content

Frontend Patterns Skill

Purpose: Apply modern frontend development patterns


Overview

This skill provides best practices for building maintainable, performant frontend applications.


Component Architecture

Atomic Design

atoms/          → Button, Input, Label
molecules/      → FormField, SearchInput
organisms/      → LoginForm, Header
templates/      → PageLayout, DashboardLayout
pages/          → LoginPage, DashboardPage

Feature-Based Structure

src/
├── features/
│   ├── auth/
│   │   ├── components/
│   │   ├── hooks/
│   │   ├── api/
│   │   └── index.ts
│   └── dashboard/
│       ├── components/
│       ├── hooks/
│       └── index.ts
├── shared/
│   ├── components/
│   ├── hooks/
│   └── utils/
└── App.tsx

React Patterns

Custom Hooks

function useLocalStorage<T>(key: string, initialValue: T) {
  const [value, setValue] = useState<T>(() => {
    const stored = localStorage.getItem(key);
    return stored ? JSON.parse(stored) : initialValue;
  });

  useEffect(() => {
    localStorage.setItem(key, JSON.stringify(value));
  }, [key, value]);

  return [value, setValue] as const;
}

Compound Components

<Select value={selected} onChange={setSelected}>
  <Select.Trigger>Choose option</Select.Trigger>
  <Select.Options>
    <Select.Option value="a">Option A</Select.Option>
    <Select.Option value="b">Option B</Select.Option>
  </Select.Options>
</Select>

Render Props

<DataFetcher url="/api/users">
  {({ data, loading, error }) =>
    loading ? <Spinner /> : <UserList users={data} />
  }
</DataFetcher>

State Management

SolutionUse Case
useStateLocal component state
useReducerComplex local state
ContextTheme, auth, i18n
ZustandSimple global state
ReduxComplex global state
React QueryServer state

Performance

Memoization

// Expensive calculation
const sortedItems = useMemo(
  () => items.sort((a, b) => a.name.localeCompare(b.name)),
  [items],
);

// Callback stability
const handleClick = useCallback(() => {
  onClick(id);
}, [id, onClick]);

// Component memoization
const UserCard = memo(({ user }) => <div>{user.name}</div>);

Quick Reference

PatternUsage
Custom HooksReusable logic
CompoundFlexible APIs
Render PropsDynamic rendering
HOCCross-cutting concerns
ContextGlobal state
MemoizationPerformance