Lightning Events: Detail Overview

Lightning Events: Detail Overview

In my previous post I have explain the Lightning Basic. But I in that post we only cover basics of Lightning events. I think Lightning events are more complex and need a detailed separate post. So today we will cover lightning events in details.

Events are used in Lightning to communicate between two components and pass data between them. In Lightning we have two types of Events:

  1. Component Event
  2. Application Event

Component Event: A component event is fired from an instance of a component. A component event can be handled by the component that fired the event or by a component in the containment hierarchy that receives the event.

Here’s the sequence of component event propagation.

  1. Event fired—A component event is fired.
  2. Capture phase—the framework executes the capture phase from the application root to the source component until all components are traversed. Any handling event can stop propagation by calling stopPropagation() on the event.
  3. Bubble phase—The framework executes the bubble phase from the source component to the application root until all components are traversed or stopPropagation() is called.

Create Custom Component Events

We can create a custom component event with file .evt. Events can contain attributes that can be set before the event is fired and read when the event is handled. Use type=”COMPONENT” in the tag for a component event. For example, this c:compEvent component event has one attribute with a name of message.


<aura:event type="COMPONENT">

<!-- Add aura:attribute tags to define event shape. One sample attribute here. --> <aura:attribute name="message" type="String"/>


Fire Component Events Fire We can fire the Component event to pass date to other component. A component event can be handled by the component that fired the event or by a component in the containment hierarchy that receives the event.

Register an Event A Component first register a event which he will fire. Value of the name attribute is used for firing and handling events. Fire an Event To get a reference to a component event in JavaScript, we can use cmp.getEvent(“evtName”) where evtName matches the name attribute . And we need to  Use fire() to fire the event from an instance of a component. For example, This is similar as action attribute in apex:actionfunction.

var compEvent = cmp.getEvent("sampleComponentEvent");

// Optional: We can also set the data in attribute which we need to pass

// A parameter’s name must match the name attribute of one of the event’s tags

// compEvent.setParams({"myParam" : myValue });;

Handling Component Events

A component event can be handled by the component that fired the event or by a component in the containment hierarchy that receives the event. For example: The name attribute in must match the name attribute in the tag in the component that fires the event. The action attribute of sets the client-side controller action to handle the event. The event attribute specifies the event being handled. The format is namespace:eventName

<aura:handler name="sampleComponentEvent" event="c:compEvent"

In my next post we will cover the Application event and some difference between these two.

Do you have anything to add please let me know in comments section. Happy Programming 🙂


Salesforce Spring 18: Quick Preview

Salesforce Spring 18: Quick Preview

Happy New Year Everyone. And god bless to them who had hardcoded 2017 in there code. Salesforce has just release Spring 18 and this time also the main focus remains n Einstein and Lightning. In this release there are many good feature are introduced. So let’s take a quick look at them.

Spring 18
  1. Gather Feedback with Salesforce Surveys (Generally Available)

Salesforce now has introduced Surveys. Create beautiful, easy-to-use forms for collecting feedback and data from your users or customers. Add different types of questions to gather the data you need. All your valuable survey data is stored in your org, so you can harness the power of Salesforce to view data, create reports and dashboards, and share insights with your company.

  1. Enable the New URL Format for Lightning Experience and the Salesforce

Salesforce is changing the URL format used by Lightning Experience standard apps and the Salesforce mobile app. The new URL format is more readable and addresses the issue of being directed to an unexpected location when accessing Lightning Experience URLs before authenticating. This update doesn’t apply to console apps and communities.

For example:

Custom or installed Lightning components that parse a URL may break or behave differently after this change, especially components with logic that relies on window.location or the aura:locationChange event.

  1. Einstein

Einstein Opportunity Scoring: Artificial Intelligence for Opportunities (Generally Available)

Salesforce has expanded the Sales Cloud Einstein product suite with Einstein Opportunity Scoring. Now we can prioritize our way to more business. This feature is new in Lightning Experience and Salesforce Classic.

