Angular vs React 2026: Complete Framework Guide

Compare Angular 19 Signals vs React 19 Compiler on performance, job market, and enterprise use cases. Complete data-driven framework comparison guide.

Inzimam Ul Haq
Inzimam Ul Haq
· 15 min read · Updated
Angular vs React comparison for modern web development in 2026
Photo by Blake Connally on Unsplash

TL;DR: React for startups, flexibility, and content sites. Angular for enterprise, large teams, and long-term projects. Performance is now equivalent. Choose based on team experience and project constraints, not framework hype.


React captured 88.6% of startup funding in 2025. Angular powers enterprise applications at Google, Microsoft, and Deutsche Bank. After a decade of framework debates, the question isn’t which is “better.” It’s which mental model matches your team, timeline, and technical requirements.

I’ve shipped production applications with both frameworks over the past several years: enterprise dashboards in Angular, startup MVPs and content platforms in React. This comparison reflects hands-on experience, not documentation synthesis. The patterns I’ve seen repeatedly: Angular teams ship slower initially but maintain velocity over years. React teams ship fast but sometimes drown in architectural decisions.

This comparison covers the 2026 landscape: Angular 19/20’s Signals and zoneless architecture versus React 19’s Compiler and Server Components. Current adoption data, code examples, and a decision framework included.

What Is Angular? What Is React?

Angular is a full-featured TypeScript framework; React is a focused UI library. This fundamental difference shapes everything else.

Angular, developed by Google, ships with routing, forms, HTTP client, dependency injection, and testing utilities built-in. Angular 19/20 introduced Signals for fine-grained reactivity and a zoneless architecture for cleaner state management.

React, developed by Meta, handles only the view layer. You choose libraries for routing, state management, and data fetching. React 19 introduced the React Compiler for automatic optimization and the use() hook for simplified async handling.

AspectAngularReact
TypeFull frameworkUI library
Maintained byGoogleMeta
LanguageTypeScript (required)JavaScript/TypeScript
ArchitectureComponent-based with modulesComponent-based
Release2016 (Angular 2+)2013
Current versionAngular 19/20React 19

Angular vs React: 2026 Market Data

React dominates adoption; Angular dominates enterprise. Understanding these patterns contextualizes the technical comparison.

How popular is React compared to Angular?

React leads with 20 million weekly npm downloads versus Angular’s 3.5 million (as of early 2026), a 5.7x difference. Developer surveys show 42% of frontend developers use React compared to 18% for Angular.

Which framework do funded startups choose?

An analysis of 334 software startups founded in 2024 with funding rounds in 2025 revealed React captured $2.52 billion out of $2.85 billion total, representing 88.6% of startup investment. Angular’s enterprise focus means it appears less frequently in startup stacks but dominates large-scale corporate applications.

What does the job market look like?

| Metric | React | Angular | | ---------------------- | --------------------------------- | ------------------------------- | ------------------ | | Job positions | 300,000+ | 80,000+ | | Weekly npm downloads | 20M | 3.5M | | Developer satisfaction | 62.2% want to continue | 53.4% want to continue | | GitHub stars | 210k+ | 90k+ | (as of early 2026) | | Typical environment | Startups, agencies, content sites | Enterprise, government, finance |

Developer satisfaction metrics show 62.2% of React developers wish to continue using it, while 53.4% of Angular developers feel the same. This gap reflects React’s flexibility appeal, though Angular developers often cite the framework’s structure as valuable for large teams.

The New Reactivity Battle: Signals vs Compiler

Both frameworks now auto-optimize performance, through different mechanisms. The 2025-2026 conversation shifted from basic component logic to reactivity models and compiler-driven optimizations.

Having migrated a legacy Angular app to Signals and adopted the React Compiler in a Next.js project, I can confirm both deliver on their promises. But they solve the problem differently.

Angular Signals: Fine-Grained Reactivity

What are Angular Signals?

Angular Signals are reactive primitives that track values and update only affected DOM nodes. Introduced in Angular 16, they’re simpler than RxJS and enable surgical re-renders.

import { Component, signal, computed } from "@angular/core";

@Component({
  selector: "app-counter",
  standalone: true,
  template: `
    <p>Count: {{ count() }}</p>
    <p>Doubled: {{ doubled() }}</p>
    <button (click)="increment()">Increment</button>
  `,
})
export class CounterComponent {
  // Writable signal
  count = signal(0);

