DEV Community

Cover image for JavaScript Frameworks - Heading into 2023

JavaScript Frameworks - Heading into 2023

Ryan Carniato on December 29, 2022

The wonderful thing about glimpsing into the future is that the path is never completely clear. We can look at trends, and look at innovations and ...
Collapse
 
lexlohr profile image
Alex Lohr

Insightful as always, Ryan. I find it inspiring that we are using tried-and-tested patterns and put them inside a new abstraction that allows for isomorphic front-ends without making too many compromises in terms of bundle size and performance.

I too think that we'll see a convergence of frameworks towards reactive signals. I also think that tools like Mitosis will help people to become more mobile between frameworks.

Looking forward to 2023 and I'll see you on the other side of this year!

Collapse
 
garsidestephen profile image
SG Digital

Great insightful article. I always stick by 'its what you create not how you create it that counts' . Frameworks will come and go, but they all produce the same thing, html, CSS and Js. Frameworks should be used where appropriate and not always the defacto go to. Quite often, inexperienced Devs think they need to use one, even for the smallest amount of JS where the footprint (or point) of the framework does not fit. As Devs we have to be mindful that business often don't care about the latest framework, just productivity, hence the rise of low code platforms.

That said it's nice that articles like this share latest thinking to allow people to make the decisions as to whether it's just more of the same (so stay as is) or it's a significant enough shift to take more notice of.

Collapse
 
hseritt profile image
Harlin Seritt

Well said.

Collapse
 
nickytonline profile image
Nick Taylor

Great write up Ryan! Excited to see where 2023 takes us. 😎

Collapse
 
kc_development profile image
KC Development NSD • Edited

Oh why did I bother... lol Every year we change this. I'm always skeptical, then I come around mid-march, start to learn and believe in april/may, develop it into a new system or platform by July and compete it by November/Dec, or implement composed based development in some form or another which is good. Just modules and now going back to server side. I came from Serverside I should have stayed serverside. I'm grateful for learning all that i have though I've been raking it in with #Next #Nuxt and #Gatsbyjs fast optimization-based libraries and frameworks coupled with typed-script driven language libraries like react. Not regretting Gatsby or Next one bit.

Collapse
 
bherbruck profile image
bherbruck

Great article! I'm loving solid-start!
My DX wish is if createServerAction$ form.get() could be fully typed from a generic.

Collapse
 
theme_selection profile image
ThemeSelection

Informative...!!
Good Job.

Collapse
 
dwoodwardgb profile image
David Woodward

What did you mean by “moving away from client-side caches [doesn’t] meaningfully changes the math”? I really have no idea…

Collapse
 
ryansolid profile image
Ryan Carniato

The micro-trend to refetch everything on any mutation or use browser in built cache. In contrast to JSON cache like you'd find in React Query, URQL, or Apollo.

I realize these are both client side. But I meant cache in managed in JavaScript. This can reduce the size of data fetching libraries. But more commenting on the savings might be in the range of 5kb or something and doesn't really impact size much overall.

Collapse
 
dwoodwardgb profile image
David Woodward

Got it! So all you are saying is that moving from artifical JS caches to built in browser one's doesn't save much in terms of bundle size?

Thread Thread
 
ryansolid profile image
Ryan Carniato

Yeah, I mean the savings on library size is something. Apollo is 30kb, but URQL is 9kb, and SWR is 5kb I think and it isn't like the libraries using the browser cache aren't a few kb themselves.

It's been suggested that this somehow saves more but that is the result of just moving more logic to a backend API, you could do that regardless of the mechanism. Like saving on using moment or something in the browser.

So I think the win is that people are conscious enough to do better things but not so much that the technology itself changes very much in terms of bundle size. This portion of the win can be done at any step, but I suppose it gets more obvious.

By default everything ends up in the client. These cacheless solutions suggest doing stuff on the server. Things like Partial Hydration end up dropping enough peripheral code that those things and more don't end up in the browser.

Collapse
 
brense profile image
Rense Bakker

I just hope that 2023 will be the year when java and .net devs will finally stop looking down on javascript/typescript devs. I know its idle hope :P

Collapse
 
axibord profile image
Aghiles Lounis

What a great great article !

Collapse
 
igibsonconor profile image
Conor Gibson

Good thoughts, thanks for this article!

Collapse
 
gioboa profile image
Giorgio Boa

This article is food for thought, thanks for sharing it Ryan!

Collapse
 
tylerlwsmith profile image
Tyler Smith

Great post.

Collapse
 
hamatoyogi profile image
Yoav Ganbar

Loved this post @ryansolid !

Well written and insightful as always.

Collapse
 
jenc profile image
Jen Chan • Edited

This article is where I'm getting my "how good is Rust" updates from LOL. Thank you.
I appreciate the overview of trends and reasoning behind rise/falls.

