AngularAngular
ReactReact
Vue.jsVue.js

Comprehensive comparison for technology in applications

Trusted by 500+ Engineering Teams
Hero Background
Trusted by leading companies
Omio
Vodafone
Startx
Venly
Alchemist
Stuart
Quick Comparison

See how they stack up across critical metrics

Best For
Building Complexity
Community Size
-Specific Adoption
Pricing Model
Performance Score
Vue.js
Progressive web apps, single-page applications, and projects requiring gentle learning curve with flexible integration
Very Large & Active
Moderate to High
Open Source
9
Angular
Large-scale enterprise applications requiring strict structure, TypeScript support, and comprehensive built-in features
Very Large & Active
Extremely High
Open Source
7
React
Building interactive user interfaces, single-page applications (SPAs), dashboards, and scalable front-end applications.
Very large and active
Used by companies like Meta, Netflix, Airbnb
Free and open-source.
8.5
Technology Overview

Deep dive into each technology

Angular is a comprehensive TypeScript-based framework developed by Google for building dynamic, flexible frontend applications. It matters for companies working on frontend application technology because it provides enterprise-grade architecture, robust tooling, and maintainable code structure for complex user interfaces. Major companies like Microsoft Office, Forbes, Deutsche Bank, and Samsung use Angular to power their web applications. The framework excels in building feature-rich dashboards, real-time collaboration tools, and data-intensive applications where performance, type safety, and long-term maintainability are critical business requirements.

Pros & Cons

Strengths & Weaknesses

Pros

  • Comprehensive framework with built-in routing, forms, HTTP client, and testing tools reduces need for third-party dependencies, streamlining development and maintenance for enterprise teams.
  • TypeScript-first architecture provides strong typing, better IDE support, and early error detection, reducing bugs and improving code maintainability in large-scale frontend applications.
  • Dependency injection system promotes modular, testable code architecture, making it easier to manage complex application dependencies and scale development teams across multiple features.
  • CLI tooling automates project scaffolding, code generation, building, and testing workflows, significantly reducing setup time and enforcing consistent project structure across development teams.
  • Two-way data binding simplifies form handling and real-time UI updates, reducing boilerplate code for complex form-heavy enterprise applications like dashboards and admin panels.
  • Strong enterprise backing from Google ensures long-term support, regular updates, security patches, and extensive documentation, reducing risk for companies investing in long-term projects.
  • RxJS integration provides powerful reactive programming patterns for handling complex asynchronous operations, API calls, and real-time data streams common in enterprise applications.

Cons

  • Steep learning curve due to complex concepts like decorators, dependency injection, RxJS, and TypeScript requires significant training investment and longer onboarding time for new developers.
  • Verbose syntax and boilerplate code compared to React or Vue increases development time for simple features and can slow down rapid prototyping phases.
  • Larger bundle sizes out-of-the-box impact initial load performance, requiring additional optimization effort through lazy loading and tree-shaking for performance-sensitive applications.
  • Frequent breaking changes between major versions create migration overhead, requiring dedicated resources for upgrades and potentially delaying feature development during transition periods.
  • Smaller talent pool compared to React makes hiring experienced Angular developers more challenging and potentially more expensive, especially in competitive markets.
Use Cases

Real-World Applications

Large-Scale Enterprise Applications with Complex Requirements

Angular excels in building comprehensive enterprise applications that require robust architecture, strong typing, and maintainability. Its opinionated structure, built-in dependency injection, and TypeScript foundation make it ideal for large teams working on complex business logic with long-term maintenance needs.

Applications Requiring Consistent Code Structure Standards

Angular is perfect when you need enforced coding standards and architectural patterns across development teams. Its CLI, style guide, and opinionated framework ensure consistency, making onboarding easier and reducing architectural debates in medium to large organizations.

Data-Heavy Dashboards and Admin Panels

Angular's powerful two-way data binding, RxJS integration, and robust form handling make it excellent for building complex dashboards with real-time data updates. Its built-in features like HttpClient and reactive forms streamline development of data-intensive interfaces with multiple user interactions.

Progressive Web Applications with Offline Capabilities

Angular provides first-class support for PWAs through its service worker module and CLI integration. It's ideal when building applications that need offline functionality, background sync, and app-like experiences with minimal configuration and excellent tooling support.

