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

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 book -- like Ember itself -- is for teams and individuals who want the productivity boost that comes from shared community solutions. Instead of reinventing the wheel, use Ember. Instead of scouring the web for advice on how to use Ember, read this book.

Edward Faulkner
— Edward Faulkner Ember Core Team, Lead Developer at Cardstack

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.

Are you a student? Check out my student discount.

I make new team members complete your book before starting on the project. Just thought you would like to know.

Kelly Selden
— Kelly Selden Ember CLI Core Team, Sr. Software Engineer at CrowdStrike

Few programming books have left me with the comprehensive "big picture" understanding that this one did. It completely made me fall in love with #EmberJS, and introduced me to an incredible community of developers and friends.

Julia Donaldson
— Julia Donaldson Front End Developer at Stone Circle Design

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.

For a week now, Rock and Roll with Ember.JS has been my cuddle buddy. Every day I find a cozy spot, pour tea, and dive deep into Ember. Reading isn’t my preferred learning style; however, this book has an amazing hands-on section! It allows you to try your hand at each concept instead of just reading about it. I’m almost done with the lessons and I am happy to say I’ve learned a ton!

Lenora Porter
— Lenora Porter, Sr. Product Designer at SalesForce

Read through RARWE 3 this weekend. Really great stuff and quite funny. You're a great writer.

Ben Borowski
— Ben Borowski, Founder of OkiDoki Digital

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.

Version 2 of the book, that is running on Ember 2, was published about 6 months later and I've been updating the book for every minor version ever since.

Buy once, get all minor 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 18 "minor book releases" in 26 months. These updates came free for all of my customers, no matter which package they chose. I'll follow the same policy during the road to Ember 4 and so I'll keep in sync with the latest stable version of Ember 3 and keep the content fresh.

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.

Gabriel Rotbar
— Gabriel Rotbart

Table of Contents

Click on chapter names to see a detailed ToC.

  • My love affair with Ember.js
  • Acknowledgements
  • Why Ember.js
  • About this book
  • Is this book for you?
  • Ambitious goal for an ambitious framework
  • The application we are going to build
  • Errata
  • Setting up Ember CLI
  • Creating our application
  • Taking a look at a new project
  • The first template
  • Adding assets to the build
  • What do we want to achieve?
  • Routes set up data
  • Moving around with link-to
  • Using the model property
  • Showing a list of bands
  • Showing a list of songs
  • Defining the nested routes
  • Full route names
  • Stepping through a router transition
  • Nested templates
  • Creating bands (with the cunning use of actions)
  • Controllers have been with us all along
  • Extracting model classes
  • Preventing creating bands without a name
  • Create new bands and songs by submitting the form
  • Create songs
  • Smoother UI flow
  • The idea behind components
  • Component specification
  • Implementing the component
  • Invoking the component
  • Displaying the rating with stars
  • The component's block form
  • Speaking to the outside world through actions
  • Dumbing down the component - in a good way
  • Adding custom behavior - where it belongs
  • Component invocations as function calls
  • Route hooks
  • Route actions
  • Redirecting before the model is known
  • Redirecting after the model is known
  • Skipping model resolution
  • Resetting controller properties
  • Leaving routes and arriving at them
  • Setting descriptive page titles
  • Warning about losing 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
  • Clarifying the vocabulary
  • Acceptance tests
  • To mock or not to mock?
  • Integration tests
  • Unit tests
  • Writing acceptance tests
  • Making the first test pass
  • Safeguarding critical user scenarios
  • Creating a band
  • Creating a song
  • Using data attributes for designating elements in testing
  • Using more descriptive (and shorter) assertions
  • Writing a custom test helper
  • Tips for faster debugging
  • pauseTest and resumeTest
  • Logging out the response of the Mirage server
  • Writing an integration test
  • Writing unit tests
  • Tests for singleton objects
  • Tests for non-singleton objects
  • What are query parameters?
  • Query parameters in Ember
  • Sorting the list of songs
  • Sorting an array of items
  • Changing the sorting criteria
  • The handy mut
  • 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 subroutes
  • Loading substates coupled with the power of nested routes
  • Error subroutes
  • About helpers
  • Capitalizing each word of a name
  • Using it in templates, or elsewhere
  • A word of caution
  • Signing up a user
  • Logging in a user
  • Authenticating against a backend
  • Authentication on the backend
  • Creating an authenticator
  • Authorizing outgoing requests
  • Showing who the logged in user is
  • Logging out
  • Restoring the session
  • Redirecting from protected pages
  • Redirecting from login and sign-up pages when already logged in
  • Fixing previously passing tests
  • Our companion: ember-cp-validations
  • Showing errors on the sign-up form
  • Defining the validations
  • Showing the errors at the right moment
  • Showing errors on the login form
  • Writing a custom validator
  • Displaying a server-side validation error
  • Installing Percy and taking the first screenshot
  • Setting environment variables
  • Detecting and fixing visual diffs
  • Approving visual diffs
  • The visual review process
  • Surge
  • Heroku
  • ember-cli-deploy
  • Deploying to S3
  • Your journey with Ember.js
  • Creating your application with Yarn
  • ES2015 modules
  • Class and instance properties
  • EmberObject accessors
  • Presentational vs. Container components
  • Mixins
  • Concatenated properties
  • On the utility of explicit dependency definitions
  • The default component template
  • async functions

