SlideShare a Scribd company logo
Nick Van Weerdenburg | CEO, Rangle.io
Andrey Feldman | VP Product, Sprout
Building a Social App
with Ionic & PhoneGap
Meet the Players…
Rangle.io | Sprout
Rangle.io
• Founded 2013, Toronto-based
• North American JavaScript consultancy
• Focused on AngularJS, PhoneGap, Ionic,
Node and Mobile
Sprout
• Canadian Startup, Founded 2012
• Helping co-workers get healthy together
• Use LAMP/Redis for Web and PhoneGap,
Angular & Ionic for Mobile
What does Sprout do?
A lot…
Company Social
Health & Wellness
Feed
Company
challenges,
personal health
goals
Interest groups,
Event calendars
and Device
Integrations
Sprout Mobile - One
Year Ago
• Optimized HTML5 site
• Poor user experience
• Mismatch with user’s natural mobile usage goals
• Poor app performance due to the use of
traditional web solutions (server-side, jQuery)
• High operations and maintenance costs
–Bo Jackson
“Set your goals high, and
don't stop till you get there.”
Business and Technical
Goals
• An amazing user experience
• Speed to market
• Ease of maintenance
• Support of multiple mobile platforms
• Good performance on older phones
Assembling the team…
• Build a new team
• Hire contractors (direct or via agency)
• Partner with consultancy to augment
existing team
Outsource or inhouse?
Picking the right
partner…
• Strength in complementary areas
• AngularJS expertise
• Hybrid application (HTML5/CSS/JavaScript)
mobile development expertise
• Shared perspective and focus on UX
• Handoff considerations
Picking a Technology
Platform
• Tradeoffs between native and hybrid options
• Appropriate use-cases for Ionic and AngularJS
• Older Device Support (iOS 3, Android 2.3)
• Support Mobile Web As Well as Published Apps
Building the Application
It wasn’t easy
Creating a Comprehensive Social Media App Using Ionic and Phone Gap
Creating a Comprehensive Social Media App Using Ionic and Phone Gap
Creating a Comprehensive Social Media App Using Ionic and Phone Gap
Technical Challenges
• Ionic focus on modern phones (iOS7+, Android 4.1+)
• Large data-sets required large amounts of memory
• Complex Keyboard interactions required custom
work
• CSS Is still challenging in large mobile apps!
• Achieving native-like fluidity
• Profiling tools on older Android devices
LESSONS LEARNED
Technical Lessons
• Build with Ionic’s modern principles, optimize as needed
• DOM manipulations on large data sets and structures
with JavaScript are very costly
• Be wary of CSS styles that cause screen reflow or
repaint
• Learn your mobile profiling tools- JS, CSS, and DOM
• It can be hard to identify if issues are with app or API
• REST APIs are always more work than expected
Infinite Scroll Challenges
• Supporting older Android Phones (Nexus)
• Keeping it fast and smooth
Types of Slow
• Waiting at bottom
• Occasional pauses
• Slow scrolling
Avoiding the Slow
• a fetch queue
• reducing the cost of rendering
• collection-repeat?
• removing Angular digest cycle activity
Doing it Without Angular
• Use an asynchronous rendering queue
• RAW DOM insertion
• Batching insertion
• requestAnimationFrame()
• Skinny directive to encapsulate
• Downside: a lot more work than using Angular
Weight of Accumulated
DOM
• faster scrolling = bigger DOM
• bigger DOM = slower scrolling
• Solution: removing hidden DOM elements (kudos
to LinkedIn)
• Solution: overflow scrolling vs. ion-scroll
• Solution: comprehensive profiling of JS, CSS and
DOM
Love Your CSS
Parse HTML
To Construct
The DOM Tree
Render Tree
Construction
Layout of The
Render Tree
Painting The
Render Tree
http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
Smooth, high frame rates drive user engagement and
can affect how much users interact with your website or
app
60 fps
16ms per Frame
Each frame the browser will:
• Evaluate some JavaScript
• Re-calculate style for the elements
• Re-calculate layout (if styles are modified by
JavaScript)
• Draw a subset of the page to various layers
• Then it will use the GPU to composite these layers
to the screen
Reflow (or Relayout) Occurs
when…
There are changes to:
• document content
• structure
• element position
Styles That Affect Layout
height
margin
border-width
top
font-size
text-align
front-weight
left
line-height
right
white-space
min-height
width
padding
display
border
position
float
overflow-y
overflow
font-family
vertical-align
clear
bottom
Styles That Affect Paint
color
visibility
text-decoration
background-position
outline-color
outline-width
background-size
border-style
background
background-image
background-repeat
outline
border-radius
box-shadow
Is There Hope for
Animation?
Lots of Options!
Position
Scale
Rotation
Skew
Matrix
Opacity
transform : translate(npx, npx);
transform: scale(n);
transform: rotate(ndeg);
transform: skew(X|Y)(ndeg);
transform: matrix(3d)(…);
opacity: 0…1;
Creating a Comprehensive Social Media App Using Ionic and Phone Gap
• Design is ongoing through the entire project
• Collaborate early and identify team roles
• Don’t underestimate the REST API effort
• Document the API well
• Make sure the API reflects the to-be API goal
• Write separate tests for the API
Process Lessons
CONCLUSIONS &
RECOMENDATIONS
When to Use Ionic and
Angular
• Use them for data-driven applications with a REST
API
• Limited animations
• User base that is largely using modern phones.
• Social applications that have some interaction and
are information-consuming rather than
information-creation tools, are an excellent
candidate.
When Not to Use Ionic and
Angular
• Apps running heavy animation (such as in games)
• Apps that require extremely fast performance on
older phones (Android is particularly problematic in
this respect).
Build your app first for
modern phones
• You can get good performance on a wide variety
of devices, including on older phones, and even
acceptable performance on quite old phones.
• Optimize for older phones after building for
modern phones.
Save time and money
• Write your app once and deploy it on multiple
platforms
• The flexibility and focus enabled by a single
codebase easily compensates for any minor
technical sacrifice in performance
Thank You
Nick Van Weerdenburg | CEO, Rangle.io
Andrey Feldman | VP Product, Sprout
nick@Rangle.io @Rangleio
a.feldman@sproutatwork.com @SproutAtWork
To download the new case study: http://go.rangle.io/sprout

