The Ember Times - Issue No. 171

– By Chris Ng, Jen Weber, Amy Lam, Isaac Lee, Jared Galanis

πŸ‘‹ Emberistas! 🐹

Speakers wanted for EmberConf 2021 πŸ“†, Ember 3.24 release πŸ™Œ, read the blog on understanding args in Glimmer components ✍️, announcing the launch of the redesigned Ember Blog πŸ“, five RFCs for Ember 4.0 milestone πŸ’¬, and last, but not least, micro-frontends with Glimmer.js and single-spa πŸ”₯!


Speakers wanted for EmberConf 2021 πŸ“†

This year's EmberConf has been announced to take place March 29-30, 2021! EmberConf is 2 days of Ember talks, sessions and fun β€” streaming live virtually anywhere. Want to give a talk at EmberConf? We're now accepting proposals.

EmberConf is great because our speakers are great, and you could be one of them. The Call for Papers (CFP) is public, starts out blind, and features a collaborative process to help applicants improve their proposals. Proposals will be accepted through January 31st at 11:59pm PT. Learn more at the EmberConf 2021 CFP site.

There are a lot of options for talks this year. Conference talks can be 30, 15, 10, or 5 minutes total. Have a talk idea? The EmberConf team will be voting on and reviewing talks on a rolling basis, and will attempt to send feedback sooner than their final evaluation. The earlier you submit, the more chance you'll have to tweak your pitch and improve your odds. Sounds like a good plan for this weekend then?! πŸ“


Ember 3.24 release πŸ™Œ

Version 3.24 of Ember.js, Ember Data, and Ember CLI was released on January 7, 2021! Please use the ember-try addon to continuously test your projects against the latest Ember releases.

Ember.js 3.24 included blueprint changes when ember-page-title is installed, interface changes to DeprecationOptions requiring the keys for and since when using deprecate(), and updated the Glimmer VM to version 0.65.0.

The function tryInvoke from @ember/utils module has been deprecated in favor of JavaScript's optional chaining ?. There have also been various deprecations for Ember.String methods including the Ember.String.loc function. Please check the Deprecations guide for the full information.

Ember Data 3.24 included a fix where an attempt to set something on a deleted record no longer shows the value in the error message in a production environment. This was done to prevent leaking sensitive data.

Ember CLI 3.24 upgraded the packages that are present in the package.json blueprint to their latest version which included a major version changes for ember-qunit to v5 and eslint-plugin-ember to v10. The addon ember-page-title was also added to the blueprint. Finally prettier (along with eslint-config-prettier and eslint-plugin-prettier) was also added to the blueprint from RFC #628.

Read the full Ember 3.24 release notes for the complete information.


Blog: Understanding args in Glimmer components ✍️

Chris Krycho (@chriskrycho) wrote a blog post on understanding args in Glimmer components with a focus on what happens when there are updates to args.

Chris explains how a Glimmer component works if you strip away all the reactivity and only do a single pass. The Glimmer component API sets the args object on to the class in the constructor. The args object in a Glimmer component is also read-only since it is a private class field while exposed with a getter.

class Component {
  #args: object;
  get args() {
    return this.#args;
  }

  constructor(args: object) {
    this.#args = args;
  }
}

The blog recommends to never assign from a property on args to a local class field in a Glimmer component because changes to the parent will never be reflected in the component. You should instead use getters that are re-computed when invoked.

Read the full blog post on Chris’s blog.


Announcing the launch of the redesigned Ember Blog πŸ“

The Ember Blog has a new look and a new codebase! The Ember Blog was started 8 years ago, in 2012. For many years, it was a custom Ruby app that was mainly used for release blog posts. Today, the blog is the home for The Ember Times, release announcements, guest-written learning articles, and more, so a group of dedicated contributors set out to make some improvements. The blog is now an Ember app, and under the hood, it uses the same tech that powers the Ember Guides, Empress. Empress tools help turn markdown into HTML within an Ember app, meaning that articles are quick to write using Markdown, and contributors can use all the great tools that Ember has to offer.

Please check out the blog today! Many thanks to the contributors who worked on this project! πŸ‘

Did you spot any issues? Want to help build future features? You can find the main repository at ember-learn/ember-blog on GitHub. Most styles and components come from the shared component library that all Ember's public sites use, ember-styleguide. The empress-blog-ember-template has a lot of the layout logic that is specific to this blog, and empress-blog handles the general application code for routing and data requests for blogs in general.

If you like what you see, you can make your own blog using Empress in about 10 minutes!


Five RFCs for Ember 4.0 milestone πŸ’¬

The Ember Core Team has been working hard on paving way for Ember 4.0 release. This week on January 16th, four RFCs were merged, and five RFCs entered the Final Comment Period.

Currently, a total of 5 RFCs are open under the 4.0 milestone:

Have a look at the outstanding RFCs when you find time. Please feel free to share the links with other developers and participate in the RFCs by providing feedback! 🌟


Micro-frontends with Glimmer.js and single-spa πŸ”₯

There is another great new Glimmer-focused blog post from Rajasegar Chandran (@rajasegar) about how to make Micro-Frontends with Glimmer.js and single-spa!

If you haven't been following along, Rajasegar has published a number of fantastic posts on dev.to, many of which involve Glimmer.js.

This new post looks at using the single-spa library to buld micro-frontends with Glimmer.

Single-spa is a JavaScript router for front-end microservices that lets you use multiple frameworks in a single-page application. For the integration with Glimmer, Rajasegar has published a single-spa plugin that facilitates injecting multiple super-fast Glimmer apps into a single page, something which is not otherwise possible.

This setup is all pretty experimental and cutting-edge, but it does demonstrate the flexibility of Glimmer, and what you can do with it if you have very specific use cases.

Check this great post out and look for more great Glimmer content from Rajasegar in the future!


Contributors' corner πŸ‘

This week we'd like to thank Melanie Sumner (@MelSumner), Chad Hietala (@chadhietala), Chirag Patel (@chiragpat), Chris Ng (@chrisrng), Scott Newcomer (@snewcomer), Tim (@fozy81), Derek Wickern (@dwickern), Isaac Lee (@ijlee2), Ilya Radchenko (@knownasilya), Katie Gengler (@kategengler), Bryan Mishkin (@bmish), Jen Weber (@jenweber), Jeff Daley (@jeffdaley), Jared Galanis (@jaredgalanis), John Derr (@jderr-mx), Ricardo Mendes (@locks), Cyrille David (@dcyriller), Robert Jackson (@rwjblue), Pawel Kuwik (@czikarito), Nick Schot (@nickschot), Alon Bukai (@Alonski), Chris Garrett (@pzuraq), @sandstrom, Robert Wagner (@rwwagner90), Kenneth Larsen (@kennethlarsen), Godfrey Chan (@chancancode), Daniel (@genisd), Thomas Wang (@xg-wang), Amy Lam (@amyrlam), @NullVoxPopuli, James Herdman (@jherdman), and Bert De Block (@bertdeblock) for their contributions to Ember and related repositories! πŸ’–


Connect with us πŸ€“

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! 🀞

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. See you in two weeks!


That's another wrap! ✨

Be kind,

Chris Ng, Jen Weber, Amy Lam, Isaac Lee, Jared Galanis and the Learning Team