The Ember Times - Issue No. 166

👋 Emberistas! 🐹

New RFC to Deprecate transition methods of Controller and Route ✍️, learn what's new in the Ember 3.22 release 🎉 read the blog post on React component patterns in Ember ⚛️, Glimmer VM tracking video 📹, Deprecate tryInvoke RFC enters Final Comment Period 📜, EmberMap Octane conversion video 📼, and last, but not least, built with Ember: Emojible 🥳!


RFC: Deprecate transition methods of Controller and Route ✍️

Jeldrik Hanschke (@jelhan) proposed a new RFC to Deprecate transition methods of Controller and Route in order to reduce public API exposed related to routing.

The RFC aims to deprecate the methods transitionTo and replaceWith of the Route object and the methods transitionToRoute and replaceRoute of the Controller object. The existing methods transitionTo and replaceWith of the RouterService object should be used instead.

The RFC proposes that the existing methods are today not documented properly so there are likely timing differences between the different routing calls even if from the outside they function the same. Supporting different ways to do the same increases complexity without providing much value and limiting options will make learning the framework easier for new developers.

Read and comment on the full RFC on GitHub!


Learn what's new in the Ember 3.22 release 🎉

The Ember Blog announced the v3.22 releases of Ember.js, Ember Data, and Ember CLI. There were a host of bug fixes across the board, one deprecation for Ember Data and several new features for Ember.js.

The release of version 3.22 introduced some new features you may want to be aware of in Ember.js:

  1. Enabled @ember/destroyable API, which allows you to create and manage your own destroyables. For more information, please see the Destroyables RFC.
  2. Enabled Cache API, a low-level primitive for memoizing the result of a function based on autotracking. (You can install a polyfill for apps between versions 3.13 and 3.21.) For more information, please check the Ember Guides and Autotracking Memoization RFC.
  3. Allowed passing the transition object to 2 route hooks, activate and deactivate.

Additionally, Ember Data 3.22 introduced a deprecation for use of najax in favor of ember-fetch when fastboot is installed. And for new apps, Ember CLI 3.22 will install v9 or higher of eslint-plugin-ember, which may limit the version of Node that you use.

The release also kicked off the 3.23 beta cycle. If you can, please help with testing beta builds and reporting bugs before version 3.23.0 is published!


React component patterns in Ember.js ⚛️

Michael Klein (@LevelbossMike) wrote a blog post comparing modern Ember with React. While not an expert on React, Michael goes through how React tackles challenges when implementing SPAs. The blog goes through 3 different component patterns: Compound Component Pattern, Flexible Compound Component Pattern, and Provider Pattern - to see how each one is implemented in React and Ember.

The blog argues that the Octane Edition of Ember provides conventions that help you fall into the pit of success instead of only giving you low-level primitives to solve common challenges in a multitude of ways with different tradeoffs that only seem to be obvious to people that are experts in React.

Read the full blog post where Michael compares each pattern with code samples in the Effective Ember blog!


Glimmer VM Tracking Video 📹

We've had some nice blog posts on the subject of tracking in Octane recently, but if you've been wondering about how tracking works in the ✨✨Glimmer VM✨✨ and you learn better by audio visual 🔊📼 methods, you may want to check out the video on YouTube that Chris Krycho (@chriskrycho) and Chris Garrett (@pzuraq) put out at the beginning of September on the subject.

It's a very nice opportunity to watch and listen to two framework contributors discuss the internals of tracking in the Glimmer VM - we hope they put out another one soon!


Deprecate tryInvoke RFC enters Final Comment Period 📜

Bach Vo (@bachvo) created a new RFC to deprecate tryInvoke, and we covered this a few weeks back.

You may recall that this RFC builds on top of the previous RFC to deprecate getWithDefault.

Well this newer RFC has just entered Final Comment Period, so you should head on over to the RFC and provide your thoughts while you still can.


EmberMap Octane conversion video 📼

The good folks over at EmberMap are kicking off a new video series lead by Lindsay Cade (@cadeParade) on converting to Octane and the first look video is out now 🎉!

The video covers how to convert an Ember Model to native class syntax and it is 💸 free 💸, so go watch the first in what is sure to be an awesome series of videos on Octane conversions!


Built with Ember: Emojible 🥳

We're big fans of emojis here at The Ember Times. With Emojible, now you can create your own emojis! Show everyone how you really feel! Save your custom emojis and use them on Slack, Telegram, Signal, or anywhere you want to add some flair. From the announcement on Twitter, we learned that the site was built with Ember.js! Awesome to see Ember on such a fun project. May we suggest a Tomster face in the next release?!


Contributors' corner 👏

This week we'd like to thank @34Johnny69, @69LaudaLassan69, Axel Uriel Martínez Castillo (@ackzell), Amy Lam (@amyrlam), Andrei Sebastian Cîmpean (@andreisebastianc), Andrii Tykhan (@AndriyTykhan), Aaron K Redshaw (@aredshaw), Jonathan Haines (@BarryThePenguin), Jan Bobisud (@bobisjan), Braden Lawrence (@BradenLawrence), John Ryan (@cah-johnryan), Oscar Choque (@cechus), Godfrey Chan (@chancancode), Chirag Patel (@chiragpat), Chris Krycho (@chriskrycho), Chris Ng (@chrisrng), Chris van der Ploeg (@chrisvdp), Deepak Panda (@DeepakPanda02), Jordan Hawker (@elwayman02), Fabrício Tavares (@fabriciotav), Fletcher Rippon (@fletcherrippon), Tim (@fozy81), Gonçalo Morais (@gnclmorais), Humphrey Butau (@hbutau), Harsh Verma (@hverma73), Yyee (@Ian-Yy), Isaac Lee (@ijlee2), @JamesS-M, Jared Galanis (@jaredgalanis), John Bryson (@jbryson3), Jivthesh M R (@jivthesh), @Jogius, Jayvic San Antonio (@jpsanantonio), Katie Gengler (@kategengler), Kelly Selden (@kellyselden), Dave Laird (@kiwiupover), Ricardo Mendes (@locks), Luis Vegerano (@lvegerano), Chris Manson (@mansona), Manu Ram Pandit (@manurampandit), Mateus Alexandre (@mateusalexandre), maxwondercorn (@maxwondercorn), Marie Goetzke (@mgoetzke), Michał Staśkiewicz (@mikoscz), mo3taz1705 (@mo3taz1705), Aleksey Nagovitsyn (@nag5000), Michał Antropik (@Nelias), Joan Piedra (@neojp), Russell Tepper (@NoneOfMaster), @NullVoxPopuli, Chris Garrett (@pzuraq), Raido Kuli (@raido), @richgt, Wayne Ritchie (@Rockin4Life33), Paul Kuruvilla (@rohitpaulk), Volodymyr Radchenko (@rreckonerr), Robert Jackson (@rwjblue), Robert Harężlak (@Rxbsxn), Steve Calvert (@scalvert), Simon Dahlbacka (@sdahlbac), Scott Newcomer (@snewcomer), Taksh Chanana (@takshch), Mohammed Tahir (@tmdtahir21), Vedant Shrivastava (@Vedant-S), Leah Silber (@wifelette), and @zinovik 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! 🤞

P.S. Did we miss your past Readers' Question? We've added a new optional field to include your contact info, in case we need some clarification to answer your question in an upcoming issue. Please chat with us at #support-ember-times on the Ember Community Discord or ping us @embertimes on Twitter. As always, join us on Discord if you want want to write for the Ember Times or have a suggestion for next week's issue!

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, Amy Lam, Jared Galanis and the Learning Team