Difference between @track, @api, and @wire LWC decorators

Difference between @track, @api, and @wire LWC decorators Salesforce Shastras

Hello there, tech-enthusiasts! Today, we are going to discuss one the most significant aspects of Salesforce Lightning Web Components (LWC): decorators. In this article, we will delve into the fascinating world of @track, @api, and @wire decorators, their key differences, and how they interweave to create robust components. These magical decorators are your powerful assets in leveraging the full potential of LWC.

What is a Decorator?

In the realm of software programming, a decorator is a special kind of declaration that can be attached to a class declaration, method, accessor, property, or parameter. With decorators, developers can modify or add behavior to the elements they decorate.

The three most commonly used decorators in LWC are @track, @api, and @wire. Let’s dive deep into each one of them.

The @track Decorator

With this property decorator, you can monitor changes in objects and arrays thus helping create dynamic components. Think of @track as your personal change tracker.

Here’s a few key points about @track:

  • It is used for reactive properties
  • It tracks changes in the template within an object or an array.
  • It does not observe changes in primitive values as they are reactive by default since Spring ’20 release.

Let’s consider an example:

import { LightningElement, track } from 'lwc';
export default class Example extends LightningElement {
    @track greeting = 'Hello World!';

In this example, whenever the variable ‘greeting’ modifies, the component renders again displaying the new value in the DOM.

“The @track decorator actively observes changes, making your components truly dynamic.”

Examining the @api Decorator

The @api decorator is instrumental when you want to expose public reactive properties or public methods that allow your component to communicate and interact with other components. With @api, it’s like having a two-way radio for interactions.

Here’s what to know about @api:

  • It exposes public properties or methods.
  • It allows properties to be set by a parent component.
  • It facilitates component communication.

Consider an example:

import { LightningElement, api } from 'lwc';
export default class Example extends LightningElement {
    @api recordId;

In the above example, ‘recordId’ is exposed to parent components, allowing them to set this value.

“@api opens the lines of communication between components, promoting interaction and collaboration.”

Decoding the @wire Decorator

The @wire decorator enables a component to read data from a Salesforce org’s server. Imagine @wire as a lifeline that connects your component to a wealth of data stored in the cloud.

Key points about the @wire decorator:

  • Utilized for connecting to data and metadata from Salesforce org.
  • It can use multiple services like record data, LDS, etc.
  • It facilitates work with dynamic, server-side data.

Here’s an example:

import { LightningElement, wire } from 'lwc';
import NAME_FIELD from '@salesforce/schema/Account.Name';
import { getRecord } from 'lightning/uiRecordApi';

export default class Example extends LightningElement {
    @wire(getRecord, { recordId: '$recordId', fields: [NAME_FIELD] }) account;

In this example, the application queries the Salesforce server for Account information, and that data automatically updates when it changes on the server.

“@wire provides a constant stream of data, keeping your components connected and in sync with real-time changes.”


Recognizing and understanding these three decorators – @track, @api, and @wire – is key to leverage the full potential of Salesforce Lightning Web Components. Each decorator serves a unique purpose:

  • @track monitors changes
  • @api enhances communication and
  • @wire keeps your data real-time and dynamic.

In your journey with LWC, remember that @track, @api, and @wire will always be your foundational stones. Understanding these decorators will undoubtedly enable you to write robust and efficient LWCs effectively.

Now that you have this knowledge, it’s time for you to weave your magic with these decorators. Happy coding!

2 thoughts on “Difference between @track, @api, and @wire LWC decorators

Leave a Reply

Your email address will not be published. Required fields are marked *