This talk is about *Mobile Web Apps* performance
This presentation is about Mobile Web Apps performance. We know that the most important feature
of all application is the performance. We can have the best design and the most cool features, but
if it's slow, nobody will use it!
> a 1-second page slowdown could cost Amazon $1.6 billion in sales each year.
![Performance == UX](http://img.readitlater.com/i/www.webperformancetoday.com/wp-content/uploads/2012/03/Jakob-Nielsen-response-time-infographic/RS/w640.jpg)
![4G Speed](img/4g-speed.png)
[opensignal.com/reports/state-of-lte/usa-q1-2014/](http://opensignal.com/reports/state-of-lte/usa-q1-2014/)
![Mobile vs Desktop usage](img/mobile-vs-desktop.jpg)
## Agenda
Why micro-libs?
Pros and Cons of using micro-libs
Where to find great micro-libs?
Loading strategies
Micro-libraries
are small (4kb ~ 15kb)
are specific purpose focused
are loose coupled
are modular
are easy to understand
I said that they're small?!
> “Microlibraries are small sets of specific purpose functions that you can call”
- [Ciro Nunes](http://twitter.com/cironunes/)
## Where to find great micro-libs?
![MicroJS](img/microjs.png)
[microjs.com](http://microjs.com/)
![MoutJS](img/mout.png)
[moutjs.com](http://moutjs.com/)
### Protip: custom build
[![How to build your own jQuery](img/own-jquery.png)](https://github.com/jquery/jquery#how-to-build-your-own-jquery)
### Protip: custom build
[![Lodash custom builds](img/own-lodash.png)](http://lodash.com/custom-builds)
Micro-libs: The Cons
Using micro-libs we usally lose:
Big cross-browser support
Heavy unit tested code
Centralized docs and bug tracking
You may need to reinvent the wheel sometimes
As our application grows we'll probably end with a bunch of micro-libs that
combined would be the same of a large library.
> Our goal is show content for the user as soon as possible
## Eager loading
load everything at the first time
## Lazy loading
load just what you need and then request for the rest
## Loading on demand
load when the user ask for the functionality
## Over-eager loading
try to antecipate what the user will need and load
## Tools
![RequireJS Logo](img/requirejs.png)
![YepnopeJS Logo](img/yepnope-logo.png)
Should I drop that large library in favor of micro-libs?
## Some things to consider
- Do you need a large cross-browser support?
- Is your deadline too short?
- Are you afraid to leave your comfort zone?
If not you're good to go!
## Learn more
- [Pros and Cons of JavaScript Micro-Frameworks](addyosmani.com/blog/prosconsmicroframeworks/)
- [RequireJS Website](requirejs.org)
- [How to Build your own jQuery](https://github.com/jquery/jquery#how-to-build-your-own-jquery)