SlideShare a Scribd company logo
Lightning ‘16 Roundup
TL;DR
Mike Tetlow
Bracket Labs
Co-Founder and Lead Developer
mike@bracketlabs.com
@Mikename
Branding Changes:
Chatter is back
• LEx initially had Chatter being called “Feed” indicating that Salesforce was backing from the Chatter Brand
• Winter ‘17 has the “Feed” references back to being called Chatter
• Maybe nostalgia?
ISV Rebrand
• ISVs were rebranded as “App Vendors”
• ISVs were quickly rebranded again to “App Innovation Partners”
Communities Templates
• Rebranded to “Lightning Bolt”
External Objects
• They were Lightning Connect, now it’s Salesforce Connect
Lightning Experience change highlights:
Sidebar Nav went to the Header
• Brings us back to something very close to Classic tabsets
• Reason = Usability
RIP IE11
• New orgs after Summer ‘16 get redirected to classic, Dec 16 2017 (1yr from now) redirect for everyone
• YAY
Readiness check
• New utility in setup that looks at features and customizations in your org and recommends if ready or work
needs to be done to migrate.
AppExchange in Setup
• New setup tab that allows you to get to the AppExchange in setup without going to appexchange.com
• Neat, hopefully the SSO is easier!
Lightning Experience change highlights(cont):
Custom Record Page by App (Tab Set) or default for all
• Wat?
Lightning Experience change highlights(cont):
Feature Parity
• Lots of work done, worth checking again.
What needs work
• Encrypted data is not masked in Lightning Experience, need developer to apply it manually in custom
component
• No account Hierarchy
• Bug with Account teams, if owd for contacts is private, contacts added to team don’t default to private
• Contract History is missing
• Can’t directly email a quote from the PDF preview
• List view actions are client side and need the data to be fully loaded to client for edits (ie edit when only 50 /
200 are displayed, only the 50 will be edited)
• Lots more at: https://releasenotes.docs.salesforce.com/en-us/winter16/release-
notes/lex_gaps_limitations.htm
Lightning developer change highlights:
lightning: namespace global components
• Abandoning ui:
• Lots of duplicative work with ui: (lightning:select vs force:inputSelect)
• Adhere to SLDS
Access checks live
• No access=“global”/”public” = you’re gonna have a bad time
Locker Rollout Delayed until Spring ‘17
• Should start porting now, some people can’t turn it off unless in managed package
Lightning Out
• Focus seems to have been lost imo, many components only work well within one.app
• Some aren’t documented to only work in one.app, like force:recordView/force:recordEdit
• force:recordPreview only works in one.app, wtf?
Lightning Component State Management
Unidirectional data flow, smart components, dumb components, and Lightning.
Oh My.
Mike Tetlow
Bracket Labs
Co-Founder and Lead Developer
mike@bracketlabs.com
@Mikename
Common Lightning Development Questions:
How do I tell the parent something happened on the child?
How can a component communicate with a sibling component?
General answer is events!
How do I add/delete a bunch of components via javascript?
How do I pass a value by reference or by value?
Can we make this more obvious/less of a problem via a design pattern?
The Problem:
What is state?
• Data you load from the server
• Pending changes on the client side
• Newly modified data from the server
How do you change state?
• Some kind of user interaction =>
• A non-persisted client side change
• A persisted server side change
• Some random background action
Why do you change state?
• Some kind of user interaction necessitates change of data or how the data is displayed
Can every component have state?
• Sure… should it?
State and where it is held
The Solution:
Keep all state in one spot
• Benefits
• One source of truth
• Lots of times state winds up shared between components as an application grows
• Debugging
• Large teams working on the same codebase
• Cons
• One source of truth means that you have to change your thinking
• More work
• You have to go up the component tree to modify
• You have to pass more stuff down the component tree
How do?
One component holds the state and is “Smart”
• Smart components do
• Fetch data from the server
• Apply changes to the application state
• Persist data on the server
• Smart components do not
• Deal with complex UI layout
Other components are “Dumb”
• Dumb components do
• Deal with complex UI layout and all presentation of data
• Say something has happened from the user
• Dumb components DO NOT
• Mutate State
• Temporarily change the presentation of data
Smart Component Shape
What does a Smart Component look like?
• Needs
• Handle data fetching
• Handle what dumb components say
• Store and handle all application state
• Keep track of how dumb components should present data
Dumb Component Shape
What does a Dumb Component look like?
• Needs
• Do a whole lot of layout
• Say the user has done something
• All UX work
Dumb Component -> Smart Component Communication
When something happens on a dumb component, the smart component needs to be informed to
change application state
• Needs
• Execute something on the parent component
• You can pass a attribute as an AURA.Action that maps to a function on the parent component
• You can fire a component event from the dumb component and handle it in the smart component
• Events approach
• We can make a single generic action event and identify the actions via a key, and provide needed attributes within the
event
• We can make a generic handler component that looks a lot like a Flux store
Communication Flow
Dumb Component Smart Component
Server / Apex
User Interaction
Smart Component
Component event with
attributes describing the action
Smart Component Controller parses
action event and does things:
Server action, Optimistic Updates,
Loading indicators
Server returns transaction to Smart
Component controller
Smart Components updates attributes
appropriately
Attributes from the Smart
Component flow down and
update the dumb component
Optional: Optimistic updates
update the dumb component
Let’s make a component!
Smart: Account Editor
(Container)
Dumb: Account Detail
Dumb: Contact Detail
Sample App Demo
https://github.com/mtetlow/Fluxy-Lightning/
What do we think about this approach?
• Cons
• Lots of typing
• Component Event bubbling is a little weird
• Events are great, they allow us to do a lot of cross component communication
• But, they don’t bubble like traditional DOM events. WTF is a facet provider? and why does the average lightning developer need to
know that?
• Pros
• Consistency is key
• If you are developing a large set of components, keep them consistent, working between components that have different philosophies
on where state lives will be miserable.
• Large teams all understand
• Possible Gotchyas
• Render speed? Solved in React world via immutable data and lifecycle hooks. How do in Lightning world?
Lessons learned
• We all know state is evil
• State is bad because if it mutates and you’re not expecting it, strange things happen in your app
• Keeping the locations where state is mutated contained dramatically increase the speed at which issues can be
resolved
• Apply proven concepts to Salesforce development
• While the APIs and shape of Salesforce front end dev are new and different, lessons learned from all component based front end dev
apply to Lightning Components
Q&A
https://github.com/mtetlow/Fluxy-Lightning/
@Mikename

