Lottie is an open-sourced Android, iOS, Web, React Native, and Windows library that renders After Effects animations in real time, allowing apps to use animations as easily as they use static images.

Screenshot of the Lottie Open Collective page
Screenshot of the Lottie Open Collective page

After years of working with open source contributors to create new features, fix bugs, and maintain the issue backlog, we are now announcing the Lottie Open Collective. The Lottie Open Collective is a platform to help manage groups of contributors transparently. Lottie joins projects like webpack, Babel, Mocha, Preact, Jest, Vue, and many more in supporting the open source community through the Open Collective platform.

This is our…


Growing a successful open source project takes more than code — it takes a healthy community where contributors can engage in deep conversations with respect. A code of conduct is one important tool in helping a community uphold its own values.

Belonging anywhere is at the core of Airbnb’s mission, and we want to embrace and promote this in our open source community as well. Today we are excited to announce that we are adopting the Contributor Covenant for all of our open source projects.

From “A Code of Conduct for Open Source Projects”:

Open Source has always been a…


In 2016, Airbnb released Enzyme, our React component testing library. In the following 4 years, the project has amassed more than 18,000 stars, and over 340 contributors. GitHub also tells us that Enzyme is used by over 230,000 repos and 24,000 packages, and npm reports that it is downloaded around 2 million times each week.

The community’s response to this project has been astounding, to say the least. Much of Enzyme’s success is the result of the vibrant React community opening and commenting on actionable issues and submitting quality pull requests. …


There may be a lot of low-hanging fruit 🥝 affecting performance in areas you might not track very closely…but are still very important.

Airbnb has some incredible listings in Cuba…and also a corner of the office inspired by Habana Vieja

We have been hard at work migrating the airbnb.com core booking flow into a single-page server-rendered app using React Router and Hypernova. At the beginning of the year, we rolled this out for the landing page and search results with good success. Our next step is to expand the single-page app to include the listing detail page.


By Joe Lencioni

It is fun to plant and harvest new crops in my garden, but I’ll eventually wake up to a mess if I don’t regularly weed. While each weed isn’t a problem by itself, they combine forces to choke the system. Working in a weed-free garden is a productive pleasure. Codebases are like this too.

I also don’t enjoy weeding, so I forget to and end up in trouble. Thankfully, in coding, we have great tools like ESLint and SCSS-Lint to ensure that we weed as we go. …


This essay earned the Clark Award in 2005 and originally appeared in the Journal of Theta Alpha Kappa Vol. 30, No. 1, Spring 2006.

Buddhist philosopher Masao Abe states that, contrary to the advancement of technology and international communication, “we know very little about the inner meaning of spiritual and religious traditions not our own.” [1] This sentiment is echoed in the life of Thomas Merton who explored and incorporated elements of Eastern religions into his own writing. Both thinkers believe that this lack of understanding often leads to fear, hatred, and mistrust of the “other.” …


As I wrapped up my last couple of weeks at Brigade before joining Airbnb, I had a lot of good conversations with people asking for advice — and in my final commit message I wrote down some of it. It has been received so well, and I think it applies to many people and situations, so I decided to publish it here.

This may very well be the last commit I author on the Brigade repo (at least until you finally open source the whole thing). …


Sometimes it’s the small things.

At Brigade we use Jasmine along with the Jasmine gem to unit test our React.js application. This gem uses PhantomJS under the hood to run the specs in CI (in our case, Jenkins CI). We recently started using webpack’s css-loader (and cousins sass-loader and style-loader) which caused our specs to not run at all under PhantomJS 1. After adding a little bit of configuration to our spec/javascripts/support/jasmine_helper.rb file, we were able to get our specs running again with PhantomJS 2.

Jasmine.configure do |config|
# Use whatever version of PhantomJS is already installed…


When building out the first version of Brigade, we wanted a simple data visualization to show how people agree and disagree with positions. Although pie charts are typically not a great choice, for our simple use-case with only two data points they actually work pretty well —we don’t need a high degree of accuracy and they are approachable and quickly understood.

We decided to save some time by integrating a library to do the heavy lifting, and after evaluating our options we decided to try out Chart.js. It has a lot of things going for it — relatively simple, smallish…


And why crafting good commit messages is an investment worth making regularly.

Much has already been said about commit messages, and the consensus seems to follow the seven rules of great commit messages that Chris Beams outlines:

  1. Separate subject from body with a blank line
  2. Limit the subject line to 50 characters
  3. Capitalize the subject line
  4. Do not end the subject line with a period
  5. Use the imperative mood in the subject line
  6. Wrap the body at 72 characters
  7. Use the body to explain what and why vs. how

I see two main categories. Rules 1–6 might be summarized as: “Use good formatting”. This is the minimum bar for any quality commit…

Joe Lencioni

Web infrastructure at @airbnb. Making web since the 90s. Co-created happo.io. he/him Minnesotan, liberal, dad. Follow @lencioni on Twitter.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store