
Valdi skips the JavaScript runtime by compiling TypeScript to native views. Learn how it compares to React Native’s new architecture and when the trade-off makes sense.

What trends will define web development in 2026? Check out the eight most important trends of the year, from AI-first development to TypeScript’s takeover.

AI-first debugging augments traditional debugging with log clustering, pattern recognition, and faster root cause analysis. Learn where AI helps, where it fails, and how to use it safely in production.

Container queries let components respond to their own layout context instead of the viewport. This article explores how they work and where they fit alongside media queries.
Hey there, want to help make our blog better?
Join LogRocket’s Content Advisory Board. You’ll help inform the type of content we create and get access to exclusive meetups, social accreditation, and swag.
Sign up now
4 Replies to "Promise chaining is dead. Long live async/await"
well written, thanks
awaits are actually converted back to yields, which in turn are converted to closures…so the garbage collector argument does not hold. Otherwise, great post, thanks!
Nice article. But, if you have to replace Promise.all with an external library.. then Promise.all is not dead.
How do we do this level of asynchronous task in await?:
const result = await Promise.all([
independentTask,
taskA.then(resultA => {
return dependentOnTaskA(resultA)
})
])
The point is that independentTask is one work flow, and task->dependentOnTaskA is another workflow. And hence, neither should be waiting on either.