More Related Content

What's hot (20)

PDF
Patterns and practices for building enterprise-scale HTML5 apps
Phil Leggetter
 
PDF
Serverless Meetup - 12 gennaio 2017
Luca Bianchi
 
PPTX
Alfresco Process Services (APS) and the Internet of Things
Nathan McMinn
 
PDF
The Architect Way - JSCamp.asia 2012
Jan Jongboom
 
PPTX
Engineering Netflix Global Operations in the Cloud
Josh Evans
 
PDF
Scaling Uber
C4Media
 
PDF
DevOps - A Gentle Introduction
Ganesh Samarthyam
 
PDF
Immutable Infrastructure: Rise of the Machine Images
C4Media
 
PDF
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
CodeOps Technologies LLP
 
PPTX
Refactoring Organizations - A Netflix Study (QCon NYC 2017)
Josh Evans
 
PPTX
Better java with design
Narayann Swaami
 
PPTX
Story Testing Approach for Enterprise Applications using Selenium Framework
Oleksiy Rezchykov
 
PDF
Deployment Nirvana
Adrian Pike
 
PDF
AD1545 - Extending the XPages Extension Library
paidi_ed
 
PDF
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
NaimishKakkad2
 
PPTX
#NetflixEverywhere Global Architecture
Josh Evans
 
PDF
Getting started with mobile application development
ColdFusionConference
 
PDF
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe-Lexware GmbH & Co KG
 
PPTX
Concurrency at Scale: Evolution to Micro-Services
Randy Shoup
 
PDF
Evolving the Netflix API
Katharina Probst
 
Patterns and practices for building enterprise-scale HTML5 apps
Phil Leggetter
 
Serverless Meetup - 12 gennaio 2017
Luca Bianchi
 
Alfresco Process Services (APS) and the Internet of Things
Nathan McMinn
 
The Architect Way - JSCamp.asia 2012
Jan Jongboom
 
Engineering Netflix Global Operations in the Cloud
Josh Evans
 
Scaling Uber
C4Media
 
DevOps - A Gentle Introduction
Ganesh Samarthyam
 
Immutable Infrastructure: Rise of the Machine Images
C4Media
 
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
CodeOps Technologies LLP
 
Refactoring Organizations - A Netflix Study (QCon NYC 2017)
Josh Evans
 
Better java with design
Narayann Swaami
 
Story Testing Approach for Enterprise Applications using Selenium Framework
Oleksiy Rezchykov
 
Deployment Nirvana
Adrian Pike
 
AD1545 - Extending the XPages Extension Library
paidi_ed
 
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
NaimishKakkad2
 
#NetflixEverywhere Global Architecture
Josh Evans
 