Collapse
 
janeksmietanek profile image
Arek Krysik

Great article! Curious about what 2023 is going to bring us!

Collapse
 
cubiclesocial profile image
cubiclesocial

I generally have always tried to build for the lowest common denominator. And that means people who have turned off Javascript in their web browser should not break the app. Some organizations disable Javascript for organizational security reasons (e.g. defense contractors working in Classified environments). Javascript is nice when it is enabled but I don't just assume it is. Server-side rendering has gotten a lot faster in the last two major PHP revisions (7.x and 8.x) due to major rewrites of fundamental data structures to take advantage of the design of hardware features (e.g. CPU pipelining).

Yet, I think people should write code in whatever way works for them. Unless someone is actually a massive entity like Google or Facebook with 10,000+ servers across hundreds of data centers, rendering everything on a single server is fine for 99% of all websites. Server-side is also a lot easier to work with and correctly handles application security scenarios.

Javascript frameworks are largely a hack until the browser vendors pick the best bits and integrate them into the mainline browser. jQuery had that effect (i.e. how native event handling was improved). Bootstrap had that effect too (i.e. how we got CSS Flexbox and Grid). So future predictions should probably be more along the lines of what is likely to make it into a future web browser release from existing frameworks. That's the sort of game-changing future that matters. Everything else is stuff that can change on a whim.

Collapse
 
karlkras profile image
Karl Krasnowsky

I used to feel as you, but given the nature of the industry, I've adjusted my attitude.
I prefer to target the 80% in my application development and don't believe that necessarily includes the "lowest common denominator", (nope, I don't believe it's worth spending any time supporting diehard IE users either) nor do I find considering that audience particularly interesting, so I'll leave leave the coverage of those folks up to those who feel as you..

Collapse
 
peerreynders profile image
peerreynders

given the nature of the industry … prefer to target the 80% … nor do I find considering that audience particularly interesting.

From a business perspective any audience that can be cost effectively reached is interesting.

So far "the industry's" preoccupation has been on developer convenience as it relates to time to market.

Meta frameworks like Remix, SvelteKit and SolidStart aim to deliver developer convenience while also creating the opportunity to create solutions that reach the broadest possible audience over the web.


Collapse
 
redbar0n profile image
Magne

Thought I’d also share my JS framework predictions for 2023:

(growth in terms of npm downloads and github stars)

  1. React, React Native, SolidJS, Svelte, Vue, Astro and Qwik will all experience enormous growth during the year.

  2. Redwood and Remix will struggle to grow as much, but still grow some.

  3. Remix will grow more than Redwood. (Not a very spicy take, but still).

  4. React and Next.js will still dominate all competitors in absolute terms, and continue to grow,

  5. but React Native, Svelte and Qwik will grow much much more (percentage wise).

  6. «The year of React Native» on native/crossplatform, and

  7. «The year of Qwik» on web, certainly mind share wise, but also growth wise.

Styling:

  1. Tamagui will be pretty hyped, mostly in React Native and mobile crossplatform circles, and grow greatly (more than 3x amount of npm downloads and github stars).

  2. But will be dwarfed by the meteoric rise of Nativewind. «The year of Nativewind» on native/crossplatform. Which will be fuelled by the fact that

  3. TailwindCSS is still dominating amongst modern web styling tools, and will >2x its amount of downloads, and grow around 18% in github stars by year end.

Collapse
 
dhruvjoshi9 profile image
Dhruv Joshi

What do you think about AI and automated code generation? btw it was nice read.

Collapse
 
hseritt profile image
Harlin Seritt

What does this mean? "now we need the code not only to client render but to hydrate the page." Perhaps, refreshing the state? Thanks, good read so far.

Collapse
 
peerreynders profile image
peerreynders • Edited

"Hydration is the name given to the process in JavaScript frameworks to initializing the page in the browser after it has previously been server rendered…"

i.e. "replaying" the client side "page application" state to the point that it is synchronized with the (HTML and resulting client DOM) representation as rendered by the server.

Collapse
 
hseritt profile image
Harlin Seritt

Beautiful, thanks for the clarification my friend :-)

Collapse
 
drsensor profile image
૮༼⚆︿⚆༽つ

Htmx and AlpineJS made quite an impact on existing workflows. Language diversity will be a thing to get the job done in novel/groundbreaking works.

Collapse
 
beeplin profile image
Beep LIN

Less js for client.
More duty on server.
Server sending html and fine-grained event handlers and incremental data to client.
Sounds like all is going to qwik.
;))

Collapse
 
beeplin profile image
Beep LIN

Or furlther, then no need to use nodejs
on server side... Finally we will get a qwik written in go or rust. 😂😂😂

Collapse
 
mdmujibur741 profile image
Mujan9856

i think so