The most up-to-date book to learn Ember.js

Trusted by: Toptal Firebase AirPair Nathan Barry
Rock & Roll with Ember.js

Build ambitious apps with confidence

Ember.js is a kick-ass framework for building web applications. It's the only tool you need (on the client-side) to craft your idea into a working wonder. However, its strong opinions and heavy reliance of “convention over configuration” can give developers who are new to the framework a hard time figuring out how Ember wants them to do things.

This book helps to overcome that initial frustration, and help you grok Ember a lot faster, by pinpointing the core concepts and explaining them in detail. Once you understand them you are on your way to taming and mastering Ember.js. So don't fear the learning curve.

This is a really great book. I think it will be very helpful to many people. I’m definitely going to recommend it to beginners.

Taras Mankowski
— Taras Mankowski EmberSherpa

The book guides you through the steps of building a real application so that you can see how the concepts are applied in practice. You'll learn about the building blocks of Ember one by one, in a way that crushes the steep learning curve. Knowledge is dripped in slowly, chapter by chapter, to prevent you from drowning in a sea of novel information. By improving an existing and working application, you will learn more quickly and new knowledge will sink in deeper.

Already convinced? Skip to the packages.

Once upon a time...

It all started in September 2013. Having just returned from the first European Ember.js conference, my enthusiasm went through the roof. I wanted to spread the word, for people to realize how beautiful Ember is, for them to know that Ember.js is not that hard to learn. It's just a matter of having the core concepts internalized.

So without proper equipment (and after a few episodes, with a ~$80 mic) I started producing screencasts, a series in which a simple application is developed step-by-step. I sent the first few to my subscribers and kept producing them. And people seemed to have liked them.

Great episode! Pace and depth was perfect. Thanks for such a great webcast series!

Curtis Wallen
— Curtis Wallen

I really appreciate the effort you want to put up. Just wanted to thank you for this and let you know that your video series rock!

Antonio Antillon
— Antonio Antillon

Once the screencast series was finished, I switched to blog posts and lengthier articles, and in 2014 I committed to posting something of value each week. Then, after a long labor of (mostly) love, I published the 1st edition of the book in Feburary 2015, that used the then stable Ember version, 1.10.

I was not done, though. As Ember made progress in a neck breaking pace, I kept the book up-to-date with the actual stable version of the framework, and adding material that covered the new features.

Buy once, get all updates for free

The first edition of this book followed Ember's journey to its 2.0 release. As Ember gracefully shedded old syntaxes, the book's content was updated not to use those syntaxes, either. When a new feature appeared, I added a section about it, trying to find a practical example for it in the application.

Since Ember follows a 6-week release cycle, that meant frequent book updates, precisely 8 "minor book releases" in a little less than 7 months. These updates came free for all of my customers, no matter which package they chose. I aim to follow a similar path and update policy with Ember 2.x. The framework makes progress really fast but I'll keep in sync with the latest stable version of Ember and keep the content fresh. And free until at least the next major version.

I really like it! It is super difficult to find the right balance between pacing and detail and put it all together in an understandable form but you pulled it off.

Cory Forsyth
— Cory Forsyth Ember Consultant, 201 Created

Just wanted to say thanks for the ongoing updates of the book. Even after finishing the book, it’s becoming a great reference for the changes Ember is going through (even more so than the official docs).

Gabriel Rotbart
— Gabriel Rotbart

