Create a Server-side Apex Controller Class



Since Lightning Web Components is the preferred way to build UI with Salesforce, head over to the Migrate from Aura to Lightning Web Components trail to learn how to use LWC and comply with current web standards. Otherwise, continue with this badge to learn more about Aura.


The Lightning Component framework is a UI framework for developing dynamic web apps for mobile and desktop devices.

In this Quick Start, you'll create a simple Lightning Component that renders a list of Contacts from your org. You'll start by creating an Apex controller class, then create a Lightning Component and an event handler and finally render the list of Contacts in the component.

My Domain Is Already On in Your Trailhead Playground

Do not attempt to turn on My Domain, or change its settings, in your Trailhead Playground. By default, My Domain is already active in every Trailhead Playground.

My Domain name highlighted in a Trailhead Playground URL

In your production org, My Domain lets you create a subdomain unique to your organization. With My Domain, you replace the instance URL that Salesforce assigns you, such as, with your chosen subdomain, for example,

My Domain is required to create custom Lightning components and set up single sign-on (SSO) in an org. To learn more about My Domain, check out this knowledge article. To learn how to activate it in your production org, see the User Authentication module.

Build an Apex Controller

Create a class to access data from Contacts.

  1. In your Trailhead Playground, click Gear icon to access Setup in Lightning Experience and select Developer Console.
  2. Select File | New | Apex Class.
  3. For the class name, enter MyContactListController and then click OK.
  4. In the body of the class (i.e. between the {} braces), enter the following code

    Tip: You can copy and paste any code snippet from Trailhead by clicking copy in the top right corner.

    public static List<Contact> getContacts(Id recordId) {
       return [SELECT Id, FirstName, LastName, Email, Phone FROM Contact WHERE AccountId = :recordId];

    Apex methods designated @AuraEnabled are able to be called from a Lightning component.

  5. Select File | Save.
Keep learning for
Sign up for an account to continue.
What’s in it for you?
  • Get personalized recommendations for your career goals
  • Practice your skills with hands-on challenges and quizzes
  • Track and share your progress with employers
  • Connect to mentorship and career opportunities