Many thanks for your book, I am just diving into ember for my new job, and your book is an amazing reference, I am learning a lot, and as a junior, I truly appreciate your great pedagogic skills.

Mathieu Poterie
— Mathieu Poterie Engineer at PeopleDoc

In months of searching this is the best Ember.js 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
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 that summer.

I gave workshops at EmberConf and Eurucamp, and presented at EmberConf, EmberFest, AgentConf and Arrrrcamp. 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, AirPair, Firebase and Toptal.

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

Oh, and I love rock & roll, obviously.

Bonus 1: The EmberMap deal

EmberMap is the maker of outstanding video series on a whole range of different Ember topics including contextual components, data loading, D3 charts and a whole lot more. I'm a huge fan (and subscriber) of the videos Sam and Ryan create. Buying any package gets you a 30-day free subscription to EmberMap (a $29 value)

Companies using the book

Basic RiffsPackage

Basic but solid, as the name suggests. It contains:

The Ember.js 3 book

17 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.

You'll also get the latest version of the Rock and Roll with Ember.js 2 book (running in 2.18), just in case.

Free updates

Minor updates every 6 weeks

As Ember releases a new minor version about every 6 weeks, so do I. Pay once for the book, get all the updates for free until Ember 4.0.


Deals that rock your world

A 30-day free EmberMap subscription, a 30-day extended trial period for Percy and a discounted "Unlimited Plus Projects" Surge plan. A $29 + $75 + $6/mo value.

A pair of stickers

The official red RaRwE book stickers.

To show your support or just to pimp up your notebook.

A curated Spotify playlist

The best rock songs. Great to code along with the book.

What else could be more fun than listening to these hits while learning a great framework?

Full refund guarantee

60-day money-back guarantee

Comes with no strings attached. Get it? No strings 🎸 attached. Sorry.

I have to say Balint has done an outstanding job with his ebook. The product and his most excellent support and follow-through (including regular updates to the content) have all felt seamless and caring from the customer’s end. A class act all around.

Bryan Lewis
— Bryan Lewis Founder, Adminja

We at Foot Locker Europe find your book hugely valuable and use it to ramp-up new hires.

Dennis Mende
— Dennis Mende Sr. Manager Software Development, Foot Locker Europe
Need multiple copies for your team? Skip to the team licenses
Are you a student? I offer a student discount

Bonus 2: The Percy deal

Percy is a top-notch visual testing service, making sure that your site doesn't break visually when you refactor code/CSS or release new features. Buying any package gives you an extended, 30-day free trial to Percy (a >$79 value)

The Encore book

The Encore book covers topics that take you from a well-grounded Ember developer to a rock star. Rock star? Gosh, did I really say rock star? It'd be really fitting here but it's such a non-sense.