More Related Content

What's hot

M365 virtual marathon understanding power platform licensing may 28 2020
M365 virtual marathon   understanding power platform licensing may 28 2020M365 virtual marathon   understanding power platform licensing may 28 2020
M365 virtual marathon understanding power platform licensing may 28 2020
Ralph Rivas
 
#SPSToronto 2018 migrate you custom development to the SharePoint Framework
#SPSToronto 2018 migrate you custom development to the SharePoint Framework#SPSToronto 2018 migrate you custom development to the SharePoint Framework
#SPSToronto 2018 migrate you custom development to the SharePoint Framework
Vincent Biret
 
Creating No Code Web Apps with FME Server
Creating No Code Web Apps with FME ServerCreating No Code Web Apps with FME Server
Creating No Code Web Apps with FME Server
Safe Software
 
A Step-By-Step Guide to Building Codeless Web Apps
A Step-By-Step Guide to Building Codeless Web AppsA Step-By-Step Guide to Building Codeless Web Apps
A Step-By-Step Guide to Building Codeless Web Apps
Safe Software
 
How to Connect to Any REST API (Without Writing Any Code)
How to Connect to Any REST API (Without Writing Any Code)How to Connect to Any REST API (Without Writing Any Code)
How to Connect to Any REST API (Without Writing Any Code)
Safe Software
 
