Spring ’21

After a long 2020, looking for some things to celebrate in 2021! I wanted to start by saying that I’ll miss Wade Wegner and Sofia Rodríguez, who are leaving Salesforce to continue their careers elsewhere. Wade has been one of the leaders in charge of SalesforceDX and Sofia worked closely with the MVPs on the Salesforce Community team. I also wanted to congratulate Sarah Franklin on her promotion to Salesforce Chief Marketing Officer (formerly EVP of Platform and Trailhead) and Amy Weaver on her promotion to Salesforce Chief Financial Officer (formerly Chief Legal Officer). Hopefully there is great career news for you this year as well!

In regards to Spring ‘21, the Release Notes have a new home and are now at help.salesforce.com. I think the UI is a bit better and probably good that it’s more consistent with the rest of the Salesforce documentation. Here are my favorite 11 features I’m looking forward to using.

Flow Updates

Reference Prior Values in Flow

Once again, it’s a huge release for Flows, as we take another step toward building non-code triggers! Now you can compare the old value of a field to the new value of a field within your Flow and take action accordingly. Love seeing Flow get more and more advanced and reduce the need to have to code.

Schedule Trigger Based Flows

One of the reasons to keep using Process Builder over Flow is now no more! Triggered Flows can now schedule triggered actions in the future, similar to Process Builder. While I don’t think that Salesforce will deprecate Workflow or Process Builder any time soon, it’s more than clear that Flows are the present and future of Salesforce automation.

Cleaner Flow UI

One of the most frustrating things in the past about using Flow was the clunky UI. Yet another UI improvement arrives with Spring ‘21 in the form of a pill to describe the value you’re using rather than the complicated code-like syntax. Even as a developer, I was never a big fan of seeing the old syntax.

Platform Updates

Lightning Experience Manual Sharing

I have NO IDEA why this feature took several years to get parity with Salesforce Classic, but Manual Sharing is now in the Lightning Experience! It’s a long time coming but one of the final stragglers has made its way into LEX!

UI Updates

An under the radar update but I like seeing that Salesforce is replacing more standard Aura components with Lightning Web Components behind the scenes. Any time we can get OOTB performance improvements, I’m all for it!

Lightning Page Performance Analysis

Get more information about how long your pages take to load and find out what specifically is causing the performance issues. The more ways we can identify how to improve our performance the better!

Community Cloud Rebrand 

Community Cloud is now Experience Cloud! While it’s hard (and sometimes annoying) to sometimes keep track of all the new names (Wave -> Analytics Cloud -> Einstein Analytics -> Tableau CRM), I think this one actually helps better define the custom experiences you are building.

Code Updates


While not exactly the “SELECT *” functionality, the new FIELDS() functionality in SOQL will allow you to essentially do the same thing! Similar to functionality that exists in SOSL, now you can run SOQL queries using FIELDS(ALL), FIELDS(STANDARD), and FIELDS(CUSTOM) keywords to simplify your queries and quickly gather all data for your objects. This might just be my favorite feature in the Spring release!

Sandbox Source Tracking 

One of the great things about Scratch Orgs when working with Salesforce DX is the ability to track changes to easily keep track of what has changed both on your local version of the org and the org itself. Now the same can be done with sandboxes! I think this will make Sandbox development much easier, while still sticking with the standard Salesforce DX processes that take advantage of modern software processes.

Access MDT from Static Methods

One of the drawbacks to using Custom Metadata to Custom Settings was the fact that Custom Settings were easily accessible in Apex, while MDT required a SOQL query. While it didn’t count against the limits, it was still slightly annoying, at last to me, to write and look at. Now you can use your MDT just like you would your Custom Settings! 

Salesforce Functions (Beta)

Another step toward writing non-Salesforce code on Salesforce! Salesforce Functions (formerly Evergreen) is in Beta now, and it appears to allow you to write JavaScript and TypeScript that run on Node.js on top of Salesforce.  

LWC Actions (Pilot) 

Only a pilot for now, but great to see another development on the LWC side that previously existed with Aura. Soon we’ll be able to create Custom Actions using Lightning Web Components, to further customize the standard Salesforce UI.

Let me know what else you’re looking forward to in Spring ’21 and 2021!

Winter ’21

With Winter ‘21 now in sandboxes, it’s time once again to take a look at the top features from this release. Once again, I think the most exciting things came on the Flow side but there are a ton of other great features I’m excited about in this release too. There was 1 in most of the sections that piqued my interest.

Search Trailhead from the Help Menu

Anytime I can save clicks, I’m all about it. If I can search Trailhead directly from Salesforce without having to open up another tab to Google it first, I count that as a win!

Service: New Threading Behavior for Email to Case (No More Ref Id)

It’s always struck me as odd that Salesforce would put the record Id and the org Id in external emails. As cool as I believe the Email-to-Case functionality is (and as much as I enjoyed identifying other companies as Salesforce customers when I saw the refIds in their emails to me), I think it’s a good thing to make this information a little more hidden from a security perspective. Not sure if it will make these issues more difficult to troubleshoot though.

Sales: Interactive Email Templates

Email templates have always left much to be desired for me, so I’m glad to see they’re getting a major upgrade! It looks like they’ll be consistent with the Lightning App Builder, a step in the right direction if you’re a fan of layout standardization like me.

Analytics: Auto-Add Fields to Custom Report Types

This is only in Beta, but it’s a much welcome addition! It’s always been a pain point of mine to have to find all my custom report types that use my objects and manually add new fields to them. Always a big fan of needing fewer clicks.

