a monthly subscription fee for node_modules

Issue #57.July 19, 2021.2 Minute read.
Bytes

Apollo Server releases v3.0, TC39 talks about JavaScript stuff, and a new template engine makes us hungry for Japanese food. Welcome to Issue 57.


Daft Punk

Remember the astronauts from Apollo 11? This is them now. Feel old yet?

Apollo Server 3.0 took one small step for man

…and one giant leap for GraphQL servers everywhere, when they released v3.0 last week (their first major release since 2018).

Quick review: Apollo Server is an open-source GraphQL server with a schema-first approach. It can be used as a standalone GraphQL server, a gateway for a federated data graph, or as an add-on to your existing Node.js middleware (like Express or Fastify).

Getting flexible: Apollo Server 2 had a bunch of hardcoded dependencies, which made it difficult to build new features. So, like many of us during quarantine, Apollo Server bought a cheap yoga mat off Amazon and decided to start working on its flexibility.

In this case, that required removing the majority of those hardcoded dependencies, increasing extensibility, and modernizing the entire code base. These under-the-hood improvements were the major focus of this v3 release, but there are a few other cool new features:

  • Apollo Sandbox is a new GraphQL IDE for local development that’s now the main recommended tool for querying your server

  • There’s newly added support for the latest versions of Fastify and Hapi

  • AWS Lambda and Google Cloud Functions integrations are now built directly on top of the Express integration — which means that new Apollo Server functionality will work in Lambda and Cloud Functions without making you write the same code three times

The Bottom Line: This release is less about introducing a ton of exciting new features, and more about building a scalable foundation so that Apollo Server can actually build those new features in the future. Kind of like when Venusaur has to spend a whole turn charging up its Solar Beam move before it can use it to unleash hell.


Fellowship of the Ring

If by my life or death I can protect you from breaking changes, I will.

A Quick TC39 Update

When we saw the agenda for the upcoming 84th meeting of Ecma TC39, we were ecstatic. “Find volunteers for note taking”, “Intl Locale Info update”, “Module fragments current direction” had us – and I can’t emphasize this enough – riveted. So much so that we applied to join TC39.

Unfortunately, our application was denied on the grounds of “we’re not smart” and “we’re not even that funny”. Thankfully Hemanth, a TC39 delegate, was there and wrote a recap:

Stage 1:

  • ArrayBuffer to/from base64 — ArrayBuffer ↔️ base64 string functions, which would give JavaScript a built-in mechanism to encode binary data as base64

Stage 3:

  • Array find from last — Proposal for .findLast() and .findLastIndex() methods on array and typed array
  • Intl Enumeration API — Return supported values of options, such as timeZone, calendars, numberingSystems, currencies, units

Stage 4:

The Bottom Line: Yes, it was a slow week in JavaScript-land. Thanks for asking.


Cool Bits

  1. Gigi wrote a deep dive on the evolution of graphics in JavaScript from 1990 to today. We’ve come a long way in 30 years, but it turns out you can still host a website on a Casio graphing calculator if you want.

  2. Tempura is a “light, crispy, and delicious template engine,” which sounds much classier than if he had named it DeepFried.js.

  3. Brendan Eich and Allen Wirfs-Brock gave an hour-long talk on The First 20 Years of JavaScript. It’s a quicker way to consume a lot of the material they covered in a super long paper they wrote on the topic last year.

  4. Dinero.js is a library that lets you create, calculate, and format money safely in JavaScript and TypeScript, and was obviously very inspired by the J-Lo and DJ Khaled song from 2018. Weren’t we all.

  5. Firefox 90 was released last week with some new features for developers. 10 more updates and it’ll evolve into an Icefox.

  6. FracturedJson is a JSON formatter that produces a human-readable but fairly compact output.

  7. esbuild-loader lets you harness the speed of esbuild in your Webpack build by offering faster alternatives for transpilation.

  8. Átila wrote about Breaking Down Bulky Builds with Netlify And Next.js. Really looking forward to him releasing an at-home workout DVD with the same name. “Breaking Down Bulky Builds — I hate it… but I love it.”