BrightGen's Spring 13 Salesforce Release Webinar
BrightGen's Spring 13 Salesforce Release WebinarBrightGen's Spring 13 Salesforce Release Webinar
BrightGen's Spring 13 Salesforce Release Webinar
brightgenss
 
ECS19 - Michael Greth - Best Practice with Company Video on Microsoft Stream
ECS19 - Michael Greth - Best Practice with Company Video on Microsoft StreamECS19 - Michael Greth - Best Practice with Company Video on Microsoft Stream
ECS19 - Michael Greth - Best Practice with Company Video on Microsoft Stream
European Collaboration Summit
 
What's in SharePoint land 2016 for the end user
What's in SharePoint land 2016 for the end userWhat's in SharePoint land 2016 for the end user
What's in SharePoint land 2016 for the end user
SPC Adriatics
 
5 Things I Wish I'd Known about Microservices
5 Things I Wish I'd Known about Microservices5 Things I Wish I'd Known about Microservices
5 Things I Wish I'd Known about Microservices
Atlassian
 
Made for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsMade for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile Apps
SPC Adriatics
 
AUGNYC June 21 Presentations
AUGNYC June 21 PresentationsAUGNYC June 21 Presentations
AUGNYC June 21 Presentations
Marlon Palha
 
Modernizing Rooms and Resources Functionality
Modernizing Rooms and Resources FunctionalityModernizing Rooms and Resources Functionality
Modernizing Rooms and Resources Functionality
Keith Brooks
 
An Introduction to the Office 365 Patterns and Practices Project
An Introduction to the Office 365 Patterns and Practices ProjectAn Introduction to the Office 365 Patterns and Practices Project
An Introduction to the Office 365 Patterns and Practices Project
SPC Adriatics
 
Streamline Workflows Using Salesforce Process builder
Streamline Workflows Using Salesforce Process builderStreamline Workflows Using Salesforce Process builder
Streamline Workflows Using Salesforce Process builder
Suyati Technologies
 
Getting started with SharePoint REST API in custom SharePoint workflows Resto...
Getting started with SharePoint REST API in custom SharePoint workflows Resto...Getting started with SharePoint REST API in custom SharePoint workflows Resto...
Getting started with SharePoint REST API in custom SharePoint workflows Resto...
Prashant G Bhoyar (Microsoft MVP)
 
ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...
ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...
ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...
Sébastien Levert
 
Road to the Cloud - Extending your reach with SharePoint and Office 365
Road to the Cloud - Extending your reach with SharePoint and Office 365Road to the Cloud - Extending your reach with SharePoint and Office 365
Road to the Cloud - Extending your reach with SharePoint and Office 365
Talbott Crowell
 
SharePoint Online
SharePoint OnlineSharePoint Online
SharePoint Online
Nigel Price
 
Summer 18 Release Webinar
Summer 18 Release WebinarSummer 18 Release Webinar
Summer 18 Release Webinar
brightgenss
 
O365Con18 - Bridge Over O365 Gaps and Enhance User Satisfaction - Nimrod Geva
O365Con18 - Bridge Over O365 Gaps and Enhance User Satisfaction - Nimrod GevaO365Con18 - Bridge Over O365 Gaps and Enhance User Satisfaction - Nimrod Geva
O365Con18 - Bridge Over O365 Gaps and Enhance User Satisfaction - Nimrod Geva
NCCOMMS
 

What's hot (20)

M365 virtual marathon understanding power platform licensing may 28 2020
M365 virtual marathon   understanding power platform licensing may 28 2020M365 virtual marathon   understanding power platform licensing may 28 2020
M365 virtual marathon understanding power platform licensing may 28 2020
 
#SPSToronto 2018 migrate you custom development to the SharePoint Framework
#SPSToronto 2018 migrate you custom development to the SharePoint Framework#SPSToronto 2018 migrate you custom development to the SharePoint Framework
#SPSToronto 2018 migrate you custom development to the SharePoint Framework
 