Communities: Manage Pages and URLs with the Pages Menu

Another win for customization, now you’ll be able to build out a robust site hierarchy and customize your URLs to meet your companies needs. Easy to understand URLs make it easier for users to find your pages and I think this feature will help with that goal as well.

Mobile: Shortcuts to Essential Pages

Not sure about you, but I usually have to describe complicated click paths in order to get users to specific places. I like the idea of having a centralized place I can direct users to in order to cut down on their number of clicks.


Flow Delete Triggers

Yet another great addition to Flow functionality, Delete triggers! Now you can choose a flow to fire off when a record is being deleted. Yet another key piece of Apex that can be turned into clicks. It only works before a record is deleted (vs after a record is deleted) but yet another piece of evidence that Flow is the future of Salesforce declarative automation.

Multi-Column Screens in Flow Builder (Pilot)

One of the reasons I’ve hesitated to use Flow is the not-so-user-friendly screen interface. I’m hoping we’ll get to the drag-and-drop Lightning App Builder-esque functionality at some point but it sounds like this is a start. It’s in Pilot for now but glad to see progress. 

Run Flows Based on Criteria

Another automation addition to Flows, now we have the ability to only fire them off when criteria are met, similar to Workflow Rules and Process Builder. With this addition, there are even fewer reasons to build WF and PB moving forward for new requirements.

Analyze Lightning Pages Performance

One of the biggest complaints (and deservedly so) about the Lightning Experience has been performance. While I believe it’s faster to develop in general in LEX compared to Classic, there’s little doubt that pages tend to take longer to load. Hopefully this new feature will help determine exactly why custom pages are taking so long to load, and will be the first step in major performance gains in LEX.

Dynamic Forms (GA) 

My favorite feature in Summer ‘20 is now Generally Available! Only for Custom Objects for now, but the ability to have cleaner layouts that will be dynamic is a major win for cleaning up long layouts with dozens of unused fields.

Manage Deleted Fields in Lightning

It’s a pain having to switch back to Classic to make, what should be straightforward, changes, such as managing deleted fields. Glad to see there’s one less reason to switch back and forth.


Increased Timeout for Client-Side Caching from 15mins to 8 hrs

This is one of those changes that I’m both excited and nervous about. On the one-hand, increased time for client-side caching means that components and pages will load quicker because they’ll be cached in the browser. On the other hand, if changes are made to the components or data, I’m hoping this increased time won’t interfere. Since the refresh interval is set to 15 minutes, presumably, the worst case scenario will just be the previous behavior and the best case scenario will be faster pages.

Safe Navigation Operator to Avoid Null Pointer Exceptions

I’m pretty excited about this one! Always nice when code can be simplified and this new Apex operator has the potential to make a lot of null checks MUCH cleaner and take up fewer lines of code in the process. 

Custom Notifications from Apex

I definitely need to do some more research on this one, but I like the idea of being able to send customized notifications from Apex. Right now, I generally rely on the .addError() method, which doesn’t always give the cleanest errors. Excited to see the capabilities of customized notifications.

Scratch Orgs Based on Org’s Shape (Beta)

As someone who is increasingly getting into SFDX and Scratch Org, it’s become a frustrating pain point to have to tradeoff including different features in my scratch org, when a certain feature only works in a certain edition, but another feature only works in a different edition, while my production org includes both features. The idea behind the scratch org is to create a “local” copy of the Production org, and now this Beta feature is helping to make that a reality!

Lightning Design System Double Dashes Deprecated

Not necessarily excited about this, but still felt it was worth pointing out. The Salesforce extension should help you clean up the class references but good to be aware of it at least.

Let me know what your favorite new features are in Winter ‘21!

Summer ’20

Another Summer, another Salesforce release. While this release was delayed and its mascot icon changed due to the COVID-19 pandemic, Summer ‘20 is finally here. A lot of great new features coming to an org near you and a ton of cool stuff to stay excited about in the future as well!

While these features are not GA yet, this was my top most wanted feature in my 2020 Outlook and I’m super excited about it!

Dynamic Forms (Non-GA Preview)

Your users can now customize their Lightning App Builder pages down to the Layout Section or even Field level based on certain conditions. No more having to create tons of layouts just to add one field, or having to have a bunch of extra fields crowd the screen if they’re not needed at a certain point. I’m super excited to try this out and the PM from Salesforce, Vin Addala, is soliciting feedback and has some resources for you to get started too.

Dynamic Forms

Dynamic Actions to Highlight Panel (Beta)

In addition to Dynamic Forms, I’m also pretty excited that a new Beta feature allows us to customize the Actions that appear in the Highlights Panel. Once again, we can cut down on page layouts by providing conditions on actions showing up. I love the idea of decluttering my layouts and only showing the actions when they’re needed.

Dynamic Actions


Once again, following the Spring ‘20 Release, Flow takes a MAJOR step forward in this release. Following the “Before Save Flows” functionality we got in Spring, we now have the next logical step: “After Save Flows”

After Save Flows

I think the line that stands out the most for me is “You can replace most of your workflows and record-change processes that you created in Process Builder.” If you’re already familiar with code, “A flow that performs after-save actions is similar to an after trigger”. If you’re not already familiar with code, consider yourself that much closer to being an Apex Developer! With After-Save Flows, you can fire off a flow automatically after a record is saved. The implication of this means that you’ll have access to the record’s ID as well as the LastModified information.

