Visualforce is a technology that is becoming outdated in favor of the Aura Framework and the brand-new Lightning Web Components (LWC) framework. As many customers still use Visualforce pages (I guess there are millions and millions of pages out there live in production), there are no current plans to retire it, but it is highly recommended to implement any new user interface customization using the Aura or LWC framework.
Why a new framework?
In Salesforce Classic, with each click you did on the user interface, you could see the browser loading a new page, waiting for the results to be composed by the server (basically what happens on a Visualforce page).
When Lightning Experience rolled out, the user experience became quite different, calling the one-page app paradigm: the client (that is, the browser) initially loads all the required client-side code (that is, JavaScript files), which contains most of the logic (things such as when you hit the New button on the Account Lightning page, show a modal window containing a form with all input fields), except for the server-side calls to the database (which, of course, cannot be pre-loaded on the client). With this technology in place, although the first load of the web app may take a while, the code is cached by the browser and any other subsequent access becomes quick as a flash (or lightning).
Moreover, developers don’t have to build big monolithic pages but, with componentization, they now develop small pieces of the app that can be put together to build a bigger app and convey reusable developments (for example, an account selection form with custom filters can be applied to an order creation app or when creating a new opportunity).
In 2015, Salesforce released the Aura Framework (and the concept of Lightning Components), which was meant to follow the componentization and one-page app concepts, a modern way to develop web apps, but also the responsive concept, which is the ability to adapt to different form factors (smartphone, tablet, or desktop). In late 2018, Salesforce announced the definitive framework, the Lightning Web Components framework, that should bypass the Aura Framework (which hasn’t actually been retired, although Salesforce suggests going with LWC for new developments); the announcement was made at the following developer blog post: https://developer.salesforce.com/blogs/2019/05/introducing-lightning-web-components-open-source.html.
The main difference between Aura and LWC is that LWC uses web standards (which contain built-in security for the code that is being run by clients) that are now common on most browsers, while Aura delivers the same features but with a lot of underlining JavaScript code (because at the time Aura was introduced, some of the features of the framework were not fully supported by major browsers). Using LWC is better in terms of performance because most of the code is already built into the browsers (this is a simple explanation, but it explains why LWC is preferable to Aura components).
As LWC is still a new framework, some of Aura’s features are not yet fully functional, but the Salesforce engineering team is working hard to get this done. So, don’t worry if your development team will use Aura instead of LWC in certain conditions.
Where can we access Aura or LWC components (some limitations may still apply to LWC)?
- From the LEX App Launcher
- From the LEX navigation bar
- From a Lightning page made with the Lightning App Builder or the Community Builder
- From a quick action
- From an overridden object action (for example, override the edit action for the account record by showing a custom Lightning component to users)
- As a standalone app using Lightning applications (a special kind of Lightning Components), which permits the use of a Lightning component outside of the LEX framework
- Inside Visualforce pages (this is a trick that is used when your organization still relies on the Classic interface but you want to start using the new Lightning framework)
- From external sites/portals using the Lightning Out technology (it’s like loading a part of the LEX framework outside Salesforce to make Lightning Components available on external sites)
- From a flow screen to enhance the flow’s user experience
If you want to learn more about Lightning Components, have a look at Trailhead modules for Aura Components at https://trailhead.salesforce.com/en/content/learn/modules/lex_dev_lc_basics/lex_dev_lc_basics_intro and LWC components at https://trailhead.salesforce.com/en/content/learn/modules/lightning-web-components-basics/discover-lightning-web-components.