Getting started with mobile application development
ColdFusionConference
 
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe-Lexware GmbH & Co KG
 
Concurrency at Scale: Evolution to Micro-Services
Randy Shoup
 
Evolving the Netflix API
Katharina Probst
 

Viewers also liked (20)

PPT
Java, Communities, and Social Networking
Lou Ordorica
 
PPTX
Social networking site
Alok kumar
 
DOCX
Social Networking Site in JAVA
PAS Softech Pvt. Ltd.
 
DOC
social networking site
Abhishek Ranjan
 
PDF
“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems
FITC
 
PDF
Building Tools for the Next Web
FITC
 
PPTX
21st Century Crystal Ball
FITC
 
PDF
Squishy pixels
FITC
 
PDF
My Type of Life
FITC
 
PPTX
Improving Game Performance in the Browser
FITC
 
PDF
A New Era for Animators
FITC
 
PDF
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
FITC
 
PDF
Functional Web Development
FITC
 
PDF
The Little Shop of TDD Horrors
FITC
 
PPT
! or ? with Chip Kidd
FITC
 
PDF
Just Make Stuff!
FITC
 
PDF
The Giddiest Kipper
FITC
 
PDF
Adapt or Die
FITC
 
PDF
I HATE YOUR GAME with Bob Heubel
FITC
 
PDF
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
FITC
 
Java, Communities, and Social Networking
Lou Ordorica
 
Social networking site
Alok kumar
 
Social Networking Site in JAVA
PAS Softech Pvt. Ltd.
 
social networking site
Abhishek Ranjan
 
“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems
FITC
 
Building Tools for the Next Web
FITC
 
21st Century Crystal Ball
FITC
 
Squishy pixels
FITC
 
My Type of Life
FITC
 
Improving Game Performance in the Browser
FITC
 
A New Era for Animators
FITC
 
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
FITC
 
Functional Web Development
FITC
 
The Little Shop of TDD Horrors
FITC
 
! or ? with Chip Kidd
FITC
 
Just Make Stuff!
FITC
 
The Giddiest Kipper
FITC
 
Adapt or Die
FITC
 
I HATE YOUR GAME with Bob Heubel
FITC
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
FITC
 
Ad

Similar to Creating a Comprehensive Social Media App Using Ionic and Phone Gap (20)

PDF
Transitioning Groupon to Node.js - EmpireJS 2014
Sean McCullough
 
PDF
Tech Thursdays: Building Products
Hayden Bleasel
 
PDF
Win j svsphonegap-damyan-petev-mihail-mateev
Mihail Mateev
 
PPTX
Feature driven agile oriented web applications
Ram G Athreya
 
PPTX
PSEWEB 2013 - Make it responsive - TERMINALFOUR
Terminalfour
 
PDF
Designing and Theming Drupal for Mobile Devices
David Lanier
 
PPTX
Native vs hybrid approach Mobile App Development
Senthil Kumar Kaliathan
 
PDF
It is a sunny day
bcoder
 
PDF
Friday final test
bcoder
 
PPTX
Neoito — NativeScript Best Coding Practices
Neoito
 
PDF
Design4Drupal Boston 2013 - Bumps in the Road to Responsive
Salem Ghoweri
 
PDF
React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
Kobkrit Viriyayudhakorn
 
PDF
l1-reactnativeintroduction-160816150540.pdf
Hương Trà Pé Xjnk
 
PPTX
A night at the spa
Chris Love
 
PDF
How to create a mobile version of your website
Mahmoud Farrag
 
PPTX
Mobile gotcha
phegaro
 
KEY
Rich Internet Applications and Flex - 1
Vijay Kalangi
 
PDF
Angular mobile angular_u
Doris Chen
 
KEY
Beyond the Desktop: Sites and Apps for Phones and Tablets
Webvanta
 
PPTX
Getting Down & Dirty with Responsive Web Design
martinridgway
 
Transitioning Groupon to Node.js - EmpireJS 2014
Sean McCullough
 
Tech Thursdays: Building Products
Hayden Bleasel
 
Win j svsphonegap-damyan-petev-mihail-mateev
Mihail Mateev
 
Feature driven agile oriented web applications
Ram G Athreya
 
PSEWEB 2013 - Make it responsive - TERMINALFOUR
Terminalfour
 
Designing and Theming Drupal for Mobile Devices
David Lanier
 
Native vs hybrid approach Mobile App Development
Senthil Kumar Kaliathan
 
It is a sunny day
bcoder
 
Friday final test
bcoder
 