As Flows continue to get stronger, if you aren’t already familiar with how to build flows, it’s time to start. I think it’s pretty clear that the new automation in Salesforce on the declarative side is coming to Flow while Process Builder and Workflow appear to be falling out of style. Count this as another win for “clicks before code” as well, as there is now more we can do without needing an Apex Trigger.

After Save Flow

Debug Flows Faster and Track Flow Resource Usage in Debug Logs

One of the reasons I’ve preferred code to Flows in the past is because, in my opinion, existing flows are hard to troubleshoot, or debug, and are also hard to start building. The troubleshooting/debug piece is considerably addressed in this release. Now you can configure Debug options including “rollback mode”, which will undo, or “rollback”, all records changes done as a result of the flow if something goes wrong.

Debug Flows

Flows will also show you more information in the Debug Logs that you can run for yourself or another user about how many Salesforce resources they’re using and how close they are about hitting limits. This should help determine why Flows are hitting errors as well and resolve them quicker.

Flow Debug Logs

Flow Builder Guidance

Salesforce addressed my other concern with Flow in this release as well, by showing Tips to help you build your flows while you’re building them!

Flow Guidance

Access Apex-Defined Variables in Flows

Yet another Apex/code feature being brought to flow, custom variable types. For those unaware with writing code, you’re not necessarily limited to just having a variable of type Number, Text, Account, etc, but can create your own types or structures with properties that you define. For example, maybe you want a single variable that has multiple properties. I could have a variable in Apex defined as follows:

Type: Bank Account

Bank Account.Customer Name (Text)

Bank Account.Amount (Decimal)

Bank Account.Account Number (Number)

Bank Account.Bank Name (Text)

I can now reference such an Apex-Defined variable in my flow!

Apex Defined Variable


Share CSS Across LWC

I love the ability of Lightning Web Components to import almost anything. I also hate having to duplicate things, including styling. Now you can develop a CSS component and import it into your other components to create a consistent look and feel across your components.

Import CSS

Import User Permissions LWC

Yet another thing to import into LWC! Check whether users have specific permissions specified by importing them.

Import Perms

Track Source Changes in Sandboxes (Beta)

I love using Scratch Orgs but sometimes it just isn’t feasible for a specific use case or bug fix. One of the difficult things about developing with SFDX with sandboxes is having to manually track your changes. I’m excited about this new Beta feature to start letting SFDX track your sandbox changes like it’s a scratch org.

LWC Test Create Commands CLI

While Lightning Components don’t (yet) require tests, it’s always best practice to be testing your code. That’s why I’m glad to see these new SFDX commands to focus on testing your components, including creating some boilerplate code to get you started.

Other Customizations

Outside of Development, Flow, and the Dynamic items, there are a few other items that I’m excited about in this release.

Split List View

I loved the Kanban view when it first launched and I’m a big fan of this new List View type as well. Far too often I find myself having to open a bunch of new tabs from a list view to make modifications or look at details to a bunch of records. Now I can choose the Split List View to view them all from one tab and keep my browser RAM to a minimum.

Split ViewSplit View2

Minimum User Access Profile

With Salesforce security being shifted to Permission Sets, I think this is a long time coming; an empty Profile where ALL security for a user can be managed by Permission Sets.

In App Guidance Builder

I haven’t used this feature yet, but I’m glad to see that Salesforce is focusing on helping with User Adoption by providing tools to help build in-app guidance for end users.

Related Record Component

This is another nice way Salesforce is extending the capabilities of the Lightning Experience. Now with the “Related Record” component for the Lightning App Builder, you can show and edit fields on a record 2 levels up. My friend Jagannathan walked through a good example on Slalom’s Medium blog. 

Reasons to get Excited

Lastly, I’m always interested to see what Salesforce is working on that I’ll be able to start using in a few releases. Here are a few of the Beta and Pilot features that I’m looking forward to becoming Generally Available. 

Release Updates (Beta)

This appears to be a complete overhaul of the Critical Updates functionality and based on the initial release notes, I’m a fan. I think it’ll help provide context and better understanding for the impacts of the critical updates that need to be implemented.

LWC Based Community Template (Pilot)

I recently started supporting a Visualforce + Tabs Community for Mobile and it leaves a lot to be desired. I was surprised that we were still so reliant on Visualforce to get our customized Community working. I think this will be the start of something great that will vastly improve the customized Communities experience.

Einstein Natural Language Search (Beta)

This requires a separate Permission Set license, but like many Einstein features, this one looks pretty cool. Use natural language to search for records and Salesforce will find them for you. Tremendous possibilities!

Einstein Search

Let me know if you found anything else I missed. Hope everyone is staying safe and healthy and hope to be able to connect with you in person someday soon. Until then, make sure to take advantage of all the virtual events happening across the globe that you can now attend from your own home. I’m “speaking” in New Delhi, India later this week and hope to see you there!

My First Lightning Web Component

Recently I had the much overdue experience of writing my first Lightning Web Component for my day job. While I’ve gone through some Trailhead modules and built a couple on my own for demos, there’s something special about being able to deliver a component that other people will end up seeing and using. While I can’t share the specifics of my company’s processes, I wanted to share some thoughts and feelings on my experiences as well as some tips as to how you can start writing your own!

Starting Out

I’ve been developing in Apex for over 5 years now, and did some Java before that. I think it’s true what they say that “JavaScript is to Java as carpet is to car”. There’s definitely a learning curve there, even coming from Aura development, which has a touch of some JavaScript functionality but primarily uses JSON with some light JS mixed in.

As with any new type of coding, I think it’s always helpful to start with some sort of design followed by pseudocode. For the design, a co-worker of mine had already come up with what the final result should look like, so I just had to figure out how to break it down into individual components.

