Learn MOAR in Winter ’22 with LWC Cookie Consent Module | Salesforce Developers Blog

Follow and complete a Learn MOAR Winter ’22 trailmix for Admins or Developers by October 31 to earn a special community badge and get a chance to win one of five Salesforce Certification vouchers (up to $200USD value). Restrictions apply. Learn how to participate and review the Official Rules by visiting the Learn MOAR quests page.

The Winter ’22 release introduces a much anticipated module for managing cookie consent right in Lighting Web Components! You can check consent against a category and set the category’s consent status each time you want to make a change. This makes it much easier to control a user’s access to cookies in your Experience Cloud sites.

How the LWC cookie consent module works

First of all, there are two cookies used to manage cookie consent: CookieConsentPolicy and CookieConsent. There are two client side APIs to help you check and set the cookie consent preferences.

Note: You must first enable cookie consent in your sites Security & Privacy settings.

To get started, you must import the setCookieConsent and isCategoryAllowedForCurrentConsent methods from the userConsentCookie module. This give us access to these methods right in our Lighting Web Component.

import {
   setCookieConsent,
   isCategoryAllowedForCurrentConsent,
} from 'lightning/userConsentCookie';

The setCookieConsent method allows you to update the cookie consent for the current browser. It accepts a consentPreferences object that sets the value on each consent category. In this example, we can set the Preferences category to false and the Marketing category to true.

const consent = {"Preferences" : false,"Marketing" : true}

setCookieConsent(consent);

The isCategoryAllowedForCurrentConsent method accepts a category’s name as a string and returns a boolean response for the current status. This allows you to check the category before you display the value to a user.

Bringing it all together

Using both of these methods, we can create a Lightning Web Component to help you manage cookies in your site. In our JavaScript file, we can import the methods from the module. We can then get the current consent values by calling the isCategoryAllowdForCurrentConsent method and passing in a string for each of the categories. Then, when consent is changed in the UI, we can handle that change in the changeConsentValue method by updating the cookie and passing the consent object into the setCookieConsent method.

cookieConsent.js

import { LightningElement, track } from "lwc";
import {
  setCookieConsent,
  isCategoryAllowedForCurrentConsent
} from "lightning/userConsentCookie";

export default class CookieConsent extends LightningElement {
  showConsentModal = false;

  @track consent = {
    Preferences: isCategoryAllowedForCurrentConsent("Preferences"),
    Marketing: isCategoryAllowedForCurrentConsent("Marketing"),
    Statistics: isCategoryAllowedForCurrentConsent("Statistics")
  };

  changeConsentValue(event) {
    const cookieCategory = event.currentTarget.dataset.category;
    const value = event.currentTarget.checked;
    this.consent[cookieCategory] = value;
    setCookieConsent(this.consent);
  }
}

This will allow us to present cookies to our users through a component.
Screen Shot 2021-08-26 at 9.33.41 AM.png

Getting started

If you would like to learn more about managing cookies in Lightning Web Components, you can read the release notes and check out Release Readiness Live for a demo and overview of this great feature!

Resources
Cookies in Experience Cloud

About the author

Stephan Chandler-Garcia is a Senior Developer Evangelist at Salesforce. He focuses on application development, security, and Experience Cloud. You can follow him on Twitter @stephanwcg.

Stay up to date with the latest news from the Salesforce Developers Blog

Subscribe