Technical Analysis

Performance Benchmarks

Build Time
Runtime Performance
Bundle Size
Memory Usage
-Specific Metric
Vue.js
2-4 seconds for small projects, 8-15 seconds for medium projects, 30-60 seconds for large enterprise applications using Vite; 15-30 seconds for small projects, 45-90 seconds for medium to large projects using Webpack
Initial render: 8-12ms for component mount, Virtual DOM diffing: 1-3ms per update cycle, Reactivity system overhead: <1ms for typical state changes, Time to Interactive (TTI): 1.5-3 seconds on average hardware
Base framework: ~34KB minified + gzipped (Vue 3 runtime), Typical small app: 80-150KB, Medium app with router and state management: 200-350KB, Large enterprise app: 500KB-2MB depending on dependencies and code splitting
Initial heap allocation: 3-5MB for framework initialization, Small application: 8-15MB, Medium application: 20-40MB, Large application with complex state: 50-100MB, Memory per component instance: ~50-200KB depending on complexity
Component Rendering Performance
Angular
Production build typically takes 30-90 seconds for medium-sized apps (depending on project size and optimizations). Incremental builds with ng serve are 2-5 seconds.
Initial load time: 1.5-3 seconds for optimized production builds. Time to Interactive (TTI): 2-4 seconds. Lighthouse performance scores typically range 70-95 with proper optimization (lazy loading, AOT compilation).
Initial bundle size ranges from 150-300 KB (gzipped) for a basic app. Medium complexity apps: 300-600 KB. Can reach 1-2 MB for large enterprise applications without proper code splitting.
Typical heap size: 15-40 MB for small to medium applications. Large enterprise apps can consume 50-100 MB. Change detection cycles add 2-5 MB overhead during active user interactions.
Change Detection Cycles Per Second
React
Production build typically takes 30-90 seconds for medium-sized apps (depends on project size, plugins, and optimization settings). Create React App builds average 45-60 seconds, Vite builds are faster at 10-30 seconds.
Virtual DOM reconciliation adds 1-3ms overhead per update. Initial render for typical SPA: 800-1500ms. Time to Interactive (TTI): 2-4 seconds on 3G networks. Lighthouse performance scores typically 70-90 for optimized apps.
Minimal React app (React + ReactDOM): ~140KB gzipped. Typical production app: 200-500KB gzipped. Large enterprise apps: 1-3MB gzipped. Code-splitting can reduce initial bundle to 50-150KB.
Base React runtime: 2-5MB heap memory. Typical SPA with state management: 15-40MB. Memory leaks common with improper useEffect cleanup. Component tree with 1000 nodes: ~10-15MB.
First Contentful Paint (FCP)

Benchmark Context

React demonstrates superior performance in dynamic, frequently-updating interfaces due to its virtual DOM reconciliation and fiber architecture, making it ideal for real-time dashboards and social feeds. Vue.js offers the most balanced performance profile with efficient reactivity and smaller bundle sizes (20-30% lighter than Angular), excelling in medium-complexity applications. Angular provides robust performance for enterprise applications through ahead-of-time compilation and tree-shaking, though initial load times can be 15-20% higher. For runtime performance, React and Vue are nearly identical in most scenarios, while Angular's comprehensive framework overhead shows in smaller applications but pays dividends in large-scale systems with complex state management and strict typing requirements.


Vue.jsVue.js

Measures the time taken to mount, update, and unmount Vue components, including Virtual DOM reconciliation and reactivity system overhead. Vue 3's Composition API and optimized reactivity system provides approximately 1.3-1.5x faster performance compared to Vue 2, with efficient handling of 1000+ component updates per second on modern hardware.

AngularAngular

Angular's zone.js triggers change detection across component trees. Optimized apps handle 100-500 cycles/second. Default strategy checks all components; OnPush strategy reduces checks by 60-80%, significantly improving performance for large component trees.

ReactReact

Measures when the first DOM content renders. React apps typically achieve 1.2-2.5 seconds FCP on desktop, 2-4 seconds on mobile 3G. Affects perceived load performance and user experience. Optimizable through code-splitting, lazy loading, and SSR/SSG.

Community & Long-term Support