  // Computed signal (derived state)
  doubled = computed(() => this.count() * 2);

  increment() {
    this.count.update((value) => value + 1);
  }
}

Signals provide three core primitives:

  • signal(): Writable reactive value
  • computed(): Derived value that updates when dependencies change
  • effect(): Side effects that run when signals change

Why did Angular add Signals?

Angular’s previous change detection relied on Zone.js to patch async APIs and trigger checks across the entire component tree. This approach worked but created performance overhead and debugging complexity. Signals enable:

  1. Surgical DOM updates: Only affected elements re-render
  2. Zoneless applications: Angular 20 supports apps without Zone.js
  3. Simpler mental model: Easier than RxJS for most state management
  4. Better performance: 30-40% faster initial renders reported in benchmarks

React Compiler: Automatic Memoization

What is the React Compiler?

The React Compiler automatically memoizes components at build time, eliminating manual useMemo and useCallback. Formerly called “React Forget,” it analyzes your code and inserts optimizations transparently.

// Before React Compiler: Manual optimization required
function ProductList({ products, onSelect }) {
  const sortedProducts = useMemo(
    () => products.sort((a, b) => a.price - b.price),
    [products],
  );

  const handleSelect = useCallback((id) => onSelect(id), [onSelect]);

  return sortedProducts.map((product) => (
    <ProductCard key={product.id} product={product} onSelect={handleSelect} />
  ));
}

// After React Compiler: Write naturally, compiler optimizes
function ProductList({ products, onSelect }) {
  const sortedProducts = products.sort((a, b) => a.price - b.price);

  return sortedProducts.map((product) => (
    <ProductCard
      key={product.id}
      product={product}
      onSelect={() => onSelect(product.id)}
    />
  ));
}

The compiler understands JavaScript semantics and React’s rules to determine what can be safely memoized. Early adopters report significant reduction in boilerplate and fewer performance-related bugs.

Signals vs Compiler: Direct Comparison

AspectAngular SignalsReact Compiler
Optimization approachRuntime fine-grained reactivityBuild-time automatic memoization
Developer effortExplicit signal creationWrite normal code, compiler optimizes
Learning curveNew API to learnTransparent (no new APIs)
GranularityDOM node levelComponent level
AdoptionOpt-in, coexists with RxJSOpt-in, works with existing code
MaturityStable since Angular 17Production-ready in React 19

Both approaches reduce unnecessary re-renders. Angular’s Signals require learning new primitives but offer more explicit control. React’s Compiler works transparently but optimizes at the component level rather than individual DOM nodes.

Angular Signals: Closing the Reactivity Gap

Angular Signals (stable since Angular 17) represent the biggest shift in Angular’s architecture:

// Angular Signals
import { signal, computed, effect } from "@angular/core";

@Component({
  template: `
    <p>Count: {{ count() }}</p>
    <p>Double: {{ doubled() }}</p>
    <button (click)="increment()">+1</button>
  `,
})
class CounterComponent {
  count = signal(0);
  doubled = computed(() => this.count() * 2);

  increment() {
    this.count.update((n) => n + 1);
  }
}
// React equivalent
function Counter() {
  const [count, setCount] = useState(0);
  const doubled = useMemo(() => count * 2, [count]);

  return (
    <>
      <p>Count: {count}</p>
      <p>Double: {doubled}</p>
      <button onClick={() => setCount((n) => n + 1)}>+1</button>
    </>
  );
}

Signals give Angular fine-grained reactivity without zone.js overhead, narrowing the performance gap with React for highly interactive UIs.

Server-Side Rendering: Hydration Strategies

Angular defers hydration on triggers; React eliminates it entirely for Server Components. Both approaches solve the same problem (making server-rendered HTML interactive) through different architectures.

Angular: Incremental Hydration

What is incremental hydration in Angular?

Incremental hydration defers component activation until user interaction or viewport entry. Angular 19+ uses @defer syntax to hydrate on-demand instead of all at once.