I meant someone who not only knows the basics but also masters deeper Ember subjects (click on chapter names to see a detailed ToC):

  • Main routes
  • Sorting and searching songs
  • Editing a band's description
  • Getting ready for Encore
  • Writing tests
  • Converting the model to a list of songs
  • Show newly created songs
  • Paginating the list of songs
  • Sorting the songs on the server-side
  • Moving search to the back-end
  • Converting a simple action to a task
  • Using a task modifier
  • Keeping our focus
  • Introducing musicians
  • Showing musician details
  • Assigning bands to a musician
  • Extracting a UI component
  • Editing musicians
  • Named arguments
  • Extacting and transforming model properties
  • Serializing attributes
  • Using synchronous relationships
  • Loading relationships explicitly
  • Moving the editing of bands to a dedicated route
  • Showing concerts for a band
  • Showing nearby concerts (Stage 1)
  • Showing nearby concerts (Stage 2)
  • Adding user settings
  • The PWA Audit Tool
  • Service Workres to the rescue
  • The family of ember-service-worker add-ons
  • Caching assets
  • Caching API responses
  • Adding a web manifest
  • Adding an app shell
  • Indicating offline status

Jimi HendrixPackage

If you want to go beyond the basics of Ember and learn about more complex Ember topics, this package is for you.

It contains everything that Basic Riffs has and above that:

The "Encore" book - the sequel to RaRwE

5 extra chapters

If you want to go beyond strumming simple chords this is the book you want. Learn more about it here.

Source code access

One chapter, one commit

Access to the source code of both the RaRwE and the Encore book repositories. The end of each chapter is assigned the aptly named tag, so you can quicky jump to a chapter, check out the code or even tweak it to your liking (and to improve your learning).

I thoroughly enjoyed the read and coding along with you as you introduced, built upon and refactored the code. It follows the way most people write their code, myself included, and I appreciated that thoughtful approach to your material. … I"ll conclude by saying this: your book immediately gave me the confidence to go full bore into our MVP using Ember, and for that I am truly grateful.

Scott Robinet
— Scott Robinet President & Lead Architect at Voltaric Inc.

The book helped clarify a lot of things, especially new features and their deprecated counterparts. Such a great book, and looking forward to the next one!

David Tang
— David Tang Author of Ember Data in the Wild
Need multiple copies for your team? Skip to the team licenses
Are you a student? I offer a student discount

Bonus 3: The Surge deal

Surge is a dead-simple static hosting solution where you can deploy your Ember apps in the blink of an eye. When you buy any book package, you get the unlimited Plus projects Surge plan for $24/mo (normally priced at $30/month).

Hmm, I’m not sure...

  • Is the book ready for Ember 3?

    Yes, it is! The app in the book runs Ember (Ember CLI, Ember Data) 3 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.

  • Do you offer discounts to students?

    Yes! Please write me an email and tell me about your school. I'll then send you a discount code for the book.

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

    As Ember.js moves towards 4.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.

  • 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 reply 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 4.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.

  • How can I get an invoice for my purchase (and reclaim EU VAT)?

    After the purchase Gumroad will send you an email with a receipt that has a link to their invoice generator. There, you'll be able to fill out your company details and, if you're a EU company, reclaim the EU VAT. Read more about this in this FAQ article. or watch the video I recorded about it.

  • I get a "Sorry, this item is not available in your location" error when trying to buy the book. What should I do?

    This has happened extremely rarely (one single reported incident so far) but if it does happen to you, your best bet is to use a VPN and access the book's landing page that way. There are lots of stand-alone VPN apps and browser extensions that you can use.

  • What if I buy the Basic Riffs package and later realize I want to switch to Jimi Hendrix?

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

  • Is the book DRM protected?

    No, it’s not. If you would like to share it with a couple of colleagues, go ahead. If you like the book, I'd appreciate if you bought licenses individually. If you're at least five people, please buy a Team License.

  • 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

  • Basic Riffs

    • The book with 17 chapters
    • Free book updates until 4.0
    • 60-days money back guarantee
    • The EmberMap deal
    • The Percy deal
    • The Surge deal
    • Stickers
    • Official Spotify playlist
    • Rock & Roll!
  • Jimi Hendrix

    • The book with 17 chapters
    • Free book updates until 4.0
    • 60-days money back guarantee
    • The EmberMap deal
    • The Percy deal
    • The Surge deal
    • Stickers
    • Official Spotify playlist
    • Rock & Roll!
    • The Encore book
    • Access to source code

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 Engineer at DockYard

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.

The included EmberMap deal is also better suited for teams: it gives you access to their Small Team plan, for up to 5 users.