Advanced Ember.js 3 training

Make your team more productive and incur less costs

With the strong conventions and shared best practices of Ember.js, developers can join a project and understand what‘s going on quite quickly. They still have to know these conventions well enough so that they can write code that follows said conventions.

Perhaps even more importantly, there's a huge difference between being able to understand someone else's cleanly written code and internalize the concepts of the framework well enough to write that kind of code. The kind that costs a lot less to change and maintain.

This training will give your team that productivity and code quality boost and unlock the leverage that Ember.js can yield when you know how to work with the framework.

(Already convinced you need the training? Email me to discuss the details.)


This training is for developers who have been working with Ember.js for a while (~8-12 months) and, having the basics in place, could benefit from learning advanced concepts they are likely to come across during their everyday work. The training covers Ember.js 3.

Course content

Length: 2 days (Skip over course details)


  • Add user management (a sign-up and a login form)
  • Implement an email/password solution (with ember-simple-auth)
  • Use 3rd party providers (with Torii)


  • Defining validations (with ember-cp-validations)
  • Showing validation errors in templates

Pagination, sorting and searching

  • Use a list of items as the model of the route
  • Use `store.query` for pagination by refreshing on page changes
  • Implement simple pagination controls
  • Customize the adapter
  • Add sorting
  • Define the refreshModel on query parameters to show the correct page of items (and keep the Back button working)
  • Search: how to keep state in sync and display the right messages to the user

Making async easy to work with

  • Introducing ember-concurrency (EC)
  • Replace async operations (async functions) with EC tasks
  • Simplify our search procedure

Advanced Ember Data

  • Load related records along the main resource
  • Build relationships (assign a record to a relationship)
  • Transforming data coming from the API
  • Customizing the serializer
  • Improving the UX for data loading scenarios
  • What does “getting” an async relationship do?
  • Synchronous relationships
  • Be cognizant about your data loading – it shouldn't "just work"
  • Cutting down on requests by including related resources
  • "Index stuffing" rarely changing data


  • Implementing cross-cutting concerns
  • As explicit management of inter-page state

Progressive Web Applications

  • What are they and how can they serve users
  • The app shell model
  • Service workers
  • Useful PWA Ember add-ons

Contextual components

  • An elegant way for customizing components
  • Customizing our forms

The flow of the training

The application we build is contained in a repository I give attendees access to before the training, with attached instructions about how to set it up. This is so that each of them can set up the app on their machine and no time is wasted with technical preparation and support during the training.

For each training module, I first give a short overview of the theory and then explain what we‘ll build. After that, attendees implement the feature (or features) for that module while I‘m helping them with any potential problems. As I strongly believe that we learn best by doing, we‘ll spend a lot less time on theory than practice.

All modules will have checkpoints so that attendees can jump straight there with their code and start implementing the next exercise without wasting any time.

So... how does the training actually happen?

I allow for some flexibility about the exact details of how the training happens, but there are a few things that I insist on:

  • The training happens in person, on site. The training is packed with exercises and being physically in the same room is the most effective way to help attendees and to make sure nobody gets left behind. The venue will probably be the offices of your company but if you don‘t have offices in the city the training takes place, it can be elsewhere, too. If, for some reason, you'd prefer the training to take place online, we should discuss the details.
  • Attendees should come prepared. By giving instructions and access to the repository prior to the first day of training, I want to ensure that we can get right into it and spend time learning Ember.js, not cloning repositories, installing npm packages or fixing OS issues. For this, I‘d kindly like to request the cooperation of attendees so that we can move together as a group.

About me

Balint Erdi
I‘ve been working with Ember.js since January 2013 as a developer and consultant and realized very soon I wanted to teach the ins and outs of the framework to other developers. Over the years I produced a ton of teaching material in the form of screencasts, blog posts and the Rock and Roll with Ember.js books.
I also gave presentations at various Ember- and JavaScript related conferences (including EmberConf ‘17) and held topic-specific workshops and extensive trainings.
Consequently, the number of people who read or watched something I created is quite large and I‘ve been asked many good questions and faced many teaching challenges. Based on these, I'm constantly improving my explanations, incorporating feedback, and tweaking what topics to focus on, to be a better teacher.

Ok, what‘s next?

If you think such a training can be beneficial for your company, write me an email so that we can have a short call to discuss the details. I‘ll then send you a short proposal and we'll take it from there.