Creating No Code Web Apps with FME Server
Creating No Code Web Apps with FME ServerCreating No Code Web Apps with FME Server
Creating No Code Web Apps with FME Server
 
A Step-By-Step Guide to Building Codeless Web Apps
A Step-By-Step Guide to Building Codeless Web AppsA Step-By-Step Guide to Building Codeless Web Apps
A Step-By-Step Guide to Building Codeless Web Apps
 
How to Connect to Any REST API (Without Writing Any Code)
How to Connect to Any REST API (Without Writing Any Code)How to Connect to Any REST API (Without Writing Any Code)
How to Connect to Any REST API (Without Writing Any Code)
 
BrightGen's Spring 13 Salesforce Release Webinar
BrightGen's Spring 13 Salesforce Release WebinarBrightGen's Spring 13 Salesforce Release Webinar
BrightGen's Spring 13 Salesforce Release Webinar
 
ECS19 - Michael Greth - Best Practice with Company Video on Microsoft Stream
ECS19 - Michael Greth - Best Practice with Company Video on Microsoft StreamECS19 - Michael Greth - Best Practice with Company Video on Microsoft Stream
ECS19 - Michael Greth - Best Practice with Company Video on Microsoft Stream
 
What's in SharePoint land 2016 for the end user
What's in SharePoint land 2016 for the end userWhat's in SharePoint land 2016 for the end user
What's in SharePoint land 2016 for the end user
 
5 Things I Wish I'd Known about Microservices
5 Things I Wish I'd Known about Microservices5 Things I Wish I'd Known about Microservices
5 Things I Wish I'd Known about Microservices
 
Made for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsMade for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile Apps
 
AUGNYC June 21 Presentations
AUGNYC June 21 PresentationsAUGNYC June 21 Presentations
AUGNYC June 21 Presentations
 
Modernizing Rooms and Resources Functionality
Modernizing Rooms and Resources FunctionalityModernizing Rooms and Resources Functionality
Modernizing Rooms and Resources Functionality
 
An Introduction to the Office 365 Patterns and Practices Project
An Introduction to the Office 365 Patterns and Practices ProjectAn Introduction to the Office 365 Patterns and Practices Project
An Introduction to the Office 365 Patterns and Practices Project
 
Streamline Workflows Using Salesforce Process builder
Streamline Workflows Using Salesforce Process builderStreamline Workflows Using Salesforce Process builder
Streamline Workflows Using Salesforce Process builder
 
Getting started with SharePoint REST API in custom SharePoint workflows Resto...
Getting started with SharePoint REST API in custom SharePoint workflows Resto...Getting started with SharePoint REST API in custom SharePoint workflows Resto...
Getting started with SharePoint REST API in custom SharePoint workflows Resto...
 
ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...
ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...
ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...
 
Road to the Cloud - Extending your reach with SharePoint and Office 365
Road to the Cloud - Extending your reach with SharePoint and Office 365Road to the Cloud - Extending your reach with SharePoint and Office 365
Road to the Cloud - Extending your reach with SharePoint and Office 365
 
SharePoint Online
SharePoint OnlineSharePoint Online
SharePoint Online
 
Summer 18 Release Webinar
Summer 18 Release WebinarSummer 18 Release Webinar
Summer 18 Release Webinar
 
O365Con18 - Bridge Over O365 Gaps and Enhance User Satisfaction - Nimrod Geva
O365Con18 - Bridge Over O365 Gaps and Enhance User Satisfaction - Nimrod GevaO365Con18 - Bridge Over O365 Gaps and Enhance User Satisfaction - Nimrod Geva
O365Con18 - Bridge Over O365 Gaps and Enhance User Satisfaction - Nimrod Geva
 

Similar to Denver Salesforce Developer User Group dec 2016 lightning components

O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
Thomas Daly
 
React.js at Cortex
React.js at CortexReact.js at Cortex
React.js at Cortex
Geoff Harcourt
 
Meteor + React
Meteor + ReactMeteor + React
Meteor + React
Taggart Bowen-Gaddy
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive ui
Paul van Zyl
 