Einstein Forecasting: Intelligent Predictions About our Sales Teams (Beta)

Let Einstein take the guesswork out of forecasting. Use artificial intelligence to get more certainty and visibility into how your sales teams are doing. This feature is new in both Lightning Experience and Salesforce Classic.

Einstein Lead Scoring: Clearer Predictive Factors and Detection of Rank and Department

Get a clearer view of the reasons behind each score. And see better scores with rank and department information. These changes apply to both Lightning Experience and Salesforce Classic.

Einstein Insights: Access Account and Opportunity Insights from Your Mobile Device (Pilot)

Einstein Insights are now. See predictions about which deals are likely to be won, reminders to follow up, and notifications when key moments in a deal take place. Reps can take action directly from the insights, including editing the related record or sending emails to relevant contacts. This change applies to Salesforce for iOS and Salesforce for Android.

Einstein Platform Services APIs

Use the Einstein Platform Services APIs to easily AI-enable your apps with image recognition and natural language processing. Using the Einstein Vision APIs, you can leverage pre-trained classifiers or train your own custom classifiers to solve a vast array of specialized image recognition use cases. With the Einstein Language APIs, you can harness the power of natural language processing to analyze text and infer the sentiment or intent behind that text. Make your apps smarter, and look like a genius at the same time.

  1. Stay on Top of Duplicate Records by Using Duplicate Jobs PERMISSIONS

Good clean data builds the trust of your sales team. It also helps you work toward complying with various data protection and privacy regulations. So you’ve got everything to gain by getting a global view of duplicate records. Use duplicate jobs with standard or custom matching rules to scan your Salesforce business or person accounts, contacts, or leads for duplicates. Share job results with others and merge the duplicates—all within Salesforce. Use information about duplicate jobs we’ve run to track the progress in reducing duplicate records. This feature is new in Lightning Experience.

  1. Salesforce IoT: IoT REST API, New Context UI, IoT Usage Monitoring, and Email Alerts

Use Salesforce IoT Explorer Edition to process events from connected devices in near real time and create meaningful interactions with your customers. Explorer offers built-in integration with Salesforce data and lets you leverage your Customer Relationship Management (CRM) investments in Salesforce. This release includes a new IoT REST API to retrieve and manipulate orchestrations and their related components, and a new user interface for contexts. Also, Salesforce is introducing an IoT usage monitoring page, email alerts, and the ability to export and delete IoT data for data privacy.

  1. Use without sharing for @AuraEnabled Apex Controllers with Implicit Sharing (Critical Update)

This critical update changes the behavior of @AuraEnabled Apex controllers that don’t specify with sharing or without sharing to default to without sharing. This change relaxes the security for controllers that don’t explicitly set sharing behavior using these keywords. It’s a best practice to always use with sharing in Apex controllers used with Lightning components.

  1. Find Dynamically Created Components

We can now use cmp.find() to find a component that we have create dynamically with $A.createComponent().

  1. Remove Instance Names from URLs for Visualforce, Community Builder, Studio, and Content Files (Critical Update)

Salesforce is stabilizing the hostname of Visualforce, Community Builder, Studio, and content file URLs by removing instance names from URLs. This critical update applies to orgs that have a deployed My Domain. It will be activated automatically on March 16, 2019.

Prior to Winter ’18, Visualforce, Community Builder, Studio, and content file URLs included the instance name of the org, even when a My Domain name was deployed. An instance name identifies where your Salesforce org is hosted. When Salesforce remove the instance name from our URLs, hostnames change.

Here are two examples:

  • mydomain– replaces mydomain–
  • mydomain– replaces mydomain–

Note: All * URLs will be replaced with *

  1. Employ Validation Rule Formulas with Custom Metadata Types

If we use validation rules, you know how helpful they can be, but you have to hard code some of the values. Now you can store values you previously had to hard code in custom metadata types and reference them in your validation rules.

