{{appName}}

Classic and Lightning

  • Classic - Page-Centric web app model
    • Hard to deliver new dynamic experience
    • Relies on server to generate new pages every time the user interacts with the app
  • Lightning - App-Centric model, JavaScript is used to create/modify/transform/animate the UI instead of replacing with a new page generated at the server

Classic Visualforce

  • Platform for page-centric apps
  • Provides UI tags resolved at server-side
  • Has standard/custom controllers to make DB and other operations easier
UI Data and Biz logic Workflow Pros Caveats
Server-side Apex Standard/Custom Controller - makes it easy to access the database without writing queries
  1. User requests a page
  2. Server serves the request: generates page HTML by executing the underlying code (controller and ui-tags)
  3. Browser receives the page and renders it
  4. When the user interacts with that page, GOTO step-1
  • Proven model, easy to implement
  • Splits large apps into small manageable pages
  • Has built-in metadata integration - allows plug-and-play via markups in the page
  • Limited interactivity
  • High latency, not suitable for Mobile

Visualforce as JS app container

  • User VF page as container for JS app. VF tags are not used; your JS app is loaded into the empty VF page
  • UI generated on the client-side by this JS app - Single-Page-App (SPA)
UI Data and Biz logic Workflow Pros Caveats
Client-side by JS Remote Objects or JavaScript Remoting, Apex controller
  1. User requests the empty VF page containing the skeleton and JS
  2. Server serves the request: page returns to the browser
  3. Browser receives the page and loads the JS App in the received page
  4. JS app generates the dynamic UI - when user interacts, JS app modifies the UI as needed
  • Highly interactive and immersive user experiences
  • Can make use of Browser rendering power
  • Complex and No builtin metadata integration
  • Lack of integrated DX - JS libs are loaded as static resources

Lightning Components

  • Uses JavaScript at the client-side and Apex at the server-side to provide the data and business logic.
UI Data and Biz logic Workflow Pros Caveats
Client-side by JS Lightning Data Services (LDS) and Apex Controller
  1. User requests an app or a component
  2. app/comp bundle is returned to the client - browser
  3. Browser loads the bundle and JS app generates the UI
  4. When the user interacts with the page, JS app modifies the UI and GOTO step-3
  • Highly interactive and immersive user experiences
  • Aligns with Salesforce UI strategy
  • Metadata integration - accelerating the development
  • Tag support: lighting:input as equivalent for apex:inputText. Processes markup on the client.
  • Developer Console and Force.com IDE support
  • Steep/longer learning curve and high-complexity
  • Still some features are not yet supported - limited number of out-of-the-box components

VF in Lightning Experience

  • Lightning Experience, VF pages are embedded in an HTML iframe that’s displayed inside the Lightning Experience app
  • VF page embedded in Lightning App can’t directly access the window global object since it is rendered as in an iframe
  • Check for apex:iframe in VF page - this can create issues
  • VF page using Canvas app - needs extra test - since Canvas app use an iframe
  • showHeader and sidebar attributes of apex:page have no effect on Visualforce pages when displayed in Lightning Experience
  • Rendering Visualforce pages as PDFs works exactly as in Salesforce Classic, without any of the Lightning Experience visual design
  • Things got combined:
    1. Classic - Object Tab is part of Lightning - Object Home
    2. Classic - Object List is part of - Lightning - Object Home

VF in Lightning Experience

  • Out-of-the-box components set: Salesforce provides a number of components to bootstrap your app development
  • Performance:The component framework leverages a stateful client (using JavaScript) and a stateless server (using Apex). This allows the client to call the server only when absolutely necessary. With fewer calls to the server, your apps are more responsive and efficient.
  • Event-driven-architecture: Events are key to the Lightning component framework. Components listen to application and component events and respond accordingly.
  • Rapid Development: The simple markup and pre-made components mean that you can get applications out the door faster than ever.
  • Device-aware and cross-browser support: Component framework handles compatibility across devices and browsers.
  • Lightning Out: allows run your Lightning components and apps anywhere you can serve a web page.
  • Lightning components can be used in VF

Partners, Packaging, and AppExchange

Feature Supported In
  • Environment Hub
  • License Management App (LMA)
  • Checkout Management App (CMA)
Both Salesforce Classic and Lightning Experience.
  • Trialforce
  • Channel Order App (COA)
  • Usage Metrics Visualization App
Salesforce Classic only.
  • Package manager lets you create and manage packages from Setup, just like you could in Salesforce Classic.
  • New products sold using AppExchange Checkout and new free products must be Lightning Ready before their security review.
  • For existing products, we encourage you to get Lightning Ready as soon as possible

Lightning Dev tools

  • The Installed Packages landing page is available in the Lightning Experience setup area.
  • Apps listed on AppExchange are marked with a Lightning Ready sash if they’re fully compatible with Lightning Experience. If the app is not Lightning Ready we recommend sticking to Salesforce Classic to prevent unexpected behavior.
  • Apex code and queries continue to function as expected, regardless of whether you’re using Lightning Experience or Salesforce Classic.
  • In Lightning Experience : The App Launcher is available by default to all users in your organization. Admins should make ensure that your development work is only seen by the people who are supposed to see it.
  • Canvas allows you to easily integrate third party applications in Salesforce - you can integrate Canvas apps in Lightning Components.
  • Salesforce Mobile & Lightning Experience are made for each other. You can use sforce.one JS object for navigation in Lightning Experience.
  • Mobile SDK isn’t impacted by Lightning Experience.

References