Table of Contents

  • Preface
    • My love affair with Ember.js
    • Acknowledgements
  • Introduction to Ember.js
    • Why Ember.js
    • Backstage - Dial M for Model
    • About this book
    • Is this book for you?
    • Ambitious goal for an ambitious framework
    • The application we are going to build
    • Errata
  • Ember CLI
    • Setting up Ember CLI
    • Creating our application
  • Templates and data bindings
    • The first template
    • Backstage - Handlebar's fail-softness
    • Adding assets to the build
  • Routing
    • What do we want to achieve?
    • New styles
    • Routes set up data
    • Backstage - A word about generated test files
    • Moving around with link-to
    • Using the model property
    • Showing a list of bands
    • Showing a list of songs
  • Nested routes
    • Defining the nested routes
    • Full route names
    • Stepping through a router transition
    • Backstage - Computed properties
    • Nested templates
  • Actions
    • Extracting model classes
    • Backstage - The class-level mutable attribute property
    • Capturing the event
    • Turning event into intent
  • Components
    • The idea behind components
    • Component specification
    • Defining the component's properties
    • Using the component
    • Displaying the rating with stars
    • Speaking to the outside world through actions
    • Closure actions
  • Controllers
    • Preventing the creation of bands without a name
    • Smooth UI flows
    • Going to the band page after it is created
    • Nudging the user to create the first song
    • Showing the text field when the call to action has been acted on
    • Creating new bands and songs by pressing return
    • Backstage - Where to handle actions?
  • Advanced routing
    • Route hooks
    • Route actions
    • Redirection
    • Redirecting before the model is known
    • Redirecting after the model is known
    • Backstage - Skipping model resolution
    • Resetting controller properties
    • Leaving routes and arriving at them
    • Setting descriptive page titles
    • Warning about losing data
  • Talking to a backend - with Ember Data
    • The concept behind Ember Data
    • The API
    • Model classes
    • Transforming the app to use Ember Data
    • Loading bands
    • Fetching a single band
    • Loading songs for a band
    • Creating a band
    • Updating a band's description
    • Updating song ratings
    • Backstage - Promises
  • Testing
    • Clarifying the vocabulary
    • Acceptance tests
    • To mock or not to mock?
    • Unit tests
    • Integration tests
    • Adding an acceptance test
    • Analyzing an Ember acceptance test
    • Making the first test pass
    • Safeguarding critical user scenarios
    • Creating a band
    • Creating a song
    • Writing your own test helpers
    • Registering a synchronous helper
    • Registering an async helper
    • Refactoring stubs
    • Integration tests in Ember
    • Unit tests in Ember
  • Sorting and searching with query parameters
    • Query parameters
    • Query parameters in Ember
    • Sorting the list of songs
    • Sorting an array of items
    • Backstage - Computed property macros
    • Changing the sorting criteria
    • Filtering songs by a search term
    • Adding a dash of query parameters
    • Using links instead of buttons
    • Taking a look at what we made
  • Loading and error routes
    • Loading routes
    • Backstage - Rendering the loading template is an overridable default
    • Error routes
  • Helpers
    • About helpers
    • Capitalizing each word of a name
    • Using it in templates, or elsewhere
  • Animations
    • Setting up liquid-fire
    • liquid-fire architecture
    • Transition map
    • Transition functions
    • Template helpers
    • Putting it all together
    • Debugging transitions
    • Animate moving between routes
    • Adding a custom animation
    • Animate a value change
  • Making an Ember addon
    • What is an Ember addon?
    • Developing the addon
    • Integrating our addon into our app
    • Adding a block form
    • Customizing the star-rating component's look and behavior
    • Publishing the addon
    • Using a published addon from the app
  • ES2015 - Writing modern JavaScript
    • Modernizing the app
    • Modules
    • Template strings
    • Short-hand method definitions
    • Replacing var (let & const)
    • Arrow functions
    • Destructuring
    • Other useful ES2015 features
    • Backstage - ember-watson
    • Computed property macros
  • Deployment
    • Surge
    • Heroku
    • ember-cli-deploy
  • Afterword
    • Your journey with Ember.js
  • Encore
    • ES2015 modules
    • Class and instance properties
    • Mixins
    • Concatenated properties
    • On the utility of explicit dependency definitions
    • The default component template
    • Fake synchronous tests
Balint Erdi

About me

Hello there, I'm Balint Erdi.

I have a long history of building web applications and have mostly been a back-end guy.

On a grey, chilly February day in 2013 that I’ll never forget (maybe it was January?) I got acquainted with Ember.js. Ember.js made that day bright and the ones that came after that. After learning the ropes I shifted gears and have been proselytizing for Ember since last summer.

I gave a beginner’s workshop at Eurucamp, and held presentations at Arrrrcamp, The Geek Gathering and EmberFest. I started an Ember.js mailing list, made an introductory screencast series and have been sending Ember content to my dear subscribers on a weekly basis. I have also written guest articles for Safari Books Online, Firebase and Toptal.

I guess you could say I’m pretty passionate about Ember.

Oh, and I love rock & roll, obviously.

Bonus: Exclusive hack.hands() deal

hack.hands() is your SOS button for live programming support, available 24/7. hack.hands() instantly connects developers with a network of expert programmers at the click of a button. Never get stuck, learn more and keep coding! If you buy any package, you will receive $25 to spend on their platform that you can use to get your Ember project unstuck.

Even though I have worked with Ember for the past 6 months, the book helped clarify a lot of things, especially new features and their deprecated counterparts. Such a great book, and looking forward to the second one!

David Tang
— David Tang Author of Ember Data in the Wild

There is almost nowhere to go to get a good grounding in Ember. In months of searching this is the best resource that exists... so much so I'm going to try to get a few copies sorted out for my team at work. Thanks Balint!

Andy Davison
— Andy Davison

Stairway to Heaven Package

The path to Ember.js bliss, this package contains all you need to take your Ember.js skills to the next level. It contains:

Stairway to Heaven Package

The Book

The book

18 chapters

This is what you absolutely need to get up & running with Ember.js. Comes in pdf, mobi and epub formats for your reading pleasure.

The Code

Access to the code

All of the source code

in the application so that you can check how the app looks & works at each step. Or tweak it to your liking.

The Screencasts


4 screencasts

