SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
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
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;
• 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

Mais conteúdo relacionado

Mais procurados

The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012
Jan Jongboom
 
Refactoring Organizations - A Netflix Study (QCon NYC 2017)
Refactoring Organizations - A Netflix Study (QCon NYC 2017)Refactoring Organizations - A Netflix Study (QCon NYC 2017)
Refactoring Organizations - A Netflix Study (QCon NYC 2017)
Josh Evans
 

Mais procurados (20)

Embracing Failure - Fault Injection and Service Resilience at Netflix
Embracing Failure - Fault Injection and Service Resilience at NetflixEmbracing Failure - Fault Injection and Service Resilience at Netflix
Embracing Failure - Fault Injection and Service Resilience at Netflix
 
Patterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 appsPatterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 apps
 
Serverless Meetup - 12 gennaio 2017
Serverless Meetup - 12 gennaio 2017Serverless Meetup - 12 gennaio 2017
Serverless Meetup - 12 gennaio 2017
 
Alfresco Process Services (APS) and the Internet of Things
Alfresco Process Services (APS) and the Internet of ThingsAlfresco Process Services (APS) and the Internet of Things
Alfresco Process Services (APS) and the Internet of Things
 
The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012
 
Engineering Netflix Global Operations in the Cloud
Engineering Netflix Global Operations in the CloudEngineering Netflix Global Operations in the Cloud
Engineering Netflix Global Operations in the Cloud
 
Scaling Uber
Scaling UberScaling Uber
Scaling Uber
 
DevOps - A Gentle Introduction
DevOps - A Gentle IntroductionDevOps - A Gentle Introduction
DevOps - A Gentle Introduction
 
Immutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesImmutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine Images
 
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless SummitBuild a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
 
Refactoring Organizations - A Netflix Study (QCon NYC 2017)
Refactoring Organizations - A Netflix Study (QCon NYC 2017)Refactoring Organizations - A Netflix Study (QCon NYC 2017)
Refactoring Organizations - A Netflix Study (QCon NYC 2017)
 
Better java with design
Better java with designBetter java with design
Better java with design
 
Story Testing Approach for Enterprise Applications using Selenium Framework
Story Testing Approach for Enterprise Applications using Selenium FrameworkStory Testing Approach for Enterprise Applications using Selenium Framework
Story Testing Approach for Enterprise Applications using Selenium Framework
 
Deployment Nirvana
Deployment NirvanaDeployment Nirvana
Deployment Nirvana
 
AD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension LibraryAD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension Library
 
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
 
#NetflixEverywhere Global Architecture
#NetflixEverywhere Global Architecture#NetflixEverywhere Global Architecture
#NetflixEverywhere Global Architecture
 
Getting started with mobile application development
Getting started with mobile application developmentGetting started with mobile application development
Getting started with mobile application development
 
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
 
Concurrency at Scale: Evolution to Micro-Services
Concurrency at Scale:  Evolution to Micro-ServicesConcurrency at Scale:  Evolution to Micro-Services
Concurrency at Scale: Evolution to Micro-Services
 

Destaque

Social Networking Site in JAVA
Social Networking Site in JAVASocial Networking Site in JAVA
Social Networking Site in JAVA
PAS Softech Pvt. Ltd.
 
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig FitzpatrickPageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
FITC
 
Functional Web Development
Functional Web DevelopmentFunctional Web Development
Functional Web Development
FITC
 

Destaque (20)

Java, Communities, and Social Networking
Java, Communities, and Social NetworkingJava, Communities, and Social Networking
Java, Communities, and Social Networking
 
Social networking site
Social networking siteSocial networking site
Social networking site
 
Social Networking Site in JAVA
Social Networking Site in JAVASocial Networking Site in JAVA
Social Networking Site in JAVA
 
social networking site
social networking sitesocial networking site
social networking site
 
“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems
“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems
“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems
 
Building Tools for the Next Web
Building Tools for the Next WebBuilding Tools for the Next Web
Building Tools for the Next Web
 
21st Century Crystal Ball
21st Century Crystal Ball21st Century Crystal Ball
21st Century Crystal Ball
 
Squishy pixels
Squishy pixelsSquishy pixels
Squishy pixels
 
My Type of Life
My Type of LifeMy Type of Life
My Type of Life
 
Improving Game Performance in the Browser
Improving Game Performance in the BrowserImproving Game Performance in the Browser
Improving Game Performance in the Browser
 
A New Era for Animators
A New Era for AnimatorsA New Era for Animators
A New Era for Animators
 
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig FitzpatrickPageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
 
Functional Web Development
Functional Web DevelopmentFunctional Web Development
Functional Web Development
 
The Little Shop of TDD Horrors
The Little Shop of TDD HorrorsThe Little Shop of TDD Horrors
The Little Shop of TDD Horrors
 
! or ? with Chip Kidd
! or ? with Chip Kidd! or ? with Chip Kidd
! or ? with Chip Kidd
 
Just Make Stuff!
Just Make Stuff!Just Make Stuff!
Just Make Stuff!
 
The Giddiest Kipper
The Giddiest KipperThe Giddiest Kipper
The Giddiest Kipper
 
Adapt or Die
Adapt or DieAdapt or Die
Adapt or Die
 
I HATE YOUR GAME with Bob Heubel
I HATE YOUR GAME with Bob HeubelI HATE YOUR GAME with Bob Heubel
I HATE YOUR GAME with Bob Heubel
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
 

Semelhante a Creating a Comprehensive Social Media App Using Ionic and Phone Gap

Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014
Sean McCullough
 