Similar to the approach I normally take to writing Apex, I start by writing pseudocode and then generally just put everything into one method, or in this case one component. My component involved 1 screen that needed to have 3 different sections, of which only 1 would be expanded and the other 2 collapsed at any one time. Since there would be 3 separate sections within the 1 large page, that told me I’d need 3 child components and 1 parent component.

Starting Out


Salesforce has invested heavily in VS code and with good reason, it’s a very powerful software development tool. Salesforce has developed many custom extensions to assist your development with the tool as well. If you haven’t already, check out this Trailhead module to get started!

While I knew that I’d need to start calling Apex eventually to bring in data, I wanted to get a working component first with just some hard coded dummy data. I also knew that I’d need to be able to call some sort of event for the child components to talk to the parent components to figure out which components should be expanded or collapsed. CSS is also critical here to make sure that components and their parts are in the right spot and the right color.

While I can go for long periods of time writing Apex before syncing it to my org, it’s harder with UI development since minor tweaks are often frequent to be able to check events and CSS attributes. While you can play around in the Chrome Developer console to edit certain attributes, I personally like playing around with the different SLDS classes before I start creating my own CSS.

Salesforce to the rescue once again, using the newly announced LWC Local Development! It was pretty easy to set up and automatically updated immediately without me having to wait 10-20s to push to my org to view each change. I highly recommend this for making quick UI changes and checking event propagation. I moved away from this once I started working with Apex, since my local computer wouldn’t have access to my org’s data, but up until that point, it massively cut down on my development time.

Local Dev


