The Ember Times - Issue No. 210

– By Anne-Greeth Schot-van Herwijnen

πŸ‘‹ Emberistas! 🐹

News πŸ—žοΈ, EmberData updates πŸ›Έ, Addons ✨, EmberEurope Q1 videos πŸ‡ͺπŸ‡Ί, Webpack Subresource Integrity plugin for Embroider πŸ“¦, ember-serviceable-helper 🚚, Generate Glint template registry πŸ—‚οΈ and Gember 🫚


πŸ—žοΈ Noteworthy news

  • GitHub now has full support for syntax highlighting the template tag component authoring format. (.gjs/.gts). Thanks to everyone who contributed by converting their files πŸ‘.
  • Ember's Discord server has now an amazing showcase channel. The goal of this place is to share amazing apps or addons build with Ember!
  • EmberConf is happening in New York City πŸ—½ on the 31st of May. With this short timeline, the opened CFP will close on the 17th of April and talks will be accepted on a rolling basis. So do you want to share your Ember story from the Big 🍎, send your CFP now!

πŸ›Έ EmberData updates

EmberData has made some exciting updates recently. A TypeScript Guide has been added to their in-repo guides, along with badges that show the latest published versions for each active channel to every README. They have also updated the Compatibility table and made it auto-update versions of associated EmberData channels.

In addition, EmberData has published mirror packages and types packages, which unlock a new migration path. This allows for two completely distinct versions of EmberData in your app at once, making it possible to incrementally migrate smaller regions of your app to new patterns independent from the state in the rest of your app. The mirror package equivalents can be installed alongside the regular packages, and a second store can be configured.

EmberData has also added types for older EmberData versions, allowing experimentation with the native types alphas in older versions of EmberData. The types will match the types for the version number they publish under, but for the most part, they will be more accurate for 4.7+ than the DT types, and nearly exact for 4.12.

Finally, EmberData has released a new v2 addon, @warp-drive/ember, containing various utils and components to make it simpler to work with promises and requests reactively. The <Request /> component will pull store from a context if the library is present in your app.

If you are looking for a place to contribute, EmberData has opened a Polaris tracking issue, so check this out!


✨ Addon updates

Check out the list of updated addons, and all they bring!

  • ember-power-select (v8.1.0) is since v8.0.0 a v2 addon, brings accesibility and type improvements
  • ember-bootstrap (v6.2.0) is starting with the effort of converting Ember Bootstrap to Typescript, so it's currently shipping some types, but they are neither complete nor considered stable. Check out the TypeScript tracking issue if you want to help with the effort.
  • ember-popper-modifier (v4.1.0) migrates the addon to TypeScript and results in published Glint types.
  • ember-mobile-menu (v5.1.1) is since v5.0.0 a v2 addon, with a plain CSS approach instead of SCSS. It also dropped support for the mm.LinkTo component. In v5.1.0 the scroll lock library is added inline because it's unmaintained and this also opens up fastboot possibilities.
  • ember-cli-deploy-s3 (v5.0.0-beta) is as mentioned a beta release. This version upgrades the aws-sdk to v3. In theory, it is not breaking, but in practice, there seem to be some credential setups that have issues. Please try it on your configuration and open issues or PRs so they can get it solid for everyone.
  • ember-native-class-codemode (v4.1.1) adds the option to run in NO_TELEMETRY mode, with the inherent risks. This codemod converts Ember objects to es6 native classes.
  • ember-cli-typescript (v5.3.0) drops support for Node 12 and loosens the version check against ember-cli-babel.
  • ember-intl-analyzer (v4.6.0) now supports custom t wrappers and a new option to flag redundant whitelist entries.
  • ember-intl (v6.5.3) fixes a memory leak introduced in v6.3. The documentation now also shows how to use ember-intl in your v2 addons. In v6.5 the intl service was refactored, it removes unused code and makes what should be private, private. This could be breaking if you overwrote a method from the service.

The group of addons below has joined the evergrowing v2 addon ecosystem.


πŸ‡ͺπŸ‡Ί Ember Europe Q1

The first Ember Europe of 2024 is a fact. On the 21st of March, a group of Ember enthusiasts gathered remotely to hear the talks of Alex Matchneer (@matchy) about language tooling, Chris Manson's update on Embroider (and maybe something about Vite 🀫), and Isaac Lee (@ijlee2) about CSS modules and internationalization. Join the Meetup Ember.js Europe group to get updates on the next edition!


πŸ“¦ Webpack Subresource Integrity plugin for Embroider

Jeldrik Hanschke (@jelhan) published the Webpack Subresource Integrity plugin for Embroider. The ember-cli-sri addon provided Subresource Integrity support for Ember applications. With the migrations to Embroider, which uses Webpack as a bundler, the ember-cli-sri addon does not work anymore. This webpack plugin will make that possible again.


🚚 ember-serviceable-helper

Godfrey Chan (@chancancode) released an API for writing functions that need access to Ember services. This will help your functions to stay plain, even if they need to access some app-wide global state via services. Check out the documentation to learn more about this convenient helper.


πŸ—‚οΈ Generate Glint template registry

Bert De Block (@bertdeblock) released a new package to make a template registry for Glint easy. You can run the package npx @bertdeblock/generate-template-registry@latest and it will give you your registry. Be aware that if your app or addon has components, helpers, or modifiers with the same name, duplicate template registry entries will be generated, which will need to be fixed manually.


🫚 Gember

Bert De Block (@bertdeblock) released this new package called gember. This package allows you to generate components, helpers, modifiers, and services in v2 addons. It only supports .gjs and .gts files for components.

If you are wondering about the 🫚 icon, gember is the Dutch word for ginger.


πŸ‘ Contributors' corner

This week we'd like to thank Sergey Astapov (@SergeAstapov), Kelly Selden (@kellyselden), Patrick Pircher (@patricklx), 'Dayo Olutayo (@bitxplora), Isaac Lee (@ijlee2), Jordan Hawker (@elwayman02), Chris Krycho (@chriskrycho), @NullVoxPopuli, Krystan HuffMenne (@gitKrystan), Sylvain Mina (@sly7-7), Vincent Hardouin (@VincentHardouin), Kirill Shaplyko (@Baltazore), Geordan Neukum (@geneukum), Ross Grayton (@grayt0r), Chris Manson (@mansona), Bryan Mishkin (@bmish), JΓ©rΓ΄me Mestres (@romgere), Katie Gengler (@kategengler), Andrey Fel (@andreyfel), Ignace Maes (@IgnaceMaes), Chris Thoburn (@runspired), Aaron Chambers (@achambers), Mehul Kiran Chaudhari (@MehulKChaudhari), Bert De Block (@bertdeblock), Jared Galanis (@jaredgalanis), Godfrey Chan (@chancancode), Anne-Greeth Schot-van Herwijnen (@MinThaMie), Yelin Zhang (@Yelinz), Leo Euclides (@leoeuclids), Jah Rock (@jahrock), Alexey Kulakov (@aklkv), Derek Wickern (@dwickern), Kyle D. (@kdagnan), Robbie Wagner (@RobbieTheWagner), Giles Thompson (@gilest), and Roman Shafigullin (@crypto) 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,

The Learning Team