Community Size
GitHub Stars
NPM Downloads
Stack Overflow Questions
Job Postings
Major Companies Using It
Active Maintainers
Release Frequency
Vue.js
Over 5 million developers worldwide use Vue.js regularly, part of the broader 20+ million JavaScript developer ecosystem
5.0
Approximately 10-12 million weekly downloads on npm for vue package
Over 95,000 questions tagged with vue.js on Stack Overflow
Approximately 15,000-20,000 active Vue.js job postings globally across major job platforms
Alibaba (e-commerce platform), Xiaomi (consumer electronics), Grammarly (writing assistant), GitLab (DevOps platform), Adobe (creative tools), Nintendo (gaming web applications), Louis Vuitton (luxury retail), Behance (creative portfolio)
Maintained by Evan You (creator) and core team, with support from Vue.js Foundation. Sponsored by companies through GitHub Sponsors and Open Collective. Core team includes 20+ active contributors
Major versions every 2-3 years (Vue 2 in 2016, Vue 3 in 2020), minor releases every 2-4 months, patch releases as needed. Vue 3.5 released in 2024 with ongoing incremental updates
Angular
Approximately 3-4 million Angular developers globally as of 2025, part of the broader 20+ million JavaScript developer ecosystem
5.0
Approximately 4-5 million weekly downloads for @angular/core package
Over 320,000 questions tagged with 'angular' on Stack Overflow
Approximately 50,000-70,000 Angular-related job openings globally across major job platforms
Google (Gmail, Google Cloud Console), Microsoft (Office 365, Xbox), Forbes, Deutsche Bank, Santander, PayPal, Upwork, Samsung, IBM, Delta Airlines, and numerous enterprise organizations for large-scale applications
Maintained by Google's Angular team with significant contributions from the open-source community. Core team includes 20+ active Google engineers and community contributors. Part of Google Open Source
Major versions released approximately every 6 months (biannual), with minor releases and patches released regularly. Angular 18 released in May 2024, Angular 19 released in November 2024, with Angular 20 expected in May 2025
React
Over 18 million developers worldwide use React, representing approximately 40% of all JavaScript developers
5.0
Approximately 25-30 million weekly downloads on npm as of early 2025
Over 500,000 questions tagged with 'reactjs' on Stack Overflow
Approximately 150,000-200,000 active React developer job postings globally across major job platforms
Meta (Facebook/Instagram), Netflix, Airbnb, Microsoft, Uber, Tesla, Shopify, Discord, Dropbox, Reddit, Twitter/X, WhatsApp, PayPal, Atlassian, and thousands of enterprises for web and mobile applications
Maintained primarily by Meta's React Core Team with significant contributions from the open-source community. Key maintainers include Dan Abramov, Sophie Alpert, Sebastian Markbåge, Andrew Clark, and Rick Hanlon among others. The project has hundreds of active contributors
Minor releases occur every few months with continuous canary releases. Major versions are released every 1-2 years. React 19 was released in 2024, with ongoing updates and patches released regularly

Community Insights

React maintains the largest ecosystem with 220k+ GitHub stars and backing from Meta, showing steady 8-10% year-over-year growth in npm downloads. Its job market dominance (65% of frontend positions) and extensive third-party library ecosystem make it the safest long-term bet. Vue.js has experienced remarkable growth, particularly in Asia and among independent developers, with 45k+ GitHub stars and a passionate community creating high-quality tooling like Nuxt and Vite. Angular's enterprise-focused community remains strong with Google's backing, though growth has plateaued at 93k+ GitHub stars. All three frameworks show healthy maintenance cycles, but React's weekly downloads (20M+) dwarf Vue (4M+) and Angular (3M+), indicating broader adoption and more extensive community resources for problem-solving.

Pricing & Licensing

Cost Analysis