@Component({
  selector: "app-product-page",
  template: `
    <app-header />

    <app-hero-banner />

    <!-- Hydrate when visible -->
    @defer (on viewport) {
      <app-product-gallery [products]="products" />
    } @placeholder {
      <div class="skeleton-gallery"></div>
    }

    <!-- Hydrate on interaction -->
    @defer (on interaction) {
      <app-reviews [productId]="productId" />
    } @placeholder {
      <button>Load Reviews</button>
    }

    <!-- Hydrate after idle -->
    @defer (on idle) {
      <app-recommendations />
    }
  `,
})
export class ProductPageComponent {
  products = input<Product[]>();
  productId = input<string>();
}

Angular 19 also introduced:

  • Event replay: Captures user interactions during hydration and replays them once components are interactive
  • Route-level render modes: Configure SSR, CSR, or prerendering per route
  • Non-destructive hydration: Preserves server-rendered DOM instead of replacing it

React: Server Components

What are React Server Components?

Server Components render on the server and send zero JavaScript to the client. Unlike SSR, they never hydrate—they’re static HTML that stays static.

// Server Component (default in Next.js App Router)
// This component runs ONLY on the server
async function ProductPage({ params }) {
  // Direct database access - no API needed
  const product = await db.products.findUnique({
    where: { id: params.id },
  });

  return (
    <div>
      <h1>{product.name}</h1>
      <p>{product.description}</p>

      {/* Client Component for interactivity */}
      <AddToCartButton productId={product.id} />

      {/* Server Component - no JS sent */}
      <ProductReviews productId={product.id} />
    </div>
  );
}

// Client Component (explicit opt-in)
("use client");

function AddToCartButton({ productId }) {
  const [loading, setLoading] = useState(false);

  async function handleClick() {
    setLoading(true);
    await addToCart(productId);
    setLoading(false);
  }

  return (
    <button onClick={handleClick} disabled={loading}>
      {loading ? "Adding..." : "Add to Cart"}
    </button>
  );
}

Server Components provide:

  • Zero client JavaScript for static content
  • Direct backend access (databases, file system) without APIs
  • Automatic code splitting at the component level
  • Streaming with Suspense boundaries

For a comprehensive guide to implementing Server Components, see our React Server Components practical guide.

SSR Strategy Comparison

FeatureAngular (Incremental Hydration)React (Server Components)
Hydration modelDeferred, trigger-basedSelective (server-only vs client)
JavaScript sentReduced, loaded on demandZero for Server Components
Interactivity timingOn viewport/interaction/idleImmediate for Client Components
Data fetchingServices, HTTP clientDirect in Server Components
FrameworkAngular UniversalNext.js, Remix
ComplexityModerate (new @defer syntax)Higher (server/client boundary)

State Management Approaches

Angular provides built-in patterns; React offers ecosystem choice. This mirrors the framework-vs-library distinction throughout.

In my experience, this is where teams feel the difference most acutely. Angular projects I’ve worked on rarely debate state management. Signals + Services just work. React projects often spend the first sprint evaluating Zustand vs Jotai vs Redux Toolkit vs Context. That evaluation time isn’t free. For a detailed comparison of React’s state management options, see our React state management guide.

Angular: Signals + Services

Angular’s recommended approach combines Signals with injectable services. This pattern provides dependency injection, testability, and fine-grained reactivity without external libraries.

import { Injectable, signal, computed } from "@angular/core";

interface CartItem {
  productId: string;
  quantity: number;
  price: number;
}

@Injectable({ providedIn: "root" })
export class CartService {
  // Private writable signal
  private items = signal<CartItem[]>([]);

  // Public read-only computed values
  readonly cartItems = this.items.asReadonly();
  readonly itemCount = computed(() =>
    this.items().reduce((sum, item) => sum + item.quantity, 0),
  );
  readonly total = computed(() =>
    this.items().reduce((sum, item) => sum + item.price * item.quantity, 0),
  );

  addItem(product: { id: string; price: number }) {
    this.items.update((items) => {
      const existing = items.find((i) => i.productId === product.id);
      if (existing) {
        return items.map((i) =>
          i.productId === product.id ? { ...i, quantity: i.quantity + 1 } : i,
        );
      }
      return [
        ...items,
        { productId: product.id, quantity: 1, price: product.price },
      ];
    });
  }

  removeItem(productId: string) {
    this.items.update((items) =>
      items.filter((i) => i.productId !== productId),
    );
  }
}

For complex applications, NgRx provides Redux-style state management with Angular-specific optimizations. However, Signals reduce the need for external state libraries in many cases.

