Browser Rendering Optimization

Need help getting started?


Course Resources

Download the Final Project

The News Aggregator App

This app uses the Hacker News API to display the day's top stories.

Here's a live, janky version and here's the repo that you'll be forking.

Additional Reading

Downloadable Materials

You can download Supplemental Materials, Lesson Videos and Transcripts from Downloadables (bottom right corner of the Classroom) or from the Dashboard (first option on the navigation bar on the left hand side).




The News Aggregator App - Turn an unusable app into a high performance, 60 frames per second experience. You'll be given a news aggregator app for mobile that uses the Hacker News API to display the day's top stories. The news aggregator has lots of performance issues. You will be able to demonstrate your understanding of performance by destroying all the jank and creating an experience that users will love.

Lesson 1 - The Critical Rendering Path

  • You'll play Jank Invaders to develop your eye for jank!
  • You'll learn how the browser turns HTML into pixels on the page
  • You'll learn how different CSS styles affect the rendering pipeline differently.

Lesson 2 - App Lifecycles

  • You'll learn how there are four distinct phases in an app's lifecycle: Response, Animation, Idle and Load (RAIL).
  • You'll learn how your frame budget changes depending on where the user is in RAIL.
  • You'll practice thinking through app workloads at different stages in RAIL.

Lesson 3 - Weapons of Jank Destruction

  • You'll learn how to make sense of the Timeline panel in Chrome DevTools.
  • You'll practice profiling a few different apps to find the source of jank.

Lesson 4 - JavaScript

  • You'll optimize JavaScript to hit 60fps during animations.
  • You'll move expensive JavaScript operations off the main thread and into Web Workers.
  • You'll debug a janky copy of a production quality app - the QR Snapper.

Lesson 5 - Styles

  • You'll learn how accessing the wrong CSS properties at inopportune moments can create loads of extra work for the browser.
  • You'll debug multiple instances of one of the nastiest performance problems - Forced Synchronous Layout.

Lesson 6 - Compositing and Painting

  • You'll practice profiling layer and paint performance with the paint profiler tool in the DevTools Timeline.
  • You'll manage and optimize layers to reduce the number of steps the browser needs to take to render each frame.
  • You'll demonstrate everything you've learned about performance as you de-jankify the News Aggregator App!


  • Thanks to Paul Lewis for being British and an awesome partner on this course.
  • Thanks to Taylor Gilkeson for some tight videography.
  • Thanks to Clark Downer for bouncing ideas around daily.
  • Thanks to Sarah Clark for keeping us honest at every stage from technical and pedagogical perspectives.
  • Thanks to all the early reviewers! Your feedback was insanely helpful. Shout out to John Mavroudis, Susan Smith and all the Udacity ambassadors especially.
  • Thanks to Lauren Castellano for keeping me on my toes during production.
  • And most of all, thanks to YOU for taking this course!

    - Cameron Pittman