Frontend Development Specialist
Quick Reference
Modern Frontend Development - Comprehensive patterns for React 19, Next.js 16, Vue 3.5.
Core Capabilities:
- React 19: Server components, concurrent features, cache(), Suspense
- Next.js 16: App Router, Server Actions, ISR, Route handlers
- Vue 3.5: Composition API, TypeScript, Pinia state management
- Component Architecture: Design systems, compound components, CVA
- Performance: Code splitting, dynamic imports, memoization
When to Use:
- Modern web application development
- Component library creation
- Frontend performance optimization
- UI/UX with accessibility
Module Index
Load specific modules for detailed patterns:
Framework Patterns
React 19 Patterns:
- Server Components, Concurrent features, cache() API, Form handling
Next.js 16 Patterns:
- App Router, Server Actions, ISR, Route Handlers, Parallel Routes
Vue 3.5 Patterns:
- Composition API, Composables, Reactivity, Pinia, Provide/Inject
Architecture Patterns
Component Architecture:
- Design tokens, CVA variants, Compound components, Accessibility
State Management:
- Zustand, Redux Toolkit, React Context, Pinia
Performance Optimization:
- Code splitting, Dynamic imports, Image optimization, Memoization
Implementation Quickstart
React 19 Server Component
import { cache } from 'react'
import { Suspense } from 'react'
const getData = cache(async (id: string) => {
const res = await fetch(`/api/data/${id}`)
return res.json()
})
export default async function Page({ params }: { params: { id: string } }) {
return (
<Suspense fallback={<Skeleton />}>
<DataDisplay data={await getData(params.id)} />
</Suspense>
)
}
Next.js Server Action
'use server'
import { revalidatePath } from 'next/cache'
import { z } from 'zod'
const schema = z.object({
title: z.string().min(1),
content: z.string().min(10)
})
export async function createPost(formData: FormData) {
const result = schema.safeParse({
title: formData.get('title'),
content: formData.get('content')
})
if (!result.success) return { errors: result.error.flatten().fieldErrors }
await db.post.create({ data: result.data })
revalidatePath('/posts')
}
Vue Composable
import { ref, computed, watchEffect } from 'vue'
export function useUser(userId: Ref<string>) {
const user = ref<User | null>(null)
const loading = ref(false)
const fullName = computed(() =>
user.value ? `${user.value.firstName} ${user.value.lastName}` : ''
)
watchEffect(async () => {
loading.value = true
user.value = await fetchUser(userId.value)
loading.value = false
})
return { user, loading, fullName }
}
CVA Component
import { cva, type VariantProps } from 'class-variance-authority'
const buttonVariants = cva(
'inline-flex items-center justify-center rounded-md font-medium',
{
variants: {
variant: {
default: 'bg-primary text-white hover:bg-primary/90',
outline: 'border border-input hover:bg-accent',
},
size: {
sm: 'h-9 px-3 text-sm',
default: 'h-10 px-4',
lg: 'h-11 px-8',
},
},
defaultVariants: { variant: 'default', size: 'default' },
}
)
export function Button({ variant, size, children }: ButtonProps) {
return <button className={buttonVariants({ variant, size })}>{children}</button>
}
Works Well With
- moai-domain-backend - Full-stack development
- moai-library-shadcn - Component library integration
- moai-domain-uiux - UI/UX design principles
- moai-lang-typescript - TypeScript patterns
- moai-workflow-testing - Frontend testing
Technology Stack
Frameworks: React 19, Next.js 16, Vue 3.5, Nuxt 3
Languages: TypeScript 5.9+, JavaScript ES2024
Styling: Tailwind CSS 3.4+, CSS Modules, shadcn/ui
State: Zustand, Redux Toolkit, Pinia
Testing: Vitest, Testing Library, Playwright
Resources
Module files in modules/ directory contain detailed patterns.
Version: 2.0.0 | Last Updated: 2026-01-06
1---2name: moai-domain-frontend3description: Frontend development specialist covering React 19, Next.js 16, Vue 3.5, and modern UI/UX patterns with component architecture. Use when building web UIs, implementing components, optimizing frontend performance, or integrating state management.4---56# Frontend Development Specialist78## Quick Reference910Modern Frontend Development - Comprehensive patterns for React 19, Next.js 16, Vue 3.5.1112Core Capabilities:13- React 19: Server components, concurrent features, cache(), Suspense14- Next.js 16: App Router, Server Actions, ISR, Route handlers15- Vue 3.5: Composition API, TypeScript, Pinia state management16- Component Architecture: Design systems, compound components, CVA17- Performance: Code splitting, dynamic imports, memoization1819When to Use:20- Modern web application development21- Component library creation22- Frontend performance optimization23- UI/UX with accessibility2425---2627## Module Index2829Load specific modules for detailed patterns:3031### Framework Patterns3233[React 19 Patterns](modules/react19-patterns.md):34- Server Components, Concurrent features, cache() API, Form handling3536[Next.js 16 Patterns](modules/nextjs16-patterns.md):37- App Router, Server Actions, ISR, Route Handlers, Parallel Routes3839[Vue 3.5 Patterns](modules/vue35-patterns.md):40- Composition API, Composables, Reactivity, Pinia, Provide/Inject4142### Architecture Patterns4344[Component Architecture](modules/component-architecture.md):45- Design tokens, CVA variants, Compound components, Accessibility4647[State Management](modules/state-management.md):48- Zustand, Redux Toolkit, React Context, Pinia4950[Performance Optimization](modules/performance-optimization.md):51- Code splitting, Dynamic imports, Image optimization, Memoization5253---5455## Implementation Quickstart5657### React 19 Server Component5859```tsx60import { cache } from 'react'61import { Suspense } from 'react'6263const getData = cache(async (id: string) => {64 const res = await fetch(`/api/data/${id}`)65 return res.json()66})6768export default async function Page({ params }: { params: { id: string } }) {69 return (70 <Suspense fallback={<Skeleton />}>71 <DataDisplay data={await getData(params.id)} />72 </Suspense>73 )74}75```7677### Next.js Server Action7879```tsx80'use server'8182import { revalidatePath } from 'next/cache'83import { z } from 'zod'8485const schema = z.object({86 title: z.string().min(1),87 content: z.string().min(10)88})8990export async function createPost(formData: FormData) {91 const result = schema.safeParse({92 title: formData.get('title'),93 content: formData.get('content')94 })95 if (!result.success) return { errors: result.error.flatten().fieldErrors }96 await db.post.create({ data: result.data })97 revalidatePath('/posts')98}99```100101### Vue Composable102103```typescript104import { ref, computed, watchEffect } from 'vue'105106export function useUser(userId: Ref<string>) {107 const user = ref<User | null>(null)108 const loading = ref(false)109 const fullName = computed(() =>110 user.value ? `${user.value.firstName} ${user.value.lastName}` : ''111 )112 watchEffect(async () => {113 loading.value = true114 user.value = await fetchUser(userId.value)115 loading.value = false116 })117 return { user, loading, fullName }118}119```120121### CVA Component122123```tsx124import { cva, type VariantProps } from 'class-variance-authority'125126const buttonVariants = cva(127 'inline-flex items-center justify-center rounded-md font-medium',128 {129 variants: {130 variant: {131 default: 'bg-primary text-white hover:bg-primary/90',132 outline: 'border border-input hover:bg-accent',133 },134 size: {135 sm: 'h-9 px-3 text-sm',136 default: 'h-10 px-4',137 lg: 'h-11 px-8',138 },139 },140 defaultVariants: { variant: 'default', size: 'default' },141 }142)143144export function Button({ variant, size, children }: ButtonProps) {145 return <button className={buttonVariants({ variant, size })}>{children}</button>146}147```148149---150151## Works Well With152153- moai-domain-backend - Full-stack development154- moai-library-shadcn - Component library integration155- moai-domain-uiux - UI/UX design principles156- moai-lang-typescript - TypeScript patterns157- moai-workflow-testing - Frontend testing158159---160161## Technology Stack162163Frameworks: React 19, Next.js 16, Vue 3.5, Nuxt 3164Languages: TypeScript 5.9+, JavaScript ES2024165Styling: Tailwind CSS 3.4+, CSS Modules, shadcn/ui166State: Zustand, Redux Toolkit, Pinia167Testing: Vitest, Testing Library, Playwright168169---170171## Resources172173Module files in modules/ directory contain detailed patterns.174- React: https://react.dev/175- Next.js: https://nextjs.org/docs176- Vue: https://vuejs.org/177178---179180Version: 2.0.0 | Last Updated: 2026-01-06