License Type
Core Technology Cost
Enterprise Features
Support Options
Estimated TCO for
Vue.js
MIT
Free (open source)
All features are free including Vue Router, Vuex/Pinia state management, Vue CLI, and Vite build tool. No paid enterprise tier exists.
Free: Community forums, GitHub issues, Discord channel, Stack Overflow. Paid: Third-party consulting services ($100-$250/hour). Enterprise: Custom support contracts through agencies ($5,000-$20,000/month depending on SLA)
$500-$2,000/month for hosting (cloud infrastructure like AWS/Azure/GCP for frontend CDN, API servers, database), $8,000-$15,000/month for 2-3 developers, $0-$500/month for tooling (monitoring, CI/CD, testing services). Total: $8,500-$17,500/month
Angular
MIT
Free (open source)
All features are free and open source. No enterprise-specific paid features required.
Free community support via GitHub, Stack Overflow, Discord, and official documentation. Paid support available through third-party consultancies ($100-$300/hour) or enterprise consulting firms like Valor Software, Rangle.io ($150-$350/hour). Google provides indirect support through community engagement but no official paid support.
$500-$2000/month for hosting (AWS/Azure/GCP), CDN ($50-$200/month), CI/CD pipeline ($0-$300/month with GitHub Actions/GitLab CI), monitoring tools ($0-$200/month), and developer tooling. Does not include developer salaries. Total infrastructure cost: $550-$2700/month for medium-scale application serving 100K orders/month.
React
MIT
Free (open source)
All features are free. No separate enterprise version exists. Additional paid tools like React DevTools are also free.
Free: Community forums, GitHub issues, Stack Overflow, Discord channels. Paid: Third-party consulting ($100-$300/hour), Enterprise support through partners like Vercel or specialized agencies ($5,000-$50,000/year depending on SLA)
$500-$3,000/month including cloud hosting (AWS/Azure/GCP $300-$1,500), CDN services ($50-$300), monitoring tools ($50-$200), CI/CD pipeline ($100-$500), and developer tooling ($0-$500). Does not include developer salaries.

Cost Comparison Summary

All three frameworks are open-source with no licensing costs, but total cost of ownership varies significantly. React's vast talent pool reduces hiring costs and ramp-up time, though its unopinionated nature may increase initial architecture and tooling decisions by 20-30 hours per project. Vue.js offers the lowest total cost for small-to-medium teams due to faster development cycles and minimal boilerplate, potentially reducing project timelines by 15-25%. Angular's higher initial learning curve increases onboarding costs (typically 2-3 weeks longer than React), but reduces long-term maintenance costs in large codebases through enforced patterns and built-in strategies. For enterprise applications, Angular's comprehensive tooling can reduce third-party dependencies by 40-50%, lowering integration complexity and security audit costs. Hosting and infrastructure costs are comparable across all three, though Vue.js typically produces slightly smaller bundle sizes, marginally reducing CDN and bandwidth costs.

Industry-Specific Analysis

  • Metric 1: First Contentful Paint (FCP)

    Measures time until first text or image is painted
    Critical for perceived load performance and user engagement
  • Metric 2: Time to Interactive (TTI)

    Measures when page becomes fully interactive
    Directly impacts user frustration and bounce rates
  • Metric 3: Bundle Size Efficiency

    Total JavaScript bundle size delivered to client
    Affects initial load time and mobile data consumption
  • Metric 4: Lighthouse Performance Score

    Composite score of web vitals and performance metrics
    Industry standard benchmark ranging 0-100
  • Metric 5: Component Reusability Rate

    Percentage of UI components reused across application
    Measures code maintainability and development efficiency
  • Metric 6: Accessibility Compliance Score

    WCAG 2.1 AA/AAA conformance level
    Measures inclusive design and legal compliance
  • Metric 7: Cross-Browser Compatibility Coverage

    Percentage of target browsers with full functionality
    Critical for user reach and market penetration

Code Comparison

Sample Implementation

import { Component, OnInit, OnDestroy } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Subject, Observable } from 'rxjs';
import { takeUntil, debounceTime, distinctUntilChanged, switchMap, catchError } from 'rxjs/operators';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { of } from 'rxjs';

interface Product {
  id: number;
  name: string;
  price: number;
  stock: number;
}

interface ApiResponse<T> {
  data: T;
  message: string;
  success: boolean;
}