React.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UIReact.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UI
Marcin Grzywaczewski
 
Learning React - I
Learning React - ILearning React - I
Learning React - I
Mitch Chen
 
React introduction
React introductionReact introduction
React introduction
Kashyap Parmar
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!
Jeremy Likness
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - Talk
Matthias Noback
 
React js
React jsReact js
React js
Nikhil Karkra
 
Dreamforce 2017 - Up close and personal with Lightning Experience as Platform
Dreamforce 2017 - Up close and personal with Lightning Experience as PlatformDreamforce 2017 - Up close and personal with Lightning Experience as Platform
Dreamforce 2017 - Up close and personal with Lightning Experience as Platform
andyinthecloud
 
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Atlassian
 
Modernize Solutions with SharePoint & the Power Platform
Modernize Solutions with SharePoint & the Power PlatformModernize Solutions with SharePoint & the Power Platform
Modernize Solutions with SharePoint & the Power Platform
Jonathan Schultz
 
ReactJS - Re-rendering pages in the age of the mutable DOM
ReactJS - Re-rendering pages in the age of the mutable DOMReactJS - Re-rendering pages in the age of the mutable DOM
ReactJS - Re-rendering pages in the age of the mutable DOM
Marc Cyr
 
Relay: Seamless Syncing for React (VanJS)
Relay: Seamless Syncing for React (VanJS)Relay: Seamless Syncing for React (VanJS)
Relay: Seamless Syncing for React (VanJS)
Brooklyn Zelenka
 
Office Add-ins community call-March 2019
Office Add-ins community call-March 2019Office Add-ins community call-March 2019
Office Add-ins community call-March 2019
Microsoft 365 Developer
 
Drew madelung sp designer workflows - sp-biz
Drew madelung   sp designer workflows - sp-bizDrew madelung   sp designer workflows - sp-biz
Drew madelung sp designer workflows - sp-biz
Drew Madelung
 
Datapolis Guest Expert Presentation: Limitations of SharePoint Designer by Bj...
Datapolis Guest Expert Presentation: Limitations of SharePoint Designer by Bj...Datapolis Guest Expert Presentation: Limitations of SharePoint Designer by Bj...
Datapolis Guest Expert Presentation: Limitations of SharePoint Designer by Bj...
Datapolis
 
Nsc 2013 06-17 - random rants on 2013
Nsc 2013 06-17 - random rants on 2013Nsc 2013 06-17 - random rants on 2013
Nsc 2013 06-17 - random rants on 2013
Mikael Svenson
 
Meteor Revolution: From DDP to Blaze Reactive Rendering
Meteor Revolution: From DDP to Blaze Reactive Rendering Meteor Revolution: From DDP to Blaze Reactive Rendering
Meteor Revolution: From DDP to Blaze Reactive Rendering
Massimo Sgrelli
 

Similar to Denver Salesforce Developer User Group dec 2016 lightning components (20)

O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
 
React.js at Cortex
React.js at CortexReact.js at Cortex
React.js at Cortex
 
Meteor + React
Meteor + ReactMeteor + React
Meteor + React
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive ui
 
React.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UIReact.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UI
 
Learning React - I
Learning React - ILearning React - I
Learning React - I
 
React introduction
React introductionReact introduction
React introduction
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - Talk
 
React js
React jsReact js
React js
 
Dreamforce 2017 - Up close and personal with Lightning Experience as Platform
Dreamforce 2017 - Up close and personal with Lightning Experience as PlatformDreamforce 2017 - Up close and personal with Lightning Experience as Platform
Dreamforce 2017 - Up close and personal with Lightning Experience as Platform
 
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
 
Modernize Solutions with SharePoint & the Power Platform
Modernize Solutions with SharePoint & the Power PlatformModernize Solutions with SharePoint & the Power Platform
Modernize Solutions with SharePoint & the Power Platform
 
