close
close

Starts SolidStart; Next.js 15 releases, with DX questions

By his own admission, Ryan Carniato, the creator of Solid, is not a big fan of metaframeworks – at least when it comes to Solid.

However, on May 21, Carniato introduced SolidStart, a metaframework for building applications in Solid. It’s intended for “builders and people who have their own opinions,” he said, adding that it won’t be the last Solid framework and that we can already see people building metaframeworks on top of SolidStart, such as CreateJDApp and MediaKit.

Meta-frameworks on meta-frameworks? Lawd Hammercy, as they say in the American South.

Southern dog with a wig

memegenerator.net

“SolidStart is a JavaScript framework designed to build SolidJS applications and deploy them across multiple vendors. “It’s not that different from most other JavaScript frameworks,” he wrote. “But the devil is in the details.”

Nuxt, Next.js, SvelteKit, Angular, and Astro are examples of metaframeworks that “solve common problems like routing, layouts, serverless backends, and combining CSS with out-of-the-box solutions,” explained Ben Holmes, a front-end developer at Astro.

SolidStart promises a simpler approach that gives developers more control. According to Carniato’s post introducing the new metaframework, the SolidStart approach involves choosing your own application router.

“SolidStart was designed primarily as a starter,” he writes. “This means that a basic setup without installing any libraries creates Hello World examples that are ~5KB of JavaScript Minified and GZipped. Don’t want to use additional libraries? Don’t worry, you don’t have to.

Developers can set their own types and use the router of their choice, Carniato wrote. SolidStart uses file system routing with similar conventions to Nuxt, except using () instead of () to pass parameters. The configuration from the file system is then passed back to the application to be used on the selected router, he wrote. “You can call FileRoutes as a component or a regular function to get the configuration generated by SolidStart.”

“SolidStart was built first as a single-page application,” he said. “Each feature is designed to work with all the libraries you already use. This required us to carefully consider how to add server-only features. “This is what led us to pioneering ‘Server Features’ in early 2022, and this feature has since found its way into several popular frameworks.”

Adding “use server”; to a function means that it will only execute on the server, either be called naturally on the server or used as an RPC call from the client, he continued.

The rest of the post goes into more detail on how this feature works, but other features offered by SolidStart include:

  • Client Rendering Mode;
  • Server-side rendering;
  • Generating a static website;
  • Out-of-order streaming;
  • Optimistic user interface;
  • Key-based cache/invalidation;
  • Gradually improved forms;
  • API routes;
  • Parallel retrieval of nested route data;
  • Single flight mutation;
  • Islands (experimental);
  • Uncertainty; AND
  • Transitions.

Next.js 15 releases, but is application router ruining DX?

Next.js 15 is now available as a Release Candidate with support for React 19, including Meta’s React compiler. Vercel also introduced a web application firewall that is embedded in the Vercel ecosystem and deployed automatically to provide security at the edge.

The firewall includes a configurable rules engine so developers can control how traffic is handled. You could, for example, block all traffic from a specific country, or take a more granular approach and only allow connections from a known list of browsers (for example). Rules are added from the Vercel panel.

Next.js 15 includes partial pre-rendering as an experimental feature, caching improvements, and hydration bug fixes. If you’re interested in more than just a summary, Theo Browne has researched all the details.

However, a recent post by Andrew Israel, founder of authentication company PropelAuth, gives us food for thought: Will the update be easier or more difficult for developers to use?

Israel maintained that Next.js is becoming increasingly difficult to use, specifically pointing the finger at the application router:

“From my point of view, the Next.js application router has two main problems that make it difficult to implement:
• To perform seemingly basic tasks, you need to know a lot about the internals.
• There are many ways to shoot yourself in the foot and they involve opting out rather than agreeing.”

Apparently he’s not alone. Developer Michal Landsman created a survey in Vercel’s GitHub discussions about developer experiences and getting the current URL in server components, an issue Israel has also focused on. This is obviously an informal and unscientific survey with only 85 responses, but still 74% said it was a bad experience for developers.

The survey shows that 74% said the developer experience was poor when it comes to the specific use case of a router with the Vercel app

Poll posted to Vercel’s GitHub discussion thread. https://github.com/vercel/next.js/discussions/65385?ref=propelauth.com

According to Israel, the problem starts with Next.js 13, which introduced a new application router.

“You had server components that allowed you to render React components on the server and reduce the amount of data needed to be sent to the client,” he wrote. “You had layouts that allowed you to define aspects of the UI that were shared by multiple routes and didn’t have to be re-rendered with each navigation. Caching has become… more sophisticated. And while these features were interesting, the biggest loss was simplicity.

He’s not the only one complaining about the router with the app.

According to Vercel’s recent post, the Next.js app router is built on the React Canary channel for frameworks. This allows developers to “use and provide feedback on new React APIs before the release of version 19,” but perhaps also adds additional complexity that developers don’t want.

Next.js 15 RC now supports React 19 RC, which includes new features for both client and server such as Actions, Vercel adds in a blog post.

Israel asks whether this is a natural phenomenon as frameworks evolve – complexity increases, leading to a worsening developer experience.

“Next.js officially recommends using App Router before it was ready for production use. “Next.js doesn’t make recommendations on whether TypeScript, ESLint, or Tailwind will be right for your project… but it absolutely thinks you should use App Router,” wrote Israel. “The official React docs don’t share the same view. They currently recommend Pages Router and describe App Router as a “state-of-the-art response experience.”

Therefore, it makes more sense to think of the App Router as a beta version, Israel said.

RustRover commercial version available

JetBrains, which provides software development tools, released RustRover, a commercial version of its IDE for Rust, on May 21.

According to the company, with the commercial release, RustRover has improved crate and function management, added autocompletion and basic code visibility in macro declarations. Also added are custom live analytics, disabled item management, quick documentation improvements, and Code Vision optimizations.

“We launched RustRover in 2023 to meet the evolving needs of developers in the market, and it has become a milestone – a symbolic sign that the Rust developer community has reached a new level of maturity,” said Vitaly Bragilewski, spokesman for RustRover developers, in a press release. “In the commercial version, we have enhanced the tool to enable developers to navigate this evolving landscape even more efficiently, and we will continue to contribute to the Rust community by providing free subscription plans for non-commercial projects.”

For a more detailed look at what the RustRover IDE offers, check out David Cassel’s March story.

Group Created with Sketch.