@Component({
  selector: 'app-product-search',
  template: `
    <div class="product-search-container">
      <form [formGroup]="searchForm">
        <input 
          type="text" 
          formControlName="searchTerm" 
          placeholder="Search products..."
          aria-label="Product search"
        />
        <span *ngIf="isLoading" class="spinner">Loading...</span>
      </form>
      
      <div *ngIf="errorMessage" class="error-message" role="alert">
        {{ errorMessage }}
      </div>
      
      <ul class="product-list" *ngIf="products.length > 0">
        <li *ngFor="let product of products" class="product-item">
          <h3>{{ product.name }}</h3>
          <p>Price: {{ product.price | currency }}</p>
          <p [class.out-of-stock]="product.stock === 0">
            Stock: {{ product.stock > 0 ? product.stock : 'Out of Stock' }}
          </p>
        </li>
      </ul>
      
      <p *ngIf="!isLoading && products.length === 0 && searchForm.get('searchTerm')?.value" class="no-results">
        No products found
      </p>
    </div>
  `,
  styleUrls: ['./product-search.component.css']
})
export class ProductSearchComponent implements OnInit, OnDestroy {
  searchForm: FormGroup;
  products: Product[] = [];
  isLoading = false;
  errorMessage = '';
  private destroy$ = new Subject<void>();
  private readonly API_URL = 'https://api.example.com/products';

  constructor(
    private fb: FormBuilder,
    private http: HttpClient
  ) {
    this.searchForm = this.fb.group({
      searchTerm: ['', [Validators.minLength(2)]]
    });
  }

  ngOnInit(): void {
    this.setupSearchListener();
  }

  private setupSearchListener(): void {
    this.searchForm.get('searchTerm')?.valueChanges
      .pipe(
        debounceTime(400),
        distinctUntilChanged(),
        takeUntil(this.destroy$),
        switchMap(term => {
          if (!term || term.trim().length < 2) {
            this.products = [];
            return of({ data: [], message: '', success: true });
          }
          this.isLoading = true;
          this.errorMessage = '';
          return this.searchProducts(term);
        }),
        catchError(error => {
          this.handleError(error);
          return of({ data: [], message: '', success: false });
        })
      )
      .subscribe((response: ApiResponse<Product[]>) => {
        this.isLoading = false;
        if (response.success) {
          this.products = response.data;
        } else {
          this.products = [];
        }
      });
  }

  private searchProducts(term: string): Observable<ApiResponse<Product[]>> {
    return this.http.get<ApiResponse<Product[]>>(
      `${this.API_URL}/search`,
      { params: { q: term.trim() } }
    ).pipe(
      catchError((error: HttpErrorResponse) => {
        this.handleError(error);
        throw error;
      })
    );
  }

  private handleError(error: HttpErrorResponse): void {
    this.isLoading = false;
    if (error.status === 0) {
      this.errorMessage = 'Network error. Please check your connection.';
    } else if (error.status >= 500) {
      this.errorMessage = 'Server error. Please try again later.';
    } else if (error.status === 404) {
      this.errorMessage = 'Products not found.';
    } else {
      this.errorMessage = error.error?.message || 'An unexpected error occurred.';
    }
    console.error('Product search error:', error);
  }

  ngOnDestroy(): void {
    this.destroy$.next();
    this.destroy$.complete();
  }
}

Side-by-Side Comparison

TaskBuilding an interactive e-commerce product catalog with real-time filtering, sorting, infinite scroll, shopping cart management, and responsive design across desktop and mobile devices

Vue.js

Building a dynamic todo list application with real-time filtering, state management, and component communication

Angular

Building a dynamic todo list application with add, delete, filter functionality and real-time state management

React

Building a dynamic todo list with add, delete, and toggle completion features, including state management and component composition

Analysis

For B2C e-commerce with high traffic and dynamic content, React offers the best ecosystem with libraries like Next.js for SSR/SSG, React Query for data fetching, and extensive UI component libraries, making it ideal for consumer-facing marketplaces. Vue.js excels in B2B e-commerce platforms where development speed and maintainability matter more than massive scale, with Nuxt providing excellent SEO capabilities and lower onboarding costs for mid-sized teams. Angular is optimal for large enterprise B2B platforms requiring strict governance, complex workflows, and integration with existing enterprise systems, where its opinionated structure and TypeScript-first approach reduce architectural decisions and enforce consistency across large distributed teams.

Making Your Decision