ReactJS - Re-rendering pages in the age of the mutable DOM
ReactJS - Re-rendering pages in the age of the mutable DOMReactJS - Re-rendering pages in the age of the mutable DOM
ReactJS - Re-rendering pages in the age of the mutable DOM
 
Relay: Seamless Syncing for React (VanJS)
Relay: Seamless Syncing for React (VanJS)Relay: Seamless Syncing for React (VanJS)
Relay: Seamless Syncing for React (VanJS)
 
Office Add-ins community call-March 2019
Office Add-ins community call-March 2019Office Add-ins community call-March 2019
Office Add-ins community call-March 2019
 
Drew madelung sp designer workflows - sp-biz
Drew madelung   sp designer workflows - sp-bizDrew madelung   sp designer workflows - sp-biz
Drew madelung sp designer workflows - sp-biz
 
Datapolis Guest Expert Presentation: Limitations of SharePoint Designer by Bj...
Datapolis Guest Expert Presentation: Limitations of SharePoint Designer by Bj...Datapolis Guest Expert Presentation: Limitations of SharePoint Designer by Bj...
Datapolis Guest Expert Presentation: Limitations of SharePoint Designer by Bj...
 
Nsc 2013 06-17 - random rants on 2013
Nsc 2013 06-17 - random rants on 2013Nsc 2013 06-17 - random rants on 2013
Nsc 2013 06-17 - random rants on 2013
 
Meteor Revolution: From DDP to Blaze Reactive Rendering
Meteor Revolution: From DDP to Blaze Reactive Rendering Meteor Revolution: From DDP to Blaze Reactive Rendering
Meteor Revolution: From DDP to Blaze Reactive Rendering
 

Recently uploaded

AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Undress Baby
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
Hironori Washizaki
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 

Recently uploaded (20)

AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 