Neoito — NativeScript Best Coding Practices
Neoito
 
Design4Drupal Boston 2013 - Bumps in the Road to Responsive
Salem Ghoweri
 
React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
Kobkrit Viriyayudhakorn
 
l1-reactnativeintroduction-160816150540.pdf
Hương Trà Pé Xjnk
 
A night at the spa
Chris Love
 
How to create a mobile version of your website
Mahmoud Farrag
 
Mobile gotcha
phegaro
 
Rich Internet Applications and Flex - 1
Vijay Kalangi
 
Angular mobile angular_u
Doris Chen
 
Beyond the Desktop: Sites and Apps for Phones and Tablets
Webvanta
 
Getting Down & Dirty with Responsive Web Design
martinridgway
 
Ad

More from FITC (20)

PPTX
Cut it up
FITC
 
PDF
Designing for Digital Health
FITC
 
PDF
Profiling JavaScript Performance
FITC
 
PPTX
Surviving Your Tech Stack
FITC
 
PDF
How to Pitch Your First AR Project
FITC
 
PDF
Start by Understanding the Problem, Not by Delivering the Answer
FITC
 
PDF
Cocaine to Carrots: The Art of Telling Someone Else’s Story
FITC
 
PDF
Everyday Innovation
FITC
 
PDF
HyperLight Websites
FITC
 
PDF
Everything is Terrifying
FITC
 
PDF
Post-Earth Visions: Designing for Space and the Future Human
FITC
 
PDF
The Rise of the Creative Social Influencer (and How to Become One)
FITC
 
PDF
East of the Rockies: Developing an AR Game
FITC
 
PDF
Creating a Proactive Healthcare System
FITC
 
PDF
World Transformation: The Secret Agenda of Product Design
FITC
 
PDF
The Power of Now
FITC
 
PDF
High Performance PWAs
FITC
 
PDF
Rise of the JAMstack
FITC
 
PDF
From Closed to Open: A Journey of Self Discovery
FITC
 
PDF
Projects Ain’t Nobody Got Time For
FITC
 
Cut it up
FITC
 
Designing for Digital Health
FITC
 
Profiling JavaScript Performance
FITC
 
Surviving Your Tech Stack
FITC
 
How to Pitch Your First AR Project
FITC
 
Start by Understanding the Problem, Not by Delivering the Answer
FITC
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
FITC
 
Everyday Innovation
FITC
 
HyperLight Websites
FITC
 
Everything is Terrifying
FITC
 
Post-Earth Visions: Designing for Space and the Future Human
FITC
 
The Rise of the Creative Social Influencer (and How to Become One)
FITC
 
East of the Rockies: Developing an AR Game
FITC
 
Creating a Proactive Healthcare System
FITC
 
World Transformation: The Secret Agenda of Product Design
FITC
 
The Power of Now
FITC
 
High Performance PWAs
FITC
 
Rise of the JAMstack
FITC
 
From Closed to Open: A Journey of Self Discovery
FITC
 
Projects Ain’t Nobody Got Time For
FITC
 

Recently uploaded (20)

PPTX
sajflsajfljsdfljslfjslfsdfas;fdsfksadfjlsdflkjslgfs;lfjlsajfl;sajfasfd.pptx
theknightme
 
PPTX
ONLINE BIRTH CERTIFICATE APPLICATION SYSYTEM PPT.pptx
ShyamasreeDutta
 
PPTX
法国巴黎第二大学本科毕业证{Paris 2学费发票Paris 2成绩单}办理方法
Taqyea
 
PPT
Computer Securityyyyyyyy - Chapter 2.ppt
SolomonSB
 
PPTX
一比一原版(SUNY-Albany毕业证)纽约州立大学奥尔巴尼分校毕业证如何办理
Taqyea
 
PPTX
Presentation3gsgsgsgsdfgadgsfgfgsfgagsfgsfgzfdgsdgs.pptx
SUB03
 
DOCX
Custom vs. Off-the-Shelf Banking Software
KristenCarter35
 
PPTX
Lec15_Mutability Immutability-converted.pptx
khanjahanzaib1
 
PDF
The-Hidden-Dangers-of-Skipping-Penetration-Testing.pdf.pdf
naksh4thra
 
PPTX
04 Output 1 Instruments & Tools (3).pptx
GEDYIONGebre
 
PPTX
一比一原版(LaTech毕业证)路易斯安那理工大学毕业证如何办理
Taqyea
 
