June 2017 FeathersJS Community Update

Marshall Thompson
The Feathers Flightpath
7 min readJul 2, 2017

--

Faster performance, more flexibility, and cleaner APIs are coming with Feathers Buzzard. Real-time, database-agnostic, mobile sync with feathers-offline is kind of a big deal. Many more notable releases hit the npms.

The Next Big Feathers Release

Feathers Buzzard is nearing completion by the core team. You may have seen how well Feathers performed in these benchmarks comparing various Node.js frameworks. Updates in Feathers Buzzard are going to help Feathers scale even better with Event Channels.

In what may be a very exciting move for some, we’re also opening the door to let Feathers work with other Node.js frameworks. It will soon be possible for somebody who is interested to write a feathers-koa package and use Koa middleware.

Best of all, looking at the API changes, you’ll probably only have to change about 10 lines of code to upgrade your apps to Feathers Buzzard. Once upgraded, you’ll be able to explore if your app would benefit from Event Channels. You can read more about Feathers Buzzard in the blog post:

Offline-First FTW

Feathers is introducing initial offline-first support with a suite of utilities:

You can read more about the why and how it works in the docs.

This project is led by John Szwaronek of the Feathers Core Team. He has done some great work here. Other solutions exist to sync up a server-side data store with a mobile data store, but you have to use very specific database tech. This first iteration currently supports replication to a memory-based store, and future iterations will work with any database combination. (It’s amazing what you can accomplish with the Feathers Service Interface) I almost forgot to mention that John built this in his spare time, just like the community has done with the rest of Feathers. I personally see it as kind of a big deal.

Feathers Offline First is kind of a big deal.

Notable Releases

There are so many updates this month that I’m going to break them down into categories.

Client Frameworks & Plugins

feathers-redux: feathers-redux integrates Feathers services with Redux in just a few lines of code. Virtually all Redux boilerplate is eliminated while providing reducers, dispatching —
store.dispatch(feathersServices.messages.patch(id, data, params));
state for status — store.messages.isloading. It also supports sorted state for near-realtime, read-only replication of selected remote data. Thanks, eddyystop, for the great work! Check out the repo to learn more.

feathers-vuex: This plugin, introduced last month, saw a few releases this month. Improvements include better SSR compatibility, bug fixes, and the ability to add custom state, actions, mutations, and getters to the store using the newly-added .vuex() method on Feathers services. See the updated readme and full changelog for details.

Service Adapters

feathers-sequelize: The most popular plugin for working with SQL data was updated to fix an issue with eager loading (thanks DesignByOnyx) and another with ignoring field and virtual setters (thanks, buske) See the full changelog for details.

feathers-blob: This service adapter assists with handling blob storage like Amazon S3 or any of these abstract-blob-store-compatible services. It was updated in June to use Promises internally (thanks, daffl) and to better handle errors (thanks, 3bola). Documentation for using the S3 options were also added to the readme.md (thanks, silvestreh). See the full changelog for details.

feathers-elasticsearch: The Elastic Search plugin was updated with a new custom query parameter. The $sqs param allows you to perform simple_query_string queries. Thank you Mattchewone and jciolek!

Authentication

feathers-authentication: version 1.2.4 of the feathers-authentication plugin was released. One exciting change is that it fixes an issue when working with feathers-socketio and feathers-primus. Now, when the user record is updated in the database, the data in the socket object gets automatically updated to match. The release also included an important security update where the Node.js process could crash if a poorly formatted payload was sent to the authentication service. There were several other updates. See the full changelog.

feathers-authentication-local: A minor release and multiple patch releases of feathers-authentication-local were published. Improvements include (1) having request params included in the user service hooks, (2) returning a proper error message with better debugging when a user doesn’t exist, (3) using the same default config key as the current feathers-cli, and (4) allowing use of separate entity username and password fields. A lot of work went into these small releases. Thanks, everyone! See the full changelog

Generator & Documentation

generator-feathers: The generator-feathers repo used in the feathers-cli saw lots of updates in June. Updates were made for working with the latest versions of Sequelize and Knex. Better Yarn support and simultaneous use of MongoDB and Mongoose were added along with some customizations for testing. Thanks to jsphpl, daffl, and arve0 for the updates. There were lots of other changes made. See the full changelog.

feathers-docs: Our documentation continues to get better and better with help from the community. Along with a ton of typos and smaller fixes, we also received a huge addition with the feathers-offline suite. (Thanks, @eddyystop) Many thanks to our community members who made docs contributions in June:

We really appreciate all of the work that goes into improving the docs. Thanks, everyone!

New Frontend Realtime Chat Guide

If you’ve spent some time in the Feathers Guides, you’ve probably noticed that we use Feathers Chat as our “Hello World” Feathers application. The Feathers Chat apps also serve as our “TodoMVC” client-side example application. Feathers Core Team member David Luecke (@daffl) released the first frontend guide based on Feathers Auk using plain JavaScript. Check out the blog post:

You can also check out example applications using React Native and Feathers Vuex linked in the Ecosystem page. We would love for more community members to show off guides on how to build Feathers Chat with their preferred framework.

Community Member Highlight: Luc Claustres

Luc Claustres has continued to make awesome open source projects that benefit the FeathersJS community. A couple of months ago he created a nice tutorial that showcased integration of Feathers with the Vue.js-based Quasar mobile framework. Check it out at the link, below.

Luc is once again sharing some really nice stuff with the community.

First, he and his team have used Feathers to build Weacast, which is an open source platform to gather, expose and make use of weather forecast data. Looking at all of the repos in the the Weacast org on GitHub, you can tell that they’ve done a lot of work. Check out the project on GitHub and their lovely documentation I’ve linked, below.

Luc also produced a great blog post about preparing a Feathers app for production. There are some great tips in there, including what I think is the cleanest way to do API prefixing. Thanks, Luc!

Important Issues

There are some proposed future changes to be aware of. We welcome any input and feedback from community.

Join the Feathers Community

The Feathers Slack group continues to be very active and supportive. Join the #announcements channel in the Feathers Slack chat to get more frequent updates as they happen.

Thanks, everyone, for the great contributions in the last month! ❤️

This is the second monthly FeathersJS newsletter. If we’ve missed anything, feel free to contact a Core Team member in our Slack chat. (Just look for the Feathers logo next to the name.)

--

--