Choose Angular If:

  • Team expertise and learning curve - Choose React if team has JavaScript experience and values flexibility; Vue for easier onboarding and gentler learning curve; Angular if team prefers opinionated structure and TypeScript-first development
  • Project scale and complexity - Angular excels for large enterprise applications with multiple teams; React works well for medium to large apps needing custom architecture; Vue is ideal for small to medium projects or progressive enhancement
  • Ecosystem and third-party integration needs - React offers the largest ecosystem and community resources; Angular provides comprehensive official tooling; Vue balances both with good community support and official libraries
  • Performance requirements and bundle size constraints - Vue and React offer smaller initial bundles and better tree-shaking; Angular has larger baseline but optimizes well for large apps; Svelte or similar may be better for extreme performance needs
  • Long-term maintenance and hiring considerations - React has the largest talent pool; Angular provides strong conventions reducing architectural debates; Vue offers good documentation and maintainability with smaller but growing talent pool

Choose React If:

  • Team expertise and hiring constraints - choose React if you need the largest talent pool and extensive third-party library ecosystem, Vue for faster onboarding of junior developers, or Angular for teams that prefer opinionated structure and TypeScript-first development
  • Project scale and complexity - Angular excels in large enterprise applications with complex state management and strict architectural needs, React offers flexibility for projects requiring custom solutions and integrations, while Vue provides a balanced approach ideal for small-to-medium applications
  • Performance requirements and bundle size - Vue and Svelte deliver smaller initial bundle sizes and faster load times for content-heavy sites, React with proper optimization works well for interactive applications, while Angular's larger footprint is justified in complex SPAs where initial load is less critical
  • Long-term maintenance and corporate backing - React (Meta), Angular (Google), and Vue (community-driven with corporate sponsors) all offer stability, but Angular provides the most prescriptive upgrade paths and breaking change management, while React prioritizes backward compatibility
  • Development velocity and time-to-market - Vue offers the fastest prototyping with its intuitive API and single-file components, React provides rapid development through its vast ecosystem and reusable components, while Angular requires more upfront investment but pays dividends in maintainability for long-lived projects

Choose Vue.js If:

  • Project complexity and scale: React excels for large-scale applications with complex state management needs, while Vue offers simplicity for small to medium projects, and Angular provides enterprise-grade structure for massive applications with multiple teams
  • Team experience and learning curve: Vue has the gentlest learning curve and fastest onboarding, React requires JavaScript expertise and understanding of functional programming concepts, Angular demands TypeScript proficiency and familiarity with comprehensive framework patterns
  • Performance requirements: React and Vue offer similar performance with virtual DOM, Svelte compiles to vanilla JavaScript for smaller bundle sizes and faster runtime, while Angular's change detection can impact performance in very large applications without optimization
  • Ecosystem and tooling needs: React has the largest ecosystem with extensive third-party libraries, Angular provides a complete built-in solution with CLI, routing, and HTTP client, Vue and Svelte offer balanced ecosystems with official supporting libraries
  • Long-term maintenance and hiring: React and Angular have the largest talent pools and corporate backing (Meta and Google), Vue has strong community support but smaller enterprise adoption, Svelte is emerging with growing but limited developer availability

Our Recommendation for Projects

For most organizations, React represents the optimal choice due to its unmatched ecosystem, talent availability, and flexibility across use cases, from simple landing pages to complex applications. Choose React if you need maximum hiring flexibility, extensive third-party integrations, or are building consumer-facing products where performance and user experience are paramount. Vue.js is the strategic choice for teams prioritizing developer productivity and maintainability, particularly in mid-market companies or when migrating legacy applications incrementally—its gentle learning curve and excellent documentation reduce onboarding time by 30-40%. Angular remains the enterprise standard for large organizations with established TypeScript practices, complex business logic, and requirements for long-term maintainability with strict architectural patterns. Bottom line: React for maximum flexibility and ecosystem, Vue.js for rapid development and team efficiency, Angular for enterprise governance and large-scale type safety. Most startups and growth companies should default to React unless they have specific constraints favoring alternatives.

Explore More Comparisons

Other Technology Comparisons

Explore comparisons of state management strategies (Redux vs MobX vs Zustand) for your chosen framework, or compare meta-frameworks like Next.js vs Nuxt vs Angular Universal for server-side rendering capabilities. Additionally, consider evaluating component libraries (Material-UI vs Ant Design vs Chakra UI) and build tools (Webpack vs Vite vs esbuild) that complement your frontend framework decision.

Frequently Asked Questions

Join 10,000+ engineering leaders making better technology decisions

Get Personalized Technology Recommendations
Hero Pattern