They run around 10 minutes each and cover the following, advanced topics: Pods in Ember CLI, Animations, Authentication & Authorization, and ES2015 & computed macros.

Rock and Roll

Rock & More


$25 credit on the hack.hands() platform

60-day refund guarantee

This was a truly great series of screencasts. Very, very well done. Simple enough while not being simplistic.

Claude Précourt
— Claude Précourt

Nice work with these Ember tutorials. You're doing a really nice thing for the community.

Steven Kane
— Steven Kane
Need multiple copies for your team? Skip to the team licenses

Light my Fire Package

Take out the screencasts and you have this smaller package that will still ignite your Ember rocket. It contains:

Light My Fire Package

The Book

The book

18 chapters

This is what you absolutely need to get up & running with Ember.js. Comes in pdf, mobi and epub formats for your reading pleasure.

The Code

Access to the code

All of the source code

in the application so that you can check how the app looks & works at each step. Or tweak it to your liking.

Rock and Roll

Rock & More


$25 credit on the hack.hands() platform

60-day refund guarantee

Need multiple copies for your team? Skip to the team licenses

Smoke on the Water Package

Basic but still solid, as the name suggests. This package inclues the book and the hack.hands() deal. It contains:

Smoke on the Water Package

The Book

The book

18 chapters

This is what you absolutely need to get up & running with Ember.js. Comes in pdf, mobi and epub formats for your reading pleasure.

Rock and Roll

Rock & More


$25 credit on the hack.hands() platform

60-day refund guarantee

I’m REALLY enjoying the book and find it to be very thorough and informative. You’ve done a great job of answering questions I had about various concepts that were not detailed clearly elsewhere.

Bill White
— Bill White Data Visualizations at

It’s been an invaluable resource in learning Ember and one I would recommend to any developer wanting to get started with the framework.

Jonathan Rowley
— Jonathan Rowley
Need multiple copies for your team? Skip to the team licenses

Hmm, I’m not sure...

  • Is the book ready for Ember 2?

    Yes, it is! The app in the book runs Ember (and Ember Data) 2 and does not use any deprecated stuff.

  • Is this book for me?

    The book starts from the very basics (installing ember-cli, writing your first template, etc.) so if you completely get Ember, this book is probably not for you. If you are just starting out (or about to) or want to understand fundamental concepts in Ember, the book is definitely for you.

  • What if I don't like the book?

    I offer a 60-day moneyback guarantee. No strings attached, just send your purchase receipt (or email address) to [email protected] or answer to the welcome email that you received when you purchased.

  • Everything is changing so fast; won't the content be outdated by next week?

    As Ember.js moves towards 3.0, I will keep updating the content of the book so that it stays void of deprecation warnings and does not promote practices that are no longer considered idiomatic. In practical terms, this means I'll release a book update after each new stable Ember release, once about every six weeks.

  • I heard Ember is so hard. Will this book help me understand it?

    I think there are a handful of key concepts in Ember.js that you need to understand to master it (probably the main one among these is routing). Once you understand these, Ember is not that hard. The intention of the book is to introduce concepts by way of building an actual application, so you see them applied in practice right away. That also helps the learning process. I also encourage you to work through the book as you read it, since that makes things sink in even deeper. You have access to the code repository if you have purchased the middle- or high-tier package. If I failed to explain Ember for you, please send me your purchase receipt to [email protected] within 60 days of purchase and I’ll issue a refund.

  • Is the book DRM protected?

    No, it’s not. If you would like to share it with colleagues (or a class), please contact me at [email protected].

  • What if I buy the book-only package and later realize I want to switch to a higher package?

    No problem! Just send me your purchase receipt to [email protected], and I will upgrade you for the difference between the package prices.

  • I still have a question, how can I reach you?

    That's totally my fault, could you send a quick message to [email protected] with your question? Thank you.

60-day refund guarantee

Choose a Package

  • Smoke on the Water

    • The book with 18 chapters
    • Free book updates until 3.0
    • $25 credit for hack.hands()
    • 60-days money back guarantee
    • Rock & Roll!
  • Light my Fire

    • The book with 18 chapters
    • Free book updates until 3.0
    • Access to the code
    • $25 credit for hack.hands()
    • 60-days money back guarantee
    • Rock & Roll!
  • Stairway to Heaven

    • The book with 18 chapters
    • Free book updates until 3.0
    • Access to the code
    • 4 Screencasts
    • $25 credit for hack.hands()
    • 60-days money back guarantee
    • Rock & Roll!

This book is a fabulous, approachable, foray into Emberjs that makes the learning curve much less scary. I just wish it had been available sooner for students in my previous classes.

Matt Hale
— Matt Hale Assistant Professor at the University of Nebraska

I’ve gone through the first four chapters and I am already loving it.

Sergio Arbeo
— Sergio Arbeo EmberMadrid
Need multiple copies? The team license gives access to the above goodies and is good for a team of up to 20 people, for the price of 5.