Denver Salesforce Developer User Group dec 2016 lightning components

  • 1. Lightning ‘16 Roundup TL;DR Mike Tetlow Bracket Labs Co-Founder and Lead Developer mike@bracketlabs.com @Mikename
  • 2. Branding Changes: Chatter is back • LEx initially had Chatter being called “Feed” indicating that Salesforce was backing from the Chatter Brand • Winter ‘17 has the “Feed” references back to being called Chatter • Maybe nostalgia? ISV Rebrand • ISVs were rebranded as “App Vendors” • ISVs were quickly rebranded again to “App Innovation Partners” Communities Templates • Rebranded to “Lightning Bolt” External Objects • They were Lightning Connect, now it’s Salesforce Connect
  • 3. Lightning Experience change highlights: Sidebar Nav went to the Header • Brings us back to something very close to Classic tabsets • Reason = Usability RIP IE11 • New orgs after Summer ‘16 get redirected to classic, Dec 16 2017 (1yr from now) redirect for everyone • YAY Readiness check • New utility in setup that looks at features and customizations in your org and recommends if ready or work needs to be done to migrate. AppExchange in Setup • New setup tab that allows you to get to the AppExchange in setup without going to appexchange.com • Neat, hopefully the SSO is easier!
  • 4. Lightning Experience change highlights(cont): Custom Record Page by App (Tab Set) or default for all • Wat?
  • 5.
  • 6. Lightning Experience change highlights(cont): Feature Parity • Lots of work done, worth checking again. What needs work • Encrypted data is not masked in Lightning Experience, need developer to apply it manually in custom component • No account Hierarchy • Bug with Account teams, if owd for contacts is private, contacts added to team don’t default to private • Contract History is missing • Can’t directly email a quote from the PDF preview • List view actions are client side and need the data to be fully loaded to client for edits (ie edit when only 50 / 200 are displayed, only the 50 will be edited) • Lots more at: https://releasenotes.docs.salesforce.com/en-us/winter16/release- notes/lex_gaps_limitations.htm
  • 7. Lightning developer change highlights: lightning: namespace global components • Abandoning ui: • Lots of duplicative work with ui: (lightning:select vs force:inputSelect) • Adhere to SLDS Access checks live • No access=“global”/”public” = you’re gonna have a bad time Locker Rollout Delayed until Spring ‘17 • Should start porting now, some people can’t turn it off unless in managed package Lightning Out • Focus seems to have been lost imo, many components only work well within one.app • Some aren’t documented to only work in one.app, like force:recordView/force:recordEdit • force:recordPreview only works in one.app, wtf?
  • 8. Lightning Component State Management Unidirectional data flow, smart components, dumb components, and Lightning. Oh My. Mike Tetlow Bracket Labs Co-Founder and Lead Developer mike@bracketlabs.com @Mikename
  • 9. Common Lightning Development Questions: How do I tell the parent something happened on the child? How can a component communicate with a sibling component? General answer is events! How do I add/delete a bunch of components via javascript? How do I pass a value by reference or by value? Can we make this more obvious/less of a problem via a design pattern?
  • 10. The Problem: What is state? • Data you load from the server • Pending changes on the client side • Newly modified data from the server How do you change state? • Some kind of user interaction => • A non-persisted client side change • A persisted server side change • Some random background action Why do you change state? • Some kind of user interaction necessitates change of data or how the data is displayed Can every component have state? • Sure… should it? State and where it is held
  • 11. The Solution: Keep all state in one spot • Benefits • One source of truth • Lots of times state winds up shared between components as an application grows • Debugging • Large teams working on the same codebase • Cons • One source of truth means that you have to change your thinking • More work • You have to go up the component tree to modify • You have to pass more stuff down the component tree
  • 12. How do? One component holds the state and is “Smart” • Smart components do • Fetch data from the server • Apply changes to the application state • Persist data on the server • Smart components do not • Deal with complex UI layout Other components are “Dumb” • Dumb components do • Deal with complex UI layout and all presentation of data • Say something has happened from the user • Dumb components DO NOT • Mutate State • Temporarily change the presentation of data
  • 13. Smart Component Shape What does a Smart Component look like? • Needs • Handle data fetching • Handle what dumb components say • Store and handle all application state • Keep track of how dumb components should present data
  • 14. Dumb Component Shape What does a Dumb Component look like? • Needs • Do a whole lot of layout • Say the user has done something • All UX work
  • 15. Dumb Component -> Smart Component Communication When something happens on a dumb component, the smart component needs to be informed to change application state • Needs • Execute something on the parent component • You can pass a attribute as an AURA.Action that maps to a function on the parent component • You can fire a component event from the dumb component and handle it in the smart component • Events approach • We can make a single generic action event and identify the actions via a key, and provide needed attributes within the event • We can make a generic handler component that looks a lot like a Flux store
  • 16. Communication Flow Dumb Component Smart Component Server / Apex User Interaction Smart Component Component event with attributes describing the action Smart Component Controller parses action event and does things: Server action, Optimistic Updates, Loading indicators Server returns transaction to Smart Component controller Smart Components updates attributes appropriately Attributes from the Smart Component flow down and update the dumb component Optional: Optimistic updates update the dumb component
  • 17. Let’s make a component! Smart: Account Editor (Container) Dumb: Account Detail Dumb: Contact Detail
  • 19. What do we think about this approach? • Cons • Lots of typing • Component Event bubbling is a little weird • Events are great, they allow us to do a lot of cross component communication • But, they don’t bubble like traditional DOM events. WTF is a facet provider? and why does the average lightning developer need to know that? • Pros • Consistency is key • If you are developing a large set of components, keep them consistent, working between components that have different philosophies on where state lives will be miserable. • Large teams all understand • Possible Gotchyas • Render speed? Solved in React world via immutable data and lifecycle hooks. How do in Lightning world?
  • 20. Lessons learned • We all know state is evil • State is bad because if it mutates and you’re not expecting it, strange things happen in your app • Keeping the locations where state is mutated contained dramatically increase the speed at which issues can be resolved • Apply proven concepts to Salesforce development • While the APIs and shape of Salesforce front end dev are new and different, lessons learned from all component based front end dev apply to Lightning Components