React: Flexible Options

React’s ecosystem offers multiple state management approaches:

Built-in (useState, useContext)

// Simple local state
const [count, setCount] = useState(0);

// Shared state via Context
const CartContext = createContext();

function CartProvider({ children }) {
  const [items, setItems] = useState([]);

  const addItem = (product) => {
    setItems((prev) => [...prev, product]);
  };

  return (
    <CartContext.Provider value={{ items, addItem }}>
      {children}
    </CartContext.Provider>
  );
}

Zustand (minimal boilerplate)

import { create } from "zustand";

const useCartStore = create((set) => ({
  items: [],
  addItem: (product) =>
    set((state) => ({
      items: [...state.items, product],
    })),
  removeItem: (id) =>
    set((state) => ({
      items: state.items.filter((item) => item.id !== id),
    })),
  total: () => {
    const { items } = useCartStore.getState();
    return items.reduce((sum, item) => sum + item.price, 0);
  },
}));

React 19’s use() hook

// New in React 19: read promises during render
function ProductDetails({ productPromise }) {
  const product = use(productPromise);
  return <h1>{product.name}</h1>;
}

// Can be called conditionally (unlike other hooks)
function UserProfile({ userId, showDetails }) {
  if (showDetails) {
    const user = use(fetchUser(userId));
    return <Profile user={user} />;
  }
  return <BasicInfo userId={userId} />;
}

State Management Comparison

ApproachAngularReact
Built-inSignals + ServicesuseState, useContext
Simple global stateSignals in servicesZustand, Jotai
Complex/Redux-styleNgRxRedux Toolkit, Recoil
Server stateHttpClient + SignalsTanStack Query, SWR
Learning curveModerate (Signals are new)Varies by library choice

Bundle Size and Performance

Angular’s larger baseline includes what React requires as add-ons. The raw numbers are misleading without context.

What is the bundle size difference between Angular and React?

Angular ships ~140KB gzipped; React ships ~45KB. But Angular includes routing, forms, and HTTP. React needs additional libraries to match.

MetricAngularReact + Ecosystem
Core library~140KB~45KB
With routingIncluded+15KB (React Router)
With formsIncluded+10KB (React Hook Form)
With HTTP/dataIncluded+15KB (TanStack Query)
Realistic total~140KB~85-120KB

Performance benchmarks (2025-2026)

Both frameworks perform excellently when used correctly. Angular 20 benchmarks show:

  • 30-40% faster initial renders compared to Angular 19
  • 50% reduction in unnecessary re-renders with Signals

React 19 with the Compiler shows:

  • Automatic elimination of re-render cascades
  • Reduced JavaScript execution time through memoization

For most applications, the performance difference is negligible. Architecture decisions, code splitting, and lazy loading have greater impact than framework choice. For React-specific optimization strategies, see our React performance optimization guide.

Developer Experience Comparison

Angular enforces consistency; React enables flexibility. Your preference depends on whether you value guardrails or freedom.

Angular: Structured and Opinionated

Angular provides a consistent developer experience through:

Angular CLI

# Generate components, services, modules
ng generate component product-card
ng generate service cart
ng generate guard auth

# Build with optimizations
ng build --configuration=production

# Run tests
ng test
ng e2e

Built-in tooling

  • Schematics for code generation
  • Integrated testing (Jasmine, Karma, Protractor/Playwright)
  • Strict mode for enhanced type checking
  • Automatic migrations via ng update

Opinionated structure

src/
├── app/
│   ├── core/           # Singleton services, guards
│   ├── shared/         # Reusable components, pipes
│   ├── features/       # Feature modules
│   │   ├── products/
│   │   └── cart/
│   └── app.component.ts

React: Flexible and Ecosystem-Driven

React’s developer experience depends on your tooling choices:

Meta-frameworks (recommended)

# Next.js (most popular)
npx create-next-app@latest

# Remix
npx create-remix@latest

# Vite + React
npm create vite@latest my-app -- --template react-ts

Ecosystem choices

  • Routing: React Router, TanStack Router, or framework-built-in
  • Forms: React Hook Form, Formik, or native
  • Testing: React Testing Library, Vitest, Playwright
  • Styling: Tailwind, CSS Modules, styled-components, Emotion

Flexible structure (no enforced convention)