I’d had some experience dealing with events in Aura, creating custom Lightning Events and then firing them from the child components via aura:registerEvent and then listening for it on the parent component via aura:handleEvent. On LWC however, event propagation works differently and depending on what you’re trying to do, there are several different approaches. They primarily involve creating custom events and custom event handlers whose names need to match the name of the event (i.e. if you create a custom event called notify, you’ll need a parameter for onnotify similar to how you’d have onclick or onchange. I found this documentation on events and this sample code base tremendously helpful! In general, the Sample Gallery has a lot of great examples whose code you can use and customize for your own needs! LWC also uses “kabob case”, stylized-using-dashes, to reference child components, even when your child component’s name uses camelCase.

Child component (sectionOneComponent) sending custom event called “section one next clicked”:

Events 1

Parent component calling an action on the “section one next clicked” event that was fired from sectionOneComponent:

Events 2

Component Parts

Once I figured out the event propagation, I needed to actually populate my components with various sub parts. Similar to Aura, this is where Base Components came in to give me an existing card, combo-box (picklist), buttons, and allowed me to lay things out in an organized manner using the layout and layout item components. Using the “Open in Playground” functionality from the Component library gave me another way to play around with different combinations before having to deploy it to my org.


Once I had the layouts more or less in place, I started deploying to my org and connecting to Apex. By utilizing decorators and events to respond when users changed values from my hard-coded dummy data, I had confidence that once I wired up the Apex, I would have a very short turn-around time to get the real data.

Once again, I went back to the Sample Gallery and documentation for some examples. While I decided to keep everything in a single Apex class for my series of components, knowing that I could add additional Apex controllers to my single LWC gave me peace of mind if I wanted to separate functionality. I had to modify my events a little bit to send data from one child component, up to the parent, and then back down to the other child component, but other than that it was relatively straightforward! I also found out that you can create a custom structure that you can assign to the detail attribute in the event to send multiple parameters to your parent components at the same time. Also ran into some issues with camelCase vs kabob-case again, but I’m guessing that will get better with experience.

Child Component One JS:

Apex 1Apex 2

Parent component JS:

Apex 3Apex 4

Parent component HTML:

Apex 5

Child Component Two JS:

Apex 6


While I still definitely have a lot more to learn about JavaScript and Lightning Web Component development, I was excited that I was able to turn these components around in just a few days! All of my HTML and JS files across my components only have 40-50 lines of code each. I still have a bunch of SLDS and other CSS changes to add before this is ready for production but I’m excited to build off of this and am looking forward to developing more LWC in the future. If you’re interested in learning more about how to make the switch from Apex to LWC, check out my session on May 16th at Virtual Dreamin!

2020 Outlook

As we start Salesforce’s new Fiscal Year, I’ve had some time to take a breath for a few months following Dreamforce, I thought I’d share some thoughts on where I see Salesforce going this year based on what I’ve seen from Dreamforce and the Spring ‘20 Release. While I may not have any more success than Harry Potter at looking into a Crystal Ball, hopefully these predictions will be a little more evidence based.

Admin Takeaways

1. Dynamic Layouts are coming!

As the most requested feature on the Idea Exchange, it is very exciting that truly dynamic layouts are on the way! Soon we’ll be able to customize layouts at the field level and truly give users the fields we want for the use cases we need. Definitely a win for #AwesomeAdmins. It sounds like this feature is in pilot now but should hopefully be GA sometime in 2020!


2. Flows are about to become stronger than ever

I’ve been hearing some rumors that Flows are about to get even MORE powerful than ever before and (spoiler alert from the Spring ‘20 release notes, they did) this was furthered by a slide shown during the Admin keynote. Unclear what “Before Triggers” will mean for the future but if more functionality can be built into flows, including more functionality that currently requires triggers, that’s yet another tool that Salesforce Admins will have that won’t require any custom development. It also sounds like Process Builder functionality may start moving more and more into Flow (as evidenced by Process Builder being listed under the Flow section of the Release Notes). I’ve been hesitant to become a “Flownatic” for a long time but seeing things like this are great reasons to start diving in!


3. Permission Set Groups are changing Salesforce security for good

This is a pretty big change to how security works in Salesforce, and appears to be the first step in “discouraging admins from relying on profile for permissions management going forward” according to this Salesforce Admins blog post. Without a doubt, the ability to assign users multiple permissions at the same time, as well as being able to mute permissions within the group without needing a whole new permission set, is a win for admins. It’s also a win for Devs who have been frustrated about the inability to utilize profiles effectively in Salesforce DX. Definitely excited to see things move in this direction, while there may be some short term pain in having yet ANOTHER place to configure Salesforce security (as per CTA Steve Simpson there are already 17!), it will allow for greater customization, which is always a good thing.


Ways of Sharing

Dev Takeaways

1. Non-Salesforce development languages are coming (Evergreen)

One of the big things I suspected Salesforce was going after when launching Lightning Web Components was developers currently outside the Salesforce ecosystem. They wanted to be able to tell ALL developers that they can start developing on Salesforce. This theory of mine is further confirmed by a demo during the Dev Keynote, Evergreen functions. This will allow you to write standard Java or Node.js on Salesforce and integrate it into your Salesforce code. I suspect this is only the first step as Salesforce continues to cater to more developers, allowing their dev ecosystem to explode and truly become a platform that all developers can use! While it keeps us current Salesforce developers on our toes, I think it’s ultimately the right strategic move and will encourage Salesforce developers such as myself to expand our skills and boost our own careers.

2. Local Development is here

One of the problems with the current Salesforce development experience is that you need access to a Salesforce org in order to see what your components look like. No more! Now you’ll be able to spin up a server on your laptop and get a preview of your component without needing to connect to an org to do it! Very important for developers who want to iterate quickly, especially for UI changes.


3. LWC is the future but the present too!

2 of the biggest takeaways I came away with from Dreamforce though, were from 2 sessions by Greg Rewis, Product Manager of Lightning Components.

  1. Lightning Base Components are now open sourced
  2. Don’t ever write another new Aura component again

One of the increasing trends that Salesforce has embraced is Open Sourcing their technology, and I’m all for it! For those unaware of the term, it basically means they’re revealing the source code behind these products, so that you can download them and customize it yourself!

Don’t know how a component works? Look up the code! Don’t like how a base component works? Download the code and make the edits you want! I think this is very exciting for the future of Salesforce development.

The other thing that I took away from Dreamforce was straight from the mouth of the Product Manager for the technology himself “In Aura we had to take your ‘JS’ file, which was really JSON, compile it, parse it, and turn it into real JS! No wonder it was so slow!”

Greg also shared that all Aura components are actually LWC under the covers. You’re just essentially implementing an intentional performance hit with every Aura component that you build! Based on this information, it’s pretty apparent to me that ALL new component development should come from LWC rather than Aura wherever necessary. This will not only be good to keep up with the latest Salesforce technology, but it’ll be working with more standard technology in general, and help Salesforce devs take the next step to truly becoming Full-Stack Developers. It also continues the trend of allowing non-Salesforce developers to start doing their work on the Salesforce platform!


As Salesforce continues to grow at incredible rates, it’s extremely important for the community to go along with it. Salesforce jobs have been some of the hottest around and it’s great to see Salesforce investing in bringing more and more Admins and Devs to the platform. By moving toward industry standards with LWC, open-sourcing the base components, and starting to allow for non-Salesforce code to run on the platform, it is clear that Salesforce is increasing its addressable market of Developers and that’s a good thing. There were also billboards all over Dreamforce this year about people who went from “cashier to engineer” or “driver to developer”. 

With flows becoming even stronger and the addition of Permission Set Groups, it’s clear that the role of the Admin is continuously increasing as well. With each new release it seems that Admins can do more and more without needing a Developer and that’s also a good thing!

Salesforce’s approach to open sourcing Lightning Web Components and allowing for non-Salesforce code with Evergreen, are also welcome developments to not just Salesforce developers, but non-Salesforce developers as well who are thinking about getting into code! Seeing a Beta exam opportunity for a “JavaScript Developer” cert is even more proof that the time is right to get into front-end development if you haven’t already!


Spring ’20

It’s that time of year again. Another release is about to hit your Salesforce Org! Here are the top 10 #AwesomeAdmin additions and top 4 Developer additions that I’m excited about!


Before Save Flows to replace Process Builder

One note I saw during the Salesforce Admins Keynote at Dreamforce, was that “Before Triggers” in Flow was coming. Yet another #AwesomeAdmin weapon to avoid having to resort to Code, now you can fire off a Flow that makes updates before a record is saved to Salesforce. As per the Release Notes, instead of using Process Builder to update a field on a record “Before-save updates in flows accomplish that same goal, but much more quickly because each record doesn’t get saved to the database again. Avoiding that extra save procedure means skipping another round of assignment rules, auto-response rules, workflow rules, and other customizations that take time to execute.

If I can do the same thing, without code, and do it faster, I’m all for it!


Permission Set Groups

As Salesforce begins the process of rethinking Profiles, I’m excited to see additional capabilities added to Permission Sets. Now I don’t need to combine Permission Sets or assign multiple for certain users, I can just add them all to a Permission Set Group, and assign them once!


Muting Permissions

Along with creating Permission Set Groups, comes the ability to Mute permissions within the group! Note that this won’t remove access if they have it via another Permission Set or their Profile, but it allows for further customization of how to manage permissions!


It will also, however, add to CTA Steve Simpson’s list of ways to manage Salesforce permissions.


URL Hack Buttons

They’re back! After being one of the main reasons people didn’t want to upgrade from Classic to Lightning, URL Hack buttons are back in Salesforce.

URL Hacks

JavaScript button converter

Another reason people were sad to leave Classic, no JavaScript buttons. Now there’s a tool to convert them to Lightning Components so you can continue using them in the Lightning Experience!

Turn Off Automatic Report Preview Updates

Did you ever get annoyed that whenever you were building a report, you had to wait until your preview would finish loading? No more! Now you can make all the changes you want and reload the preview on demand. Should make report building even faster!


Filter Reports by Field to Field Comparisons

Another cool new feature in Reports, you can now compare 2 fields to one another as a report filter. This should allow Reports to account for even more use cases!


Unique Values in Report Results

Ever need to resort to the Power of One formula to figure out just how many unique records are being accounted for in your Report? Yet another addition to reports in Spring ‘20, you can now add a Unique Count to your report column.


Don’t go deleting your Power of One formulas just yet though…

Easier App Launcher

I didn’t know how much I needed this until I saw it, now I’m not sure I can live without it! Access your apps and tabs without having to have a whole overlay screen!


In-app Guidance videos

I haven’t yet used the In-App Guidance feature outside of Trailhead, but I’m excited about the possibilities. If I can now provide an instructional video for how to use a feature that shows up whenever a user navigates to a tab, that should hopefully cut down on a lot of support tickets!



@track is no longer required in LWC

One of the new features to Salesforce in Lightning Web Components were decorators. These properties make it so that when a variable changes, the UI automatically will update to get the changed value. With this update, Salesforce has made it so that the @track decorator is always applied in almost all cases, making creating Lightning Web Components even easier and ensuring that your UI always has up to date data!

LWC Base Components Open Source

Don’t like how a Lightning Web Base Component works? Now you can rebuild it and make it work to your heart’s content! LWC Base Components are now live on Github making it easier than ever for Salesforce Developers to take advantage of Base Components while being able to add to them as well.

Lightning Message Service

This feature is only in Beta, but I love the idea of being able to have a place for all my stuff to talk to each other, rather those things are LWC, Aura Components, or Visualforce pages. Rather than custom building a listener service, I can send things to the Lightning Message Service and have my other components on the page respond accordingly!

LWC Local Dev

Last but certainly not least, I love the idea of being able to quickly iterate on my Web Components without having to update it with the Salesforce org each and every time. Also in Beta, but I can now run localhost on my computer and see my changes immediately!


Winter ’20


It’s that time of year again. While not overlapping with Dreamforce this year, Winter ‘20 still has a lot to be excited by! It also looks like Salesforce heard the feedback from our friends in the Southern Hemisphere wondering why we’re talking about the Winter release while they’re enjoying their summer. Astro Yeti is now joining them!

When I go into Release Notes, I have a similar outlook as when I go into a Keynote. I want to know what I can leave with immediately, and I want to know what’s going to keep me excited in the future. I found 10 things that I can go out and use now that my org is on Winter ‘20 and 5 others that have me extremely excited for the future!



Control Custom Metadata Type access by Profile and Perm Set


One of the great things about Salesforce is the security model, and how customizable it is. I’ve always been super excited about Custom Metadata and how I could add additional parts of my org and use them however I like. Now I can also control security access to them!



Lightning App Builder accounts for mobile layouts


While I don’t completely endorse the concept that I can “run my business from my phone”, I’ve always been a fan of using Salesforce on mobile devices, just like I can use pretty much other site. Salesforce has added additional capabilities to customize exactly how pages will look on mobile devices and where they should differ from desktop devices.


Schedule Flows

Lookup Components in Flows

Dynamic Flow Screens

I’ve only worked with flows a small amount but I understand how powerful they are. I’m excited about the new capabilities that allow for flows to take one more step toward code. As someone who is presenting at Dreamforce about how Admins are already using most of the principles of coding, this helps make my point for me! Now users can schedule flows as well as add lookup components. They can also make flow screens dynamic just like components in App pages.


Where is this Used? For fields (GA)


A much needed feature, being able to see where all the parts of your metadata live. Before you change or delete a field, make sure you’re aware of the implications!


Delayed Layout Updates (up to 1 hour)

Not necessarily an update I’m excited about but an important one nonetheless. Updates to app pages may now take longer to update users. I understand Salesforce wants to improve performance, but I’d like there to be some sort of option to force loading the new pages from Salesforce rather than the cache when pages have changed.


Reports & Dashboards

Row Level Formulas in reports


Ever have to create a new formula field that you didn’t need, just so you can report on it? No more! Now create the ad hoc fields directly in your report and keep your metadata clean!



Recycle Bin Lightning Experience

A long awaited feature to get Lightning to parity with Salesforce Classic, the Recycle Bin is finally in the Lightning Experience!


Navigate Directly to an App

There have been more than a few times where I’ve found myself annoyed that I last logged out of Salesforce in an app I rarely use and have a few extra clicks to get to my primary app. Now I can bookmark the apps that I want to start at when I login and always be directed there.


Like I said, I’m also interested in what Salesforce is coming out with in the future to keep me interested. Here are my top 5 that are in Beta or Preview.


Lightning Message Channel to communicate b/t VF, Aura, LWC (Dev Preview)

Definitely interested in finding out more about this, but it looks like Salesforce will let you communicate between Visualforce, Aura, and LWC without having to implement the capability yourself!


Metadata Component Dependency Queries (Beta)

Similar to the “Where is this used” feature, I can now run a query to see what all the dependencies are for my metadata. 


Permission Set Groups (Beta)


There have definitely been several situations in which I’ve had to add multiple permission sets to the same users. Now I can put them all in a group and save myself a few clicks!


Filter by comparing one field to another (Beta) 


Solving another use case, Salesforce will now let us run filters by comparing one field in the report to another!


Unique Count of distinct values (Beta)


As much as we all love the Power of One solution, Salesforce is giving a default way to get the unique count of records in a report!


Let me know if there’s anything I missed!

Why You Should Submit a Dreamforce Presentation Idea

The year was 2014. I had just started using Salesforce a month prior, and I got to experience Dreamforce for the first time. Needless to say, I was quite overwhelmed! Before the Admin Zone existed, I remember superheroes decked out around the booths with helpful Salesforce employees and customers telling me that ‘I too, could be a superhero with Salesforce!’. Trailhead and Process Builder were announced! I also remember being blown away by the caliber of speakers from Vice President Al Gore, to Secretary Hillary Clinton, to will.i.am, to Neil Young, to Arianna Huffington. I also remember the incredible show that Bruno Mars put on. What I think I remember most about the conference, was the passion of everyone there. The Salesforce employees. The customers. The MVPs. And the presenters. Several thousand sessions teaching me much more than my Salesforce-newbie self could consume over 4 days.

Fast forward about 6 months to mid-2015 and it was suggested to me by a mentor to submit a topic to present at Dreamforce. While I had taken some classes in college to help me give presentations and work on public speaking, I was definitely nowhere near ready enough to present at a major tech conference like Dreamforce! I hadn’t even been a year long Salesforce user yet! While there were some topics that I was interested in, and I could begin to feel the passion of the Salesforce Ohana around me, I still didn’t feel that I was qualified.

Fortunately, I was talked into submitting 2 sessions, figuring I had nothing to lose. It was one of the best decisions of my professional career. After I got over the initial shock of not one, but both talks getting accepted however, the imposter syndrome really set in. Who am I? How am I qualified to speak? Why would anyone care what I had to say?

Self doubt aside, I had nothing to be worried about, since out of 150K+ people, there’s quite a few people that like just about any topic you can think of. I had the pleasure of presenting on one of my favorite topics to this day, Salesforce Connect (which I was fortunate enough to present again at DF the following year). The presentation I was probably most excited about though, took a bit from my personal story about getting certified, while also incorporating a hot new Salesforce technology, Trailhead. I was also fortunate to be invited to present this talk again in India 2 years later.

Pre-session selfie

Me and Jayvin, preparing to speak at Dreamforce 2015

YOU have an interesting story. YOU have experiences that no one else has. YOU have knowledge that needs to be shared with the rest of the Ohana. Just remember if your imposter syndrome is setting in (mine continues to this day), that a large portion of the attendees probably just started using Salesforce, or have yet to start using it, and have a lot to learn from you. Don’t be afraid to get your ideas out there and get your voice heard! Don’t be afraid to team up with a buddy and present together! It also helps only have to put together half of a slide deck and present half the time 🙂

If you get accepted, that’s great! You’ll get a chance to share your ideas, practice your presentation skills, pad your resume, and have a ready made presentation to potentially present again at a community conference! If you don’t get accepted, that’s ok too! It gets harder and harder every year, but worst case scenario, you’ll still have a solid presentation idea ready for a community conference and the chance to build on it for a future submission!

My tips for crafting a Dreamforce session idea:

  1. Pick a topic you are passionate about
    • This will show in both your submission and the actual presentation. Presenting, and making the presentation, is a lot more fun when you care about the topic
  2. Pick a topic you have some experience with
    • It’s a lot easier to present and answer questions on topics you have knowledge about
  3. Look for what’s hot in Salesforce and the industry
    • While there’s something for everyone, it may be easier to find traction with a topic about Flows or Lightning Web Components than Workflow Rules or S-Controls
  4. Incorporate something that is uniquely you
    • Why can only you present this topic? What experiences have you had that makes this special? This will shine through in the submission and the presentation as well
  5. Think outside the box
    • It doesn’t even have to be a topic about technology. Dreamforce offers many sessions about equality, mindfulness, and career development
    • If you do go the tech route, think about the amazing things you’ve done with the Salesforce platform. Show one of them off in a 20 min theater session or dive in deep in a 40 min breakout session!

No matter your experience or imposter syndrome, submit your ideas for DF19 before the deadline Friday night Pacific Time: https://developer.salesforce.com/cfp/df2019 

Best of luck!

Summer ’19

Maybe it was just me, but this release felt a little smaller than past releases (although the 491 pages beg to differ). That being said, while not as flashy as the Lightning Web Components we got in Spring ‘19, there is still a ton of great content in the Summer ‘19 release! Here are my favorites!

Enhanced Related Listsenhanced_related_lists_combo

This is probably my favorite new feature of the release! Finally users will be able to show up to 10 fields in a Related List section and at least (not sure what the limit is) 10 related records! For someone whose records tend to have many related records, I’m super excited to see this in action!

Report Condition Notifications


Another one of my favorites this release, get notified when your reports hit a certain threshold! Cautiously optimistic about this one as I’m guessing it’ll only work for certain conditions, but excited nonetheless! Hopefully it’ll cut down on a few emails at least since I can have my report email me only when I want it to as opposed to having to check it every day.


Celebrate Path Milestones


It was only a matter of time before confetti found its way into the org. Let some confetti fall for your users when they reach a certain stage or milestone in their path. I’m all for anything that makes work more exciting so let the confetti fly!


Pop Out Utility Bar Notes


I’ve worked with a lot of reps who end up taking notes outside of Salesforce, only to find out that they need to be re-entered later, or worse, they don’t get re-entered and the information is lost. Hoping this feature makes it easier to keep reps in Salesforce and keep all the info accurate!


Context Switching from Classic to Lightning

Hopefully you’ve switched over to the Lightning Experience now but if you’re like me you need to switch back to Classic every once in a while. Classic actually looks weird to me now, so as soon as I can, I happily switch back into Lightning. It’s incredibly annoying to have to re-navigate to where I was before. Hopefully switching back to Classic keeps the context too but I’ll take what I can get!

View Records in Full View


Are you missing your record views in Salesforce Classic? Fear not! Now you can view your Lightning records just as they used to look in Classic, complete with all related lists below. It looks like it can be assigned as an Org Default or at Lightning Pages level.



Automation Home


I’m hesitant to get too excited about this feature now, but definitely excited about where it’s going. I don’t use flows too much but if this is extended to Process Builder, I’d love to be able to measure how often my processes are getting used and how often errors are encountered. For now though, Flownatics rejoice!


Flow Builder Improvements


One of my hesitations about getting into Flows was how painful it was to use the UI. While I haven’t actually used Flow Builder yet, I love it already! Undo and Redo buttons as well as Search capability makes it even closer to coding for when Clicks are the answer!


20MB Debug Logs

Logs are crucial as a developer and now Salesforce has really blown the lid off by increasing the log size to a whopping 20MB from 5MB (and recently 2MB)!


Custom Metadata in Process Builder

Custom Metadata becomes even stronger thanks to the ability to now use them in Process Builder! With the increase to 200 Custom MDT records in this release as well, there’s more reason than ever to use them wherever you can!


Lightning Prompts


This is another feature I’m cautious to get too excited about until I start playing with it but I love the idea of being able to create in-app training for my users! Too often I’m finding myself closing tickets with links to existing documentation because a user forgot how to do something or a new user is onboarded without reading the documentation. Now I can make sure those users don’t get stuck again!


Those are my favorites but if I missed any that you love, let me know!

Spring ’19

As they say, better late than never! In case you still haven’t had the chance to go through the Spring ‘19 Release Notes, or maybe just missed a few things, here are my 10 favorite things from the latest Salesforce release!

Salesforce Functionality

Pinned Lists

Ever click into an object tab on a regular basis, only to always have to change the List View from Recently Viewed to your favorite custom view? No more! With Pinned Lists, you can now mark your favorite list view as the default that will load every time you click into the object tab.


Flow Builder

Rejoice Flownatics! Salesforce has replaced the old Flash-based Cloud Flow Designer with a faster, more eye-popping tool, the Flow Builder! In addition to getting a makeover, the Flow Builder no longer relies on the outdated Flash technology and should allow you to build flows much faster!


Lightning Page Template Switcher

Have you ever built Lightning App Builder page, only to realize mid-way through that you used the wrong template? Instead of re-building it from scratch, take advantage of the new template switching functionality for Lightning Pages!


12 Column Dashboards

Speaks for itself! Dashboards can now have 12 columns! Show off even more of your data!


Sandbox Cloning (GA)

Another long requested feature! Ever start working on one project in a sandbox, only to realize that you need to start working on a second project, but don’t want to have to re-deploy your current project to the new sandbox? Now you can clone sandboxes and pickup right where you left off without having to stop development on anything! (Side note, you can also look into Salesforce DX)

Things to be aware of

Lightning Experience Auto-Enabled

Not an update so to speak, but starting with the Winter ‘20 release (October 2019), all users that have the Lightning Experience User permission enabled will be automatically switched to Lightning Experience on a weekly basis. While part of me thinks that this is a bit intrusive, I also know how annoying it is to support multiple versions of the same product, so I kind of understand it. It’s a long time coming and while it might be annoying at first, I can attest that once users get used to Lightning, they won’t want to go back!

Permission Set Groups (Pilot)

Have you ever had to assign multiple permission sets to the same group of users? No longer! With this new pilot, you can now bucket these Permission Sets into a Permission Set Group and assign them all at once!

Where is this field used? (Beta)

This may be my favorite new addition to this release! I can now go to any field and check to see where it is being used across all my configuration and code! Extremely useful if you have to change a field name and/or remove a field


Development Updates

Salesforce has been focusing on Developers quite a bit lately and I love it! This release brought the biggest change to the way Salesforce Developers work since Lightning Components were launched!

Lightning Web Components

Salesforce has launched a whole new way to develop with Lightning Web Components! The best part actually is, to most developers, it’s not new at all. In what I see is a move to attract non-Salesforce developers to develop on the platform, it has the added effect of leveling up all current Salesforce developers to use industry standards. Salesforce will now have a say in helping develop those standards too!

By utilizing industry standards, Salesforce can take the next step forward as a platform. From a day to day perspective, LWC advertise a performance improvement as well as an opportunity to level up your skills. Start working on that HTML, JavaScript, and CSS!

If you want to get started, highly recommend checking out this LWC Trail on Trailhead! Salesforce also offers some base components out of the box to get you started!

Change Data Capture (GA)

Change Data Capture is now generally available, allowing you to get notified in near real time when records from your objects are updated and give you the option to replay changes to see how and when a specific change occurred. Check out a full presentation on it here!

Have a great Spring!