The Ember Times - Issue No. 142

👋 Emberistas! 🐹

Community support for the Ember API Docs 📓❤️, release of ember-arg-types 🍎🍊, Ember CLI improvement tips 🚀, betas of Glimmer.js 2 🎉, and last, but not least, watch 3 virtual talks from EmberATX 📽️!


Community support for the Ember API Docs 📓❤️

The Ember API Docs have been one of the cornerstones of Ember's official learning resources since the early days of the project.

But did you already know that right now there are plenty of efforts underway to modernise the app? In this regard, we'd like to thank Gaurav Munjal (@Gaurav0) in particular for bringing in lots of new upgrades, awesome refactors and improvements to the API Docs ❤️!

If you are interested in helping with modernising the Ember API Docs - be it contributing code, triaging issues, or reviewing changes - make sure to chat with the Ember Learning team. You can do so either on an issue discussion on Github or on the #dev-ember-learning channel through the Ember Discord!


Release of ember-arg-types 🍎🍊

Jon Kilroy (@jkusa) released the ember-arg-types library which provides a decorator (@arg) that maps glimmer arguments to local component properties. This allows default values and type checking to be declared and documented in your component JS file.

In this example, sortBy will return the string argument passed or will default to the string ’id’:

@arg(string)
sortBy = 'id';

Instead of writing something like this:

get sortBy() {
  const { sortBy='id' } = this.args;
  assert('`sortBy` must be a string', typeof sortBy === 'string');
  return sortBy;
}

Furthermore ember-arg-types leverages the facebook/prop-types library by importing type validators for runtime type checking. As an example, the name argument below is required to be a string.

import Component from '@glimmer/component';
import { arg } from 'ember-arg-types';
import { string } from 'prop-types';

export default class CharacterComponent extends Component {
  // `name` string arg that is required
  @arg(string.isRequired)
  name;
}

Try it out today by ember installing ember-arg-types!


Ember CLI improvement tips 🚀

Vasanth (@vasind) collated a list of all Ember CLI improvements for Ember applications as a GitHub gist. He showcased improvements to the ember-cli-build.js that speed up build times for development and test environments, while retaining the right configurations in production. He also added tips on optimizing applications using Mirage. Head out to his gist to check them out!


Betas of Glimmer.js 2 🎉

A set of new betas for Glimmer.js 2.0.0 (beta.1 && beta.3) have been released! 🔥🔥🔥

The releases incorporate some exciting new developments including a new minimal renderComponent API, a template import based design, a standardized build based on plain JavaScript modules, a new Glimmer.js app blueprint, and support for custom helpers and modifiers. The standardized build emulates the goals of Embroider in Ember.js and unlocks the ability to use whatever custom build pipeline you might want (WebPack, Parcel, Rollup, etc.)!

The Glimmer.js betas could pave the way for what we might want to do in Ember.js, and even what we might not want to do in Ember.js. Please note that these new Glimmer.js betas are definitely experimental. 🔬🧪 Have fun exploring them 🤠, but keep this in mind when considering them for use in your application.


Watch 3 virtual talks from EmberATX 📽️

Hope everyone is well and taking care of themselves! 💞 If you have ~15 minutes to spare, you can watch a recent talk from EmberATX:

In particular, please check out the new addon, ember-printable-pages! You can write declarative templates and reuse components to create printable pages for end users. It also supports progressive rendering to provide a smooth user experience when the end user needs to print hundreds of pages. 💯


Contributors' corner 👏

This week we'd like to thank @locks, @Gaurav0, @rwwagner90, @Robdel12, @skaterdav85, @somasuna, @rwjblue, @pzuraq, @brendenpalmer, @sharpshark28, @sivakumar-kailasam, @chancancode and @SYU15 for their contributions to Ember and related repositories! 💖


Got a question? Ask readers' questions! 🤓

Office Hours Tomster Mascot

Wondering about something related to Ember, Ember Data, Glimmer, or addons in the Ember ecosystem, but don't know where to ask? Readers’ Questions are just for you!

Submit your own short and sweet question under bit.ly/ask-ember-core. And don’t worry, there are no silly questions, we appreciate them all - promise! 🤞


#embertimes 📰

Want to write for the Ember Times? Have a suggestion for next week's issue? Join us at #support-ember-times on the Ember Community Discord or ping us @embertimes on Twitter.

Keep on top of what's been going on in Emberland this week by subscribing to our e-mail newsletter! You can also find our posts on the Ember blog.


That's another wrap! ✨

Be kind,

Chris Ng, Abhilash, Jessica Jordan, Jared Galanis, Isaac Lee, Amy Lam and the Learning Team