SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx
Asmae Rabhi
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
ydyuyu
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
ydyuyu
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Monica Sydney
 
PowerDirector Explination Process...pptx
PowerDirector Explination Process...pptxPowerDirector Explination Process...pptx
PowerDirector Explination Process...pptx
galaxypingy
 
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
gajnagarg
 
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi EscortsIndian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Monica Sydney
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
JOHNBEBONYAP1
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
pxcywzqs
 

Kürzlich hochgeladen (20)

75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
 
Microsoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftMicrosoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck Microsoft
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency Dallas
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
PowerDirector Explination Process...pptx
PowerDirector Explination Process...pptxPowerDirector Explination Process...pptx
PowerDirector Explination Process...pptx
 
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
 
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi EscortsIndian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
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
 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
 

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