src/
├── components/
├── hooks/
├── lib/
├── pages/ or app/
└── styles/

Component Libraries and UI

Both ecosystems have mature component libraries:

Angular

  • Angular Material: Google’s Material Design implementation
  • PrimeNG: Comprehensive enterprise component suite
  • NG-ZORRO: Ant Design for Angular
  • Taiga UI: Modern, customizable components

React

  • Material UI (MUI): Most popular Material Design library
  • Chakra UI: Accessible, customizable components
  • Radix UI: Unstyled, accessible primitives
  • shadcn/ui: Copy-paste components built on Radix
  • Ant Design: Enterprise-focused component library

For animations, React has an edge with Framer Motion, though Angular Animations integrates well with the framework’s change detection.

When to Choose Angular

Choose Angular if:

  1. You’re building enterprise applications with 10+ developers where enforced conventions reduce code divergence
  2. Your team has TypeScript and OOP experience, especially developers from Java, C#, or .NET backgrounds. For React teams adopting TypeScript, see our TypeScript for React developers guide
  3. You need built-in solutions for routing, forms, HTTP, and dependency injection without evaluating libraries
  4. Long-term maintainability is critical. Angular’s structure pays dividends over years of maintenance
  5. You’re in a regulated industry (finance, healthcare, government) where Angular’s enterprise adoption provides confidence

Angular excels for:

  • Large-scale enterprise applications
  • Teams that benefit from opinionated architecture
  • Projects requiring comprehensive built-in tooling
  • Organizations with existing Angular expertise

When to Choose React

Choose React if:

  1. You want ecosystem flexibility to choose best-in-class libraries for each concern
  2. You’re building content-heavy sites with Next.js or Astro for SSR/SSG capabilities
  3. Your team prefers functional programming patterns and composition over inheritance
  4. You need React Native for mobile development with shared code
  5. Hiring speed matters. React’s larger talent pool (300,000+ positions) means faster recruitment

React excels for:

  • Startups and MVPs requiring fast iteration
  • Content sites with SEO requirements
  • Cross-platform development (web + mobile)
  • Teams that value architectural freedom
  • Projects leveraging Server Components for performance

Decision Framework

Use this framework to guide your choice:

Angular vs React Decision Framework - A flowchart showing how to choose between Angular and React based on team size, project requirements, and technical needs

FactorChoose AngularChoose React
Team size10+ developersAny size
Project duration3+ yearsAny duration
Architecture preferenceOpinionated, structuredFlexible, composable
TypeScriptRequired (comfortable)Optional (preferred)
Mobile needsIonic, NativeScriptReact Native
SSR approachAngular Universal, incremental hydrationNext.js, Server Components
State complexityHigh (NgRx available)Any (many options)
Hiring priorityEnterprise talentStartup/agency talent

Still unsure? Consider these tiebreakers:

  • If your team has no framework experience, React’s gentler learning curve helps
  • If you’re replacing an existing Angular app, staying with Angular reduces migration risk
  • If you’re building a content site, React + Next.js has the strongest ecosystem
  • If you’re in enterprise with Java/.NET teams, Angular’s patterns feel familiar
  • If you’re vibe coding with AI tools, React wins. LLMs have seen more React code, generate better React snippets, and the ecosystem’s flexibility works well with AI-assisted development. Angular’s strict patterns can fight against AI suggestions.

Migration Considerations

Can you migrate between Angular and React?

Yes, but expect a rewrite, not a conversion. The architectures differ fundamentally. Angular uses classes and DI; React uses functions and composition.

Migration typically means rewriting components rather than converting them. Common approaches:

  1. Strangler pattern: Build new features in the target framework while maintaining existing code
  2. Micro-frontends: Run both frameworks in different parts of the application
  3. Full rewrite: Replace the entire application (highest risk, sometimes necessary)

Plan 3-6 months for medium-sized applications. Consider whether migration provides enough value versus improving the existing codebase.

The Contrarian Take

“Angular is dying” is wrong. Angular isn’t declining—it’s consolidating into its enterprise niche. The frameworks that “die” are the ones without a clear use case. Angular has one: large teams building complex applications that need enforced structure. Google, Microsoft, and Deutsche Bank aren’t switching to React. The 18% market share represents intentional adoption, not leftover legacy.

