This week, weāve got blessings from the platform, math being a very cool thing, and yet another existential crisis.
Welcome to #101.
The Chrome team presenting new platform features
Google I/O Goodies
While yāall were busy watching the Johnny DeppāAmber Heard trial (sickos), āOne take Jakeā and the rest of the Google team just wrapped up another I/O. This year they were able to (mostly) avoid getting our hopes up, and then crushing us with the inevitable āitās available behind a flag š„²,ā thanks to the Interop initiative (which might be the biggest thing no one is talking about).
TLDR: Browser vendors set aside their differences back in 2019 to start working together on fixing deficiencies in the web platform. So far, itās resulted in an explosion of new features and fixes that are supported across all major browsers. It turns out, Google DevRels have been listening to your subtweets feedback after all.
Letās break down some of these cool, new, (mostly) non-flagged features from I/O 2022.
HTML & CSS:
- Dialog element lets you create accessible modals that work with forms out of the box. Noice.
- You can now style checkboxes, radios, and more with
accent-color
- Container queries ā theyāre like media queries but for container elements (still needs a polyfill, but otherwise huge W)
-
:has and :is
selectors ā so useful (go look them up)
JavaScript:
- Top level await (no more async function closures) ā LFG!
- Private class methods for all you class-loving heathens
- Accessing the last item in an array got easier with
arr.at(-1)
(also works for strings)
- New utilities like structuredClone & createImageBitmap
Things we canāt have yet, but have been promised:
- The navigation and page transition APIs
- Select Menus that we can style š (weāve only been waiting our whole lives)
- CSS anchor positioning (will save appx. 1 million lines of JS in every app)
Bottom Line: If the goal of I/O was to get us hyped about the future of the web platform, mission accomplished. The only thing missing was a Google Devrel version of (Tech) Celebrities Read Mean Tweets. Thereās always next year.
"You set this up in 5 minutes? Incredible." [sponsored]
FusionAuth made my job fun again
I got into this industry for one reason ā my burning passion for building complex authentication solutions.
Ok, thatās a lie.
Call me old fashioned, but Iām just a little more interested in building features that users *actually* care about ā instead of worrying about crap like SSO, MFA, user management, and all the security headaches that come along for the ride.
Thatās why weāre huge fans of FusionAuth.
They handle all of the messy auth and security stuff for you, and make it super easy to integrate with your app in 5 minutes or less (no matter how weird your tech stack is).
Theyāre also way more flexible than most other auth tools ā you can deploy anywhere, you can self-host, and you can easily customize whatever you want with their straightforward APIs and webhooks.
Check it out ā and never worry about hand rolling auth again.
Whatās behind the Solid.js hype?
If youāve spent any time on tech Twitter recently, youāve probably noticed two things:
- Thereās been a lot of love for Solid.js over the past few weeks
- Your level of happiness is perfectly inversely correlated with the amount of time you spend on tech Twitter
But since we all know that coRreLaTioN != cAuSaTiOn
, letās ignore point #2 and dive into the hype behind Solid.js ā or as its friends like to call it, āReact: the good parts.ā
Just like React, you build Solid apps with components, which (for both frameworks) refers to JavaScript functions that return JSX. Solid also borrowed a bunch of other React features like SSR & Hydration, Concurrent Rendering, Context, and more.
But unlike React, thereās no Virtual DOM and no Hooks rules. Instead, Solid uses a compiler (similar to Svelte) that converts your JSX into vanilla JS. This makes Solid a lot simpler than modern React and a lot faster.
But Solidās been around for a while (2018-ish). So why are we hearing so much about it now?
Two words: React fatigue.
Itās no secret that even die-hard React fans are starting to get a little disillusioned by the growing complexity around Hooks. So itās probably no coincidence that we started hearing lots of great things about Solidās simplicity right after the React team posted an RFC for a new hook, useEvent
, which receivedā¦ mixed reviews. (Yes, I am still aware that coRreLaTioN != cAuSaTiOn
, thanks for checking.)
Bottom Line: This is definitely still the honeymoon phase for Solid (they just released v1.4). And itās easier for a framework like Solid to preach the virtues of speed and simplicity from the earlier stages of the development and adoption lifecycle, than it is for a more mature and popular framework like React.
That said, Solid does look awesome. It combines the best parts of two beloved frameworks (React and Svelte) to make a new framework thatās simple, fast, and powerful. And we can always appreciate a good mash-up.
š¬ Spot the (TypeScript) Bug ā Sponsored by Courier
This livestream shows you how to add Slack as a transactional notification channel with Courierās super simple API.
function addTriple(inputs: number[]): number {
return inputs[0] + inputs[1] + inputs[2];
}
Cool Bits
-
Speaking of Solid.js, Ryan Carniato (Solidās creator) just announced that heās leaving his job at eBay and joining Vercel Netlify! The funding OSS by tricking VCs into investing in hosting providers trojan horse is alive and well!
-
Chromatic lets you automate all your workflows for Storybook ā gathering UI feedback, visual testing, and documentation ā so you can iterate faster with a lot less manual work. [sponsored]
-
Jay Hoffman wrote about the history of the web apps vs. web sites debate. Is there really a difference between them? Does it matter? Does anything? Does my life have meaning? Read to find out.
-
Flutter v3 was released at Google I/O with stable support for Linux and MacOS. Thatās cool, but donāt call yourself a true ācross-platform frameworkā until you start supporting Palm OS.
-
Malte Ubl (Chief Architect at Vercel) wrote more than you ever wanted to know about font loading on the web. Itās a lot like when Shaq told us more than we ever wanted to know about his crush on Tom Brady.
-
Mithril.js just released its first new version in three years. Donāt call it a comeback.
-
Fastly just acquired Glitch. We didnāt read the whole press release, but it did talk about āthe edgeā a lot, so I guess it sounds promising?
-
Math expressions can now be rendered in Markdown on GitHub. Because Math is a wonderful thing. Math is a really cool thing. So get off your 'ath letās do some Math. Math, math, math, math, math.
š¬ Spot the (TypeScript) Bug Solution ā Sponsored by Courier
function addTriple(inputs: number[]): number {
return inputs[0] + inputs[1] + inputs[2];
}
TypeScript will warn us if we pass anything but an array of numbers to that function, but if the array has less than 3 items in it, the third item will be undefined and our function will return NaN
. TypeScript canāt know how many items are in the array, so it canāt warn us.
There are many solutions to this. One would have us change our type signature to be a tuple type instead of an array. TypeScript can then warn us if our array doesnāt have enough options.
function addTriple(inputs: [number, number, number]): number {
return inputs[0] + inputs[1] + inputs[2];
}
Another option is to enable the noUncheckedIndexedAccess
TypeScript compiler option, which will force us to check that each item isnāt undefined.
function addTriple(inputs: number[]): number {
if (
inputs[0] === undefined ||
inputs[1] === undefined ||
inputs[2] === undefined
) {
throw new Error("Invalid input");
}
return inputs[0] + inputs[1] + inputs[2];
}
Share Bytes
We work hard to make Bytes something you'd want to share with your
developer friends. And to make it a little easier, we'll give you free
stuff when you do.
Have a product you think our developers will love?
Advertise in Bytes
50 W Broadway Ste 333 PMB 51647 Salt Lake City, Utah 84101
Unsubscribe from Bytes