PDF
𝐁𝐔𝐊𝐓𝐈 𝐊𝐄𝐌𝐄𝐍𝐀𝐍𝐆𝐀𝐍 𝐊𝐈𝐏𝐄𝐑𝟒𝐃 𝐇𝐀𝐑𝐈 𝐈𝐍𝐈 𝟐𝟎𝟐𝟓
hokimamad0
 
PPTX
L1A Season 1 Guide made by A hegy Eng Grammar fixed
toszolder91
 
PDF
Azure_DevOps introduction for CI/CD and Agile
henrymails
 
PPTX
PM200.pptxghjgfhjghjghjghjghjghjghjghjghjghj
breadpaan921
 
PPTX
Orchestrating things in Angular application
Peter Abraham
 
PDF
Build Fast, Scale Faster: Milvus vs. Zilliz Cloud for Production-Ready AI
Zilliz
 
PPTX
Optimization_Techniques_ML_Presentation.pptx
farispalayi
 
PPT
Agilent Optoelectronic Solutions for Mobile Application
andreashenniger2
 
PPT
introductio to computers by arthur janry
RamananMuthukrishnan
 
sajflsajfljsdfljslfjslfsdfas;fdsfksadfjlsdflkjslgfs;lfjlsajfl;sajfasfd.pptx
theknightme
 
ONLINE BIRTH CERTIFICATE APPLICATION SYSYTEM PPT.pptx
ShyamasreeDutta
 
法国巴黎第二大学本科毕业证{Paris 2学费发票Paris 2成绩单}办理方法
Taqyea
 
Computer Securityyyyyyyy - Chapter 2.ppt
SolomonSB
 
一比一原版(SUNY-Albany毕业证)纽约州立大学奥尔巴尼分校毕业证如何办理
Taqyea
 
Presentation3gsgsgsgsdfgadgsfgfgsfgagsfgsfgzfdgsdgs.pptx
SUB03
 
Custom vs. Off-the-Shelf Banking Software
KristenCarter35
 
Lec15_Mutability Immutability-converted.pptx
khanjahanzaib1
 
The-Hidden-Dangers-of-Skipping-Penetration-Testing.pdf.pdf
naksh4thra
 
04 Output 1 Instruments & Tools (3).pptx
GEDYIONGebre
 
一比一原版(LaTech毕业证)路易斯安那理工大学毕业证如何办理
Taqyea
 
𝐁𝐔𝐊𝐓𝐈 𝐊𝐄𝐌𝐄𝐍𝐀𝐍𝐆𝐀𝐍 𝐊𝐈𝐏𝐄𝐑𝟒𝐃 𝐇𝐀𝐑𝐈 𝐈𝐍𝐈 𝟐𝟎𝟐𝟓
hokimamad0
 
L1A Season 1 Guide made by A hegy Eng Grammar fixed
toszolder91
 
Azure_DevOps introduction for CI/CD and Agile
henrymails
 
PM200.pptxghjgfhjghjghjghjghjghjghjghjghjghj
breadpaan921
 
Orchestrating things in Angular application
Peter Abraham
 
Build Fast, Scale Faster: Milvus vs. Zilliz Cloud for Production-Ready AI
Zilliz
 
Optimization_Techniques_ML_Presentation.pptx
farispalayi
 
Agilent Optoelectronic Solutions for Mobile Application
andreashenniger2
 
introductio to computers by arthur janry
RamananMuthukrishnan
 