Example: Use a validation rule formula to limit discounts on certain brands to 10%. You can use validation rules without custom metadata. However, to change an amount, you must update the hardcoded value. If you have multiple validation rules that check the discount amount, you have to manage all of them. Instead, use a validation rule formula with custom metadata types.

  1. Create a custom metadata type. In this example, we named it DiscountLimits.
  2. Create a custom field for your type. We named it maxDiscount.
  3. Create a record. We named it FoodDiscount.

When done, you can reference the custom metadata type in your validation rule. The syntax is:


Make sure to use the correct suffixes. For the custom metadata type, use __mdt. For fields, use __c. Records require no suffix.

Your validation rule for this example looks something like this:

Discount > $CustomMetadata.DiscountLimits__mdt.FoodDiscount.maxDiscount__c

  1. In Spring 18 Salesforce added two new methods in list class. They are


Returns true if the list contains the specified element.


Returns the index of the first occurrence of the specified element in this list. If this list does not contain the element, returns -1.

So now we no longer dependent on set to check for duplicate key at the same time we can maintain order as well.

  1. Collect Debug Logs for Guest Users Without Setting Cookies

In Winter ’17, Salesforce introduced a change that required guest users to set browser cookies to activate debug logging. people didn’t like the Winter ’17 change. Setting cookies is complicated, and the change made collecting debug logs for public users’ asynchronous activity impossible. Now public users no longer need a debug_logs browser cookie to trigger logging. This change applies to both Lightning Experience and Salesforce Classic.

  1. Avoid Huge Debug Logs for Managed Package Code

Debug logs no longer include ENTERING_MANAGED_PKG events when your log level for the Apex Code category is INFO or DEBUG. To log ENTERING_MANAGED_PKG events, set your Apex Code log level to FINE, FINER, or FINEST.

IOT And AI: The future is here

Salesforce with 3 release in a year also introduce many more products from time to time to use the latest technology  to keep it system updated and fast. While the current major thing is Lightning, Salesforce recently introduce two more products and actively working on them. They are Internet of Thing and Artificial Intelligence.

As everyone is aware these two things are major part of IT industry and in upcoming year so salesforce Introduce them for its CRM.  So I everyone should start learning these technology because they are the future and as a Developer we need to keep ourself updated.

IOT: Salesforce IoT Cloud is powered by Thunder, a scalable event processing engine, designed to ingest and analyze billions of events. Events are the data that comes from the networked devices and objects we talked about above. On top of that, Thunder lets you take personalized actions based on these events, which help your company create more enriching and focused customer experiences.


IoT Cloud’s way of taking in data and triggering actions to create experiences lets your company focus on creating engaging, individualized experiences for all your customers. These might be customized alerts, emails, or messages. Or the actions might be something else within Salesforce, like creating a service ticket, or customizing the information they access through an app.

Imagine a world where you can react to real-time information, quickly creating these interactions with all your customers, so that the experiences feel personal, specific, and at the right time. Well, imagine no more. Buckle up for a quick flight to the land of IoT.

Artificial Intelligence:  AI is the concept of having “machines think like humans.” You’re starting to see examples of AI in your everyday life because we’re at an evolutionary tipping point. AI isn’t a new concept—we’ve had the theoretical models for a long time—but it’s finally possible thanks to the access and increase in large amounts of data combined with the low cost of high-power computing.


AI has benefits for all parts of the business. Sales reps no longer have to enter sales data manually. Marketers no longer have to use manual A/B testing to select the best social media images for their next campaign. And customer service managers no longer have to sift through long lists of incoming service calls to prioritize their time.

AI will impact each and every part of CRM and with Einstein  it will make many thing smooth as well because in the bunch of leads it will show most important Leads on top, Notify you to follow from customer and send them reminder email and many other things as well. AI will act like personal Assistance available at anytime anywhere in your fingertip. AI with CRM make Salesforce CRM a smart CRM.

So this is a brief idea of what IOT and AI is but in near future they play an important part and this will make them a must learn thing. So include them in your learning or TO DO list and let me know in comments what things you like most about these and what improvement you want to see in them.