I’ve seen this firsthand: companies that chose Angular five years ago are still shipping features efficiently. The developers who joined later onboarded faster because the patterns were already established. That’s the Angular value proposition. Consistency compounds.

React’s ecosystem advantage is also its weakness. Decision fatigue kills velocity. Every React project starts with the same questions: Which router? Which state library? Which form library? Which styling approach? These decisions compound. A team can spend weeks evaluating options before writing business logic. Angular’s “batteries included” approach eliminates this overhead. You build features instead of debating architecture.

I’ve watched React teams lose two weeks to “should we use Zustand or Jotai?” debates. Both are fine choices. The debate itself was the problem.

Neither framework is universally “better.” They optimize for different constraints.

Key Takeaways

  • React dominates startups (88.6% of funding) and job market (300,000+ positions); Angular dominates enterprise and regulated industries
  • Performance is now equivalent. Angular Signals and React Compiler both auto-optimize. Architecture matters more than framework choice
  • Angular = structure + consistency; React = flexibility + ecosystem choice. Pick based on team preference, not hype
  • SSR strategies differ fundamentally: Angular’s incremental hydration defers activation; React’s Server Components eliminate client JS entirely
  • The skills transfer: Component thinking, state management, and performance optimization apply to both frameworks

Conclusion

Choose Angular for structure; choose React for flexibility. Both are excellent. The “wrong” choice is analysis paralysis.

Angular provides structure, comprehensive tooling, and enterprise-grade patterns. Choose it for large teams, long-term projects, and organizations that value consistency.

React provides flexibility, ecosystem choice, and the largest community. Choose it for startups, content sites, cross-platform development, and teams that value architectural freedom.

Both frameworks have evolved significantly. Angular’s Signals simplify reactivity without abandoning RxJS. React’s Compiler eliminates manual optimization. The performance gap has narrowed to negligible for most applications.

The skills you develop (component architecture, state management, performance optimization) transfer between frameworks. I’ve moved between Angular and React projects multiple times. The mental models overlap more than the syntax differences suggest. Your choice today doesn’t lock you in forever.

Next step: Clone a starter template for both frameworks. Build the same small feature (a todo list, a product card) in each. You’ll know within a few hours which mental model clicks for your team.

Related Resources:

Frequently Asked Questions

Is Angular or React better for beginners in 2026?
React has a gentler learning curve due to its focused scope as a UI library. Angular requires learning TypeScript, Signals, and dependency injection upfront, but provides more structure. Most bootcamps teach React first, making it easier to find learning resources.
Which has better performance, Angular or React in 2026?
Both frameworks now offer compiler-driven optimizations. React 19's Compiler automatically memoizes components, while Angular's Signals provide fine-grained reactivity. Performance differences are negligible for most applications. Architecture and code quality matter more.
Should I use Angular or React for enterprise applications?
Angular is often preferred for large enterprise applications due to its opinionated structure, built-in TypeScript, and comprehensive tooling. Companies like Google, Microsoft, and Deutsche Bank use Angular. However, React with TypeScript and established patterns works equally well at scale.
What is the React Compiler and how does it compare to Angular Signals?
React Compiler (formerly React Forget) automatically adds memoization at build time, eliminating manual useMemo/useCallback. Angular Signals provide fine-grained reactivity where only affected DOM nodes update. Both reduce unnecessary re-renders through different mechanisms.
Which framework has more job opportunities in 2026?
React has approximately 300,000+ job positions compared to Angular's 80,000+. React dominates startups (88.6% of funded startups use it), while Angular positions concentrate in enterprise environments with competitive salaries.
What are Angular Signals and why do they matter?
Angular Signals are a new reactive primitive introduced in Angular 16+ that provide simpler state management than RxJS. Signals enable fine-grained DOM updates, reducing unnecessary re-renders and improving performance without Zone.js overhead.
Can I migrate from Angular to React or vice versa?
Yes, but it requires significant effort. The architectures differ fundamentally, so migration means rewriting components rather than converting them. Many teams migrate incrementally, running both frameworks during transition. Plan for 3-6 months for medium-sized applications.
What is incremental hydration in Angular?
Incremental hydration (Angular 19+) defers component hydration based on triggers like user interaction or viewport entry using @defer syntax. This reduces initial JavaScript execution and improves Time to Interactive (TTI) for server-rendered applications.