--- name: moai-domain-frontend description: Frontend development specialist covering React 19, Next.js 16, Vue 3.5, and modern UI/UX patterns with component architecture version: 1.0.0 category: domain tags: - frontend - react - nextjs - vue - ui - components updated: 2025-11-30 status: active author: MoAI-ADK Team --- # Frontend Development Specialist ## Quick Reference (30 seconds) Modern Frontend Development - Comprehensive frontend patterns covering React 19, Next.js 16, Vue 3.5, and modern UI/UX architecture. Core Capabilities: - React 19: Server components, concurrent features, optimized patterns - Next.js 16: App router, server actions, advanced optimization - 🟢 Vue 3.5: Composition API, TypeScript integration, reactivity - Component Architecture: Design systems, component libraries, story-driven development - Responsive Design: Mobile-first, accessibility, performance optimization When to Use: - Modern web application development - Component library creation and management - Performance optimization for frontend - UI/UX implementation with accessibility - Cross-platform frontend development --- ## Implementation Guide ### React 19 Server Components Modern React Architecture: ```tsx // app/components/UserProfile.tsx import { cache } from 'react' import { getUser } from '@/lib/users' const getUserCached = cache(getUser) interface UserProfileProps { userId: string } export default async function UserProfile({ userId }: UserProfileProps) { const user = await getUserCached(userId) return (

{user.name}

{user.email}

) } 'use client' function ClientActions({ userId }: { userId: string }) { const [isFollowing, setIsFollowing] = useState(false) return ( ) } ``` Concurrent Features: ```tsx import { Suspense } from 'react' import { ErrorBoundary } from 'react-error-boundary' function App() { return ( Something went wrong}> }> ) } ``` ### Next.js 16 App Router Server Actions and Data Fetching: ```tsx // app/actions/users.ts 'use server' import { revalidatePath } from 'next/cache' import { redirect } from 'next/navigation' export async function createUser(formData: FormData) { const name = formData.get('name') as string const email = formData.get('email') as string const user = await db.user.create({ data: { name, email } }) revalidatePath('/users') redirect(`/users/${user.id}`) } // app/users/page.tsx import { createUser } from '../actions/users' export default function UsersPage() { return (
) } ``` Advanced Route Patterns: ```tsx // app/[category]/[slug]/page.tsx interface PageProps { params: { category: string; slug: string } searchParams: { [key: string]: string | string[] | undefined } } export default async function Page({ params, searchParams }: PageProps) { const { category, slug } = params const page = searchParams.page ?? '1' const data = await getData(category, slug, page) return } // Generate static params for performance export async function generateStaticParams() { const posts = await getAllPosts() return posts.map((post) => ({ category: post.category, slug: post.slug })) } ``` ### Vue 3.5 Composition API Modern Vue Patterns: ```vue ``` ### Component Architecture Design System Components: ```tsx // components/Button/Button.tsx import { forwardRef } from 'react' import { cva, type VariantProps } from 'class-variance-authority' const buttonVariants = cva( 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none', { variants: { variant: { default: 'bg-primary text-primary-foreground hover:bg-primary/90', destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90', outline: 'border border-input hover:bg-accent hover:text-accent-foreground', secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', ghost: 'hover:bg-accent hover:text-accent-foreground', link: 'underline-offset-4 hover:underline text-primary', }, size: { default: 'h-10 py-2 px-4', sm: 'h-9 px-3 rounded-md', lg: 'h-11 px-8 rounded-md', icon: 'h-10 w-10', }, }, defaultVariants: { variant: 'default', size: 'default', }, } ) export interface ButtonProps extends React.ButtonHTMLAttributes, VariantProps { asChild?: boolean } const Button = forwardRef( ({ className, variant, size, asChild = false, ...props }, ref) => { return ( ``` --- ## Advanced Patterns ### Performance Optimization React Optimization Patterns: ```tsx import { memo, useMemo, useCallback, useMemo, useDeferredValue } from 'react' const ExpensiveList = memo(({ items, onItemClick }: { items: Item[] onItemClick: (item: Item) => void }) => { const expensiveValue = useMemo(() => { return items.reduce((sum, item) => sum + item.value, 0) }, [items]) const handleClick = useCallback((item: Item) => { onItemClick(item) }, [onItemClick]) return (

Total: {expensiveValue}

{items.map(item => (
handleClick(item)}> {item.name}
))}
) }) ``` Next.js Performance: ```tsx // Dynamic imports for code splitting import dynamic from 'next/dynamic' const DynamicChart = dynamic( () => import('@/components/Chart'), { loading: () =>
Loading chart...
, ssr: false // Client-side only for heavy components } ) // Image optimization import Image from 'next/image' function OptimizedImage({ src, alt, ...props }) { return ( {alt} ) } ``` ### State Management Zustand for Modern State Management: ```tsx import { create } from 'zustand' import { devtools, persist } from 'zustand/middleware' interface UserState { user: User | null isLoading: boolean login: (email: string, password: string) => Promise logout: () => void updateUser: (updates: Partial) => void } export const useUserStore = create()( devtools( persist( (set, get) => ({ user: null, isLoading: false, login: async (email: string, password: string) => { set({ isLoading: true }) try { const user = await authService.login(email, password) set({ user, isLoading: false }) } catch (error) { set({ isLoading: false }) throw error } }, logout: () => { set({ user: null }) }, updateUser: (updates: Partial) => { set(state => ({ user: state.user ? { ...state.user, ...updates } : null })) } }), { name: 'user-storage', partialize: (state) => ({ user: state.user }) } ) ) ) ``` --- ## Works Well With - moai-domain-backend - Full-stack development - moai-library-shadcn - Component library integration - moai-domain-uiux - UI/UX design principles - moai-quality-security - Frontend security and accessibility - moai-system-universal - Cross-platform optimization --- ## Technology Stack Primary Technologies: - Frameworks: React 19, Next.js 16, Vue 3.5, Nuxt 3 - Languages: TypeScript 5.9+, JavaScript ES2024 - Styling: Tailwind CSS 3.4+, CSS Modules, Styled Components - State Management: Zustand, Redux Toolkit, Pinia - Testing: Vitest, Testing Library, Playwright - Build Tools: Vite 5, Turbopack, SWC Component Libraries: - shadcn/ui, Material-UI, Ant Design - Headless UI, Radix UI - Custom design systems --- Status: Production Ready Last Updated: 2025-11-30 Maintained by: MoAI-ADK Frontend Team