Attributes and Properties in LWC

Attributes and Properties in LWC

On November 17, 2022, Posted by , In LWC Tutorial, With Comments Off on Attributes and Properties in LWC
Attributes and Properties in LWC

In Lightning Web Components (LWC), attributes and properties are central concepts that allow components to interact with each other and handle data effectively. Here’s an overview of both, explaining their roles, usage, and how they differ:


Attributes in LWC are typically used to define the configuration or initial values of component properties when the component is used in markup. They are set on the HTML tags of your custom elements and are always strings.

Key Points about Attributes:

  • Defined in the HTML markup of a component.
  • Used to initialize properties in the component.
  • Always treated as strings, even if they represent other data types like integers or booleans.
  • When an attribute value changes, the corresponding property is automatically updated if it has an attribute-to-property relationship.


Properties in LWC are more versatile and are defined in the JavaScript class of a component. They are used to keep track of state and can be of any JavaScript data type, such as strings, numbers, arrays, or objects.

Key Points about Properties:

  • Defined in the JavaScript class of the component.
  • Can be reactive if decorated with @track , @api , or @wire . The @api properties are public properties which are meant to be configurable from outside the component, whereas @track properties are private and used to trigger re-rendering upon internal state changes.
  • Properties can be complex data types and are more suited for maintaining the internal state of a component.
  • Changes in JavaScript properties can affect the DOM if they are reactive and used in the template.


Consider a simple LWC component that displays a greeting message:

HTML File (greeting.html):

    <h1>Hello, {greeting}!</h1>

JavaScript File (greeting.js):

import { LightningElement, api } from 'lwc';

export default class Greeting extends LightningElement {
    @api greeting = 'World'; // Public property, can be set as an attribute in markup

Usage in Another Component:

<c-greeting greeting="Everyone"></c-greeting>

In this example, greeting is a property defined in the Greeting component’s JavaScript file and decorated with @api , making it public. It can be set as an attribute in the component’s markup when used in another component or in an app.

Understanding the distinction and correct usage of attributes and properties is crucial in developing efficient and maintainable Lightning Web Components. This helps in structuring components that communicate clearly and maintain their internal state effectively.

For those looking for Salesforce learning, CRS Info Solutions provides an extensive Salesforce training program designed to enhance your skills and career opportunities. Explore our job-oriented Salesforce training to gain practical, hands-on experience, real-time projects included. Our training covers all essential aspects of Salesforce, ensuring comprehensive learning, providing daily notes, interview questions, certification preparation and job prep guidance. Enroll for Free demo today!

Comments are closed.