JEM - Web in August - JavaScript Every Month Newsletter
Hey September π
August slipped away, like a moment in time π΅
As it starts to cool down in many parts of the world and things get quieter, that's not the case in the JavaScript and tech world. We're heading into major release cycles and upcoming conferences in the next few months. Lots of updates for the month and beyond π Let's ship it!
Releases
Browsers
Firefox 129
@starting-style
rule is supported. There is a pending feature with animating fromdisplay: none
but the feature should now be in Baseline.transition-behaviour
CSS property is now supported - this lets you specify if discrete properties can be transitioned by settingallow-discrete
(Baseline)- Regular expressions can now use the same name for named capturing groups in different disjunction alternatives. (Baseline)
GeolocationCoordinates.toJSON()
andGeolocationPosition.toJSON()
enabling serialization (Baseline)
Chrome 128
- Minimum size of
- Updates the existing implementation of the previously non-standard CSS zoom property to align with the new standard.
- Web share API is coming to macOS as well (bringing support to Android, Windows and ChromeOS)
Promise.try
- shorthand fornew Promise(resolve => resolve(f()))
React Email 3.0
- Brand new component library based on
shadcn/ui
- 11x performance improvement
- Support for React 19 RC
- Supabase email hook
Supabase launch week
Supabase team had a launch week, where they launched multiple things throughout the week.
postgres.new
is an AI based in browser postgres engine.- support for third-party Auth providers; Phone-based Multi-factor Authentication (SMS and Whatsapp); and new Auth Hooks for SMS and email.
- Log Drains so that developers can export logs generated by their Supabase products to external destinations, such as Datadog or custom HTTP endpoints.
In the Spotlight π¦
This month, I want to spotlight a syntax that's been in the baseline for a while, but when I first encountered it, I mistook it for a syntax error: the nullish coalescing assignment.
First, let's revisit what the nullish coalescing operator does.
const name = user.name ?? "Anonymous User";
const experience = user.experience ?? "N/A";
This is pretty self explanatory, but how is this different from ||
operator that we are familiar with?
The nullish coalescing operator applies the second value only if the first value is null
or undefined
- all the other falsy values are excluded. Which means in the second scenario here, if someone's experience is marked as 0, it will be carried forward as is and would not be replaced with N/A
.
Over to nullish coalescing assignment:
userPrefs.theme ??= preferences.theme;
const a = 1;
You get what this means if you apply the same principle from the operator. If userPrefs.theme
does not already have a value, then replace it with preferences.theme
.
State of CSS Survey
State of CSS survey is now open for contributions.
Tutorials
How To Create An NPM Package - Matt Pocock
Creating an NPM package shouldn't require reading a book, but that's the reality. Thankfully, Matt Pocock has created a guide that explains each file, its usage, and relevant libraries.
Alternatives to Using Pure Black (#000000) for Text and Backgrounds
While pure white on pure black is popular in digital media, it's not ideal for digital products. This blog explains why this choice should be avoided and offers a beautiful colour palette you can use instead.
React Compiler, How Does It Work?
A series of blog posts reading through the React compiler codebase step by step and trying to explain what it is that makes the magic of compiler.
JS dates are about to be fixed
Everyone says JavaScript dates are messed up, but I can't fully explain why. This blog breaks down the reasons and discusses how the new Temporal proposal aims to fix it.
TLDR: It's to do with Zones.
Build 2048 and Master JavaScript! - Ania Kubow
A video walkthrough tutorial to build 2048 with JavaScript - it's fascinating how a lot of this is just plain JavaScript.
In Other News
Zero trust: How the βJia Tanβ hack complicated open-source software
In today's world, everyone uses open-source software. Even if you're building everything on your own (don't), your editor, version control, and hosting platform likely rely on it. But who secures these platforms, and who funds the people behind them? Recent hacks have complicated the trust behind these libraries.
Google Monopolized Search Through Illegal Deals, Judge Rules
Google recently lost a case where a judge ruled its search deals illegal. While it's still early, many are speculating about what this means for Google (which just turned 26 and was created in Susan Wojcicki's garage). Also, this raises questions about Firefox, as one of its major revenue sources comes from its search agreement with Google.
Has the Tide Turned for TikTok, Telegram and X? - NYT
In a pivotal moment last month, Telegram founder Pavel Durov was arrested in France. Telegram appears to be taking a new direction, stating, "We are committed to turning moderation on Telegram from an area of criticism into one of praise," and removing certain terms from their FAQ. Meanwhile, Twitter was banned in Brazil, and StarLink faced restrictions for refusing to ban Twitter in the country. The NYT article discusses the fading impunity social media platforms have enjoyed across borders.
Elastic search is open source again
Elastic, the company behind Elasticsearch, had shifted their core product to a proprietary license, feeling that industry leaders like AWS were profiting from their open-source product without contributing back. Now, with a collaboration in place, Elasticsearch has returned to being open-source.
AI Updates
- Structured outputs in API - GPT introduces structured outputs so that model outputs reliably adhere to developer-supplied JSON schemas.
- Artifacts are generally available - Claude artifacts are available to everyone. It can be used to visualize diagrams and create prototypes.
- The web is open to all! - Midjourney Web interface is available to everyone as they have migrated from using Discord.
Looking Ahead
- React Universe - Sept 5-6
- Apple Event - Sept 9
- GraphQL Conf - Sept 10-12
- React Alicante - Sept 19-21
- Netlify Compose - Oct 2-3