Creating a Comprehensive Social Media App Using Ionic and Phone Gap

  • 1. Nick Van Weerdenburg | CEO, Rangle.io Andrey Feldman | VP Product, Sprout Building a Social App with Ionic & PhoneGap
  • 3. Rangle.io • Founded 2013, Toronto-based • North American JavaScript consultancy • Focused on AngularJS, PhoneGap, Ionic, Node and Mobile
  • 4. Sprout • Canadian Startup, Founded 2012 • Helping co-workers get healthy together • Use LAMP/Redis for Web and PhoneGap, Angular & Ionic for Mobile
  • 5. What does Sprout do? A lot…
  • 6. Company Social Health & Wellness Feed
  • 9. Sprout Mobile - One Year Ago • Optimized HTML5 site • Poor user experience • Mismatch with user’s natural mobile usage goals • Poor app performance due to the use of traditional web solutions (server-side, jQuery) • High operations and maintenance costs
  • 10. –Bo Jackson “Set your goals high, and don't stop till you get there.”
  • 11. Business and Technical Goals • An amazing user experience • Speed to market • Ease of maintenance • Support of multiple mobile platforms • Good performance on older phones
  • 13. • Build a new team • Hire contractors (direct or via agency) • Partner with consultancy to augment existing team Outsource or inhouse?
  • 15. • Strength in complementary areas • AngularJS expertise • Hybrid application (HTML5/CSS/JavaScript) mobile development expertise • Shared perspective and focus on UX • Handoff considerations
  • 16. Picking a Technology Platform • Tradeoffs between native and hybrid options • Appropriate use-cases for Ionic and AngularJS • Older Device Support (iOS 3, Android 2.3) • Support Mobile Web As Well as Published Apps
  • 22. Technical Challenges • Ionic focus on modern phones (iOS7+, Android 4.1+) • Large data-sets required large amounts of memory • Complex Keyboard interactions required custom work • CSS Is still challenging in large mobile apps! • Achieving native-like fluidity • Profiling tools on older Android devices
  • 24. Technical Lessons • Build with Ionic’s modern principles, optimize as needed • DOM manipulations on large data sets and structures with JavaScript are very costly • Be wary of CSS styles that cause screen reflow or repaint • Learn your mobile profiling tools- JS, CSS, and DOM • It can be hard to identify if issues are with app or API • REST APIs are always more work than expected
  • 25. Infinite Scroll Challenges • Supporting older Android Phones (Nexus) • Keeping it fast and smooth
  • 26. Types of Slow • Waiting at bottom • Occasional pauses • Slow scrolling
  • 27. Avoiding the Slow • a fetch queue • reducing the cost of rendering • collection-repeat? • removing Angular digest cycle activity
  • 28. Doing it Without Angular • Use an asynchronous rendering queue • RAW DOM insertion • Batching insertion • requestAnimationFrame() • Skinny directive to encapsulate • Downside: a lot more work than using Angular
  • 29. Weight of Accumulated DOM • faster scrolling = bigger DOM • bigger DOM = slower scrolling • Solution: removing hidden DOM elements (kudos to LinkedIn) • Solution: overflow scrolling vs. ion-scroll • Solution: comprehensive profiling of JS, CSS and DOM
  • 30. Love Your CSS Parse HTML To Construct The DOM Tree Render Tree Construction Layout of The Render Tree Painting The Render Tree http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
  • 31. Smooth, high frame rates drive user engagement and can affect how much users interact with your website or app 60 fps
  • 32. 16ms per Frame Each frame the browser will: • Evaluate some JavaScript • Re-calculate style for the elements • Re-calculate layout (if styles are modified by JavaScript) • Draw a subset of the page to various layers • Then it will use the GPU to composite these layers to the screen
  • 33. Reflow (or Relayout) Occurs when… There are changes to: • document content • structure • element position
  • 34. Styles That Affect Layout height margin border-width top font-size text-align front-weight left line-height right white-space min-height width padding display border position float overflow-y overflow font-family vertical-align clear bottom
  • 35. Styles That Affect Paint color visibility text-decoration background-position outline-color outline-width background-size border-style background background-image background-repeat outline border-radius box-shadow
  • 36. Is There Hope for Animation?
  • 37. Lots of Options! Position Scale Rotation Skew Matrix Opacity transform : translate(npx, npx); transform: scale(n); transform: rotate(ndeg); transform: skew(X|Y)(ndeg); transform: matrix(3d)(…); opacity: 0…1;
  • 39. • Design is ongoing through the entire project • Collaborate early and identify team roles • Don’t underestimate the REST API effort • Document the API well • Make sure the API reflects the to-be API goal • Write separate tests for the API Process Lessons
  • 41. When to Use Ionic and Angular • Use them for data-driven applications with a REST API • Limited animations • User base that is largely using modern phones. • Social applications that have some interaction and are information-consuming rather than information-creation tools, are an excellent candidate.
  • 42. When Not to Use Ionic and Angular • Apps running heavy animation (such as in games) • Apps that require extremely fast performance on older phones (Android is particularly problematic in this respect).
  • 43. Build your app first for modern phones • You can get good performance on a wide variety of devices, including on older phones, and even acceptable performance on quite old phones. • Optimize for older phones after building for modern phones.
  • 44. Save time and money • Write your app once and deploy it on multiple platforms • The flexibility and focus enabled by a single codebase easily compensates for any minor technical sacrifice in performance
  • 45. Thank You Nick Van Weerdenburg | CEO, Rangle.io Andrey Feldman | VP Product, Sprout [email protected] @Rangleio [email protected] @SproutAtWork To download the new case study: http://go.rangle.io/sprout