Win j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateevWin j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateev
Mihail Mateev
 
Feature driven agile oriented web applications
Feature driven agile oriented web applicationsFeature driven agile oriented web applications
Feature driven agile oriented web applications
Ram G Athreya
 
Design4Drupal Boston 2013 - Bumps in the Road to Responsive
Design4Drupal Boston 2013 - Bumps in the Road to ResponsiveDesign4Drupal Boston 2013 - Bumps in the Road to Responsive
Design4Drupal Boston 2013 - Bumps in the Road to Responsive
Salem Ghoweri
 
l1-reactnativeintroduction-160816150540.pdf
l1-reactnativeintroduction-160816150540.pdfl1-reactnativeintroduction-160816150540.pdf
l1-reactnativeintroduction-160816150540.pdf
Hương Trà Pé Xjnk
 
Rich Internet Applications and Flex - 1
Rich Internet Applications and Flex - 1Rich Internet Applications and Flex - 1
Rich Internet Applications and Flex - 1
Vijay Kalangi
 
Getting Down & Dirty with Responsive Web Design
Getting Down & Dirty with Responsive Web DesignGetting Down & Dirty with Responsive Web Design
Getting Down & Dirty with Responsive Web Design
martinridgway
 

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

Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building Products
 
Win j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateevWin j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateev
 
Feature driven agile oriented web applications
Feature driven agile oriented web applicationsFeature driven agile oriented web applications
Feature driven agile oriented web applications
 
PSEWEB 2013 - Make it responsive - TERMINALFOUR
PSEWEB 2013 - Make it responsive - TERMINALFOURPSEWEB 2013 - Make it responsive - TERMINALFOUR
PSEWEB 2013 - Make it responsive - TERMINALFOUR
 
Designing and Theming Drupal for Mobile Devices
Designing and Theming Drupal for Mobile DevicesDesigning and Theming Drupal for Mobile Devices
Designing and Theming Drupal for Mobile Devices
 
Native vs hybrid approach Mobile App Development
Native vs hybrid approach Mobile App DevelopmentNative vs hybrid approach Mobile App Development
Native vs hybrid approach Mobile App Development
 
It is a sunny day
It is a sunny dayIt is a sunny day
It is a sunny day
 
Friday final test
Friday final testFriday final test
Friday final test
 
Neoito — NativeScript Best Coding Practices
Neoito — NativeScript Best Coding PracticesNeoito — NativeScript Best Coding Practices
Neoito — NativeScript Best Coding Practices
 
Design4Drupal Boston 2013 - Bumps in the Road to Responsive
Design4Drupal Boston 2013 - Bumps in the Road to ResponsiveDesign4Drupal Boston 2013 - Bumps in the Road to Responsive
Design4Drupal Boston 2013 - Bumps in the Road to Responsive
 
React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
React Native Introduction: Making Real iOS and Android Mobile App By JavaScriptReact Native Introduction: Making Real iOS and Android Mobile App By JavaScript
React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
 
l1-reactnativeintroduction-160816150540.pdf
l1-reactnativeintroduction-160816150540.pdfl1-reactnativeintroduction-160816150540.pdf
l1-reactnativeintroduction-160816150540.pdf
 
A night at the spa
A night at the spaA night at the spa
A night at the spa
 
How to create a mobile version of your website
How to create a mobile version of your websiteHow to create a mobile version of your website
How to create a mobile version of your website
 
Mobile gotcha
Mobile gotchaMobile gotcha
Mobile gotcha
 
Rich Internet Applications and Flex - 1
Rich Internet Applications and Flex - 1Rich Internet Applications and Flex - 1
Rich Internet Applications and Flex - 1
 
Angular mobile angular_u
Angular mobile angular_uAngular mobile angular_u
Angular mobile angular_u
 
Beyond the Desktop: Sites and Apps for Phones and Tablets
Beyond the Desktop: Sites and Apps for Phones and TabletsBeyond the Desktop: Sites and Apps for Phones and Tablets
Beyond the Desktop: Sites and Apps for Phones and Tablets
 
Getting Down & Dirty with Responsive Web Design
Getting Down & Dirty with Responsive Web DesignGetting Down & Dirty with Responsive Web Design
Getting Down & Dirty with Responsive Web Design
 

Mais de FITC

Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital Health
FITC
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
FITC
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
FITC
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is Terrifying
FITC
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future Human
FITC
 

Mais de FITC (20)

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

Último

Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
@Chandigarh #call #Girls 9053900678 @Call #Girls in @Punjab 9053900678
 

Último (20)

Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
Al Barsha Night Partner +0567686026 Call Girls Dubai
Al Barsha Night Partner +0567686026 Call Girls  DubaiAl Barsha Night Partner +0567686026 Call Girls  Dubai
Al Barsha Night Partner +0567686026 Call Girls Dubai
 
Dubai Call Girls Milky O525547819 Call Girls Dubai Soft Dating
Dubai Call Girls Milky O525547819 Call Girls Dubai Soft DatingDubai Call Girls Milky O525547819 Call Girls Dubai Soft Dating
Dubai Call Girls Milky O525547819 Call Girls Dubai Soft Dating
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
 
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
 
VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...
VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...
VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
Enjoy Night⚡Call Girls Samalka Delhi >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Samalka Delhi >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Samalka Delhi >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Samalka Delhi >༒8448380779 Escort Service
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
 
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
 
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 

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
  • 19.
  • 20.
  • 21.
  • 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;
  • 38.
  • 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 nick@Rangle.io @Rangleio a.feldman@sproutatwork.com @SproutAtWork To download the new case study: http://go.rangle.io/sprout