The Ember Times - Issue No. 174

👋 Emberistas! 🐹

Podcast on native apps and Ember, keep up with the latest in template linting with the Tailwind CSS linter, release of ember-browser-services, and real-world Ember roundup.

Building native apps with Ember.js 🎙️

The first Ember Report podcast is live! You can find it on all the podcast platforms, like Spotify and Apple Podcasts. Kenneth Larsen (@kennethlarsen) and Jan Butschen (@buschtoens) tell you all about the ins and outs of building native apps with Ember.js. Kenneth asks all the critical questions, you as a listener might have, and Jan shares his expertise on how they embedded their Ember.js app in Capacitor, the successor to Cordova.

With practical examples and a ton of show notes, this podcast will get you started in the world of native apps as an Ember developer. From discussing the technology and the developer experience to discussing the future of native apps vs PWA’s, they’ve got you covered.

Rediscover class sanity with Tailwind CSS linter for Ember templates v2.x 🌬

Know what's cool? Respectful, emotionally responsible pull request reviews! A great way to do that is with linting tools to let the computer gently push collaborators towards codebase consistency instead of having to enforce standards through comments and suggestions.

Ember has a wonderful suite of linting tools and hot off the presses is the chill plugin for ember-template-lint for all of those Tailwind CSS users out there, v2.x of ember-template-lint-plugin-tailwindcss!

Tailwind classes can become quite verbose so it can be nice to encourage some standards for how so many classes can be cleanly added to the DOM. This latest version of the linter gives maintainers full control of class ordering and when line breaks should occur (both for classes per line and optionally by class grouping).

Release of ember-browser-services ⚙️

The ember-browser-services addon is officially released! The addon provides a collection of Ember Services that allow for consistent interaction with browser APIs. This provides consistent interaction with browser APIs and easier testing.

For tests, you can stub out the Ember Service from ember-browser-services with your own implementation in order to verify the behavior you were testing. Any changes to a service's implementation during a test are discarded after the test finishes, there’s even a shorthand way of doing so using the setupBrowserFakes export.

Try out ember-browser-services today by checking out their code on GitHub!

Real-world Ember roundup 🙌

  • The blog post Track performance of your web application with JavaScript discusses how Forest Admin used JavaScript's Performance API to implement tracking of app load time in their Ember web app. They're also monitoring the time of requests made by customers on their admin backend. They've implemented the functionality of react-addons-perf (now deprecated in React 16) in Ember. Check out the article for implementation details to track performance, with the goal of improving the user experience.
  • Have you been missing meetups since the pandemic? Looking for some pre-EmberConf talks for learning and inspiration? Mark your calendar's for Ember LA's Virtual March Meetup. This month, Ava Gaiety Wroten (@hergaiety) will be giving a presentation called Achieving A11y Automation Testing, about an Ember success story with lessons that can be applied to any framework or project. Folks from anywhere are encouraged to attend! P.S. Feel free to submit a talk 📜, anything from a five minute lightning talk to a full-length presentation is welcome.

Contributors' corner 👏

This week we'd like to thank Ava Gaiety Wroten (@hergaiety), Melanie Sumner (@MelSumner), Igor Terzic (@igorT), Andrey Mikhaylov (lolmaus) (@lolmaus), Matthew Edwards (@wondersloth), Cristin O'Connor (@cnocon), Charles Pierce (@charlespierce), Matthew Beale (@mixonic), Ricardo Mendes (@locks), Pat O'Callaghan (@patocallaghan), Sam Van Campenhout (@Windvis), Sabin Hertanu (@herzzanu), Chris Manson (@mansona), Bert De Block (@bertdeblock), Katie Gengler (@kategengler), Ben Demboski (@bendemboski), Brenden Palmer (@brendenpalmer), Kelly Selden (@kellyselden), Jeff Daley (@jeffdaley), James C. Davis (@jamescdavis), Zhan Wang (@zhanwang626), Christopher Gammie (@lindyhopchris), Raido Kuli (@raido), Thomas Wang (@xg-wang), Travis Hoover (@thoov), Andrew A Lee (@drewlee), Vadim Kazakov (@yads), Isaac Lee (@ijlee2), Peter Wagenet (@wagenet), Bouke Haarsma (@Bouke), Godfrey Chan (@chancancode), Chris Garrett (@pzuraq), Chris Ng (@chrisrng), Robert Wagner (@rwwagner90), Amy Lam (@amyrlam), Anne-Greeth van Herwijnen (@MinThaMie), Jared Galanis (@jaredgalanis), Nick Schot (@nickschot), Edward Faulkner (@ef4), @NullVoxPopuli, and Robert Jackson (@rwjblue) 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 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,

Anne-Greeth van Herwijnen, Ava Wroten, Chris Ng, Amy Lam, and the Learning Team