<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Solid-Vue </title>
    <description>The latest articles on DEV Community by Solid-Vue  (solid-vue).</description>
    <link>https://dev.to/solid-vue</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F14641%2Fc0ca24e6-9419-4d3f-a88a-6f77c6416079.png</url>
      <title>DEV Community: Solid-Vue </title>
      <link>https://dev.to/solid-vue</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/solid-vue"/>
    <language>en</language>
    <item>
      <title>Solid-Vue Adds Per-Page Layouts and Its First UI Kit Add-on: Octans UI</title>
      <dc:creator>Joni Ilman Pahmi</dc:creator>
      <pubDate>Thu, 01 Oct 2026 09:20:44 +0000</pubDate>
      <link>https://dev.to/solid-vue/solid-vue-adds-per-page-layouts-and-its-first-ui-kit-add-on-octans-ui-4b57</link>
      <guid>https://dev.to/solid-vue/solid-vue-adds-per-page-layouts-and-its-first-ui-kit-add-on-octans-ui-4b57</guid>
      <description>&lt;p&gt;Solid-Vue is getting another small but important step toward making application structure easier to manage.&lt;/p&gt;

&lt;p&gt;This release introduces two additions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Per-page layouts&lt;/strong&gt;, powered by Vue Router's &lt;code&gt;definePage()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Octans UI add-on&lt;/strong&gt;, our first integration with a UI component library.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They solve different problems, but they share the same goal: giving Solid-Vue applications more structure without making developers build and configure everything from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Per-Page Layouts
&lt;/h2&gt;

&lt;p&gt;Not every page in an application should look the same.&lt;/p&gt;

&lt;p&gt;A dashboard might need a persistent sidebar and navigation. An authentication page might need a simple centred card. A public page might use an entirely different shell.&lt;/p&gt;

&lt;p&gt;Previously, developers had to decide how to structure those layouts themselves. Solid-Vue can now handle that part with a simple convention.&lt;/p&gt;

&lt;p&gt;Create layout components inside &lt;code&gt;src/layouts&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- src/layouts/dashboard.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"dashboard-shell"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
      &lt;span class="c"&gt;&amp;lt;!-- Dashboard navigation --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;slot&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also keep a default layout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- src/layouts/default.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;main&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"default-layout"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;slot&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then wrap your application's router once in &lt;code&gt;App.vue&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"ts"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;SolidVueLayout&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;solid-vue/client&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;SolidVueLayout&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;RouterView&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/SolidVueLayout&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Individual pages can then request the layout they need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"ts"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nf"&gt;definePage&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dashboard&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Dashboard&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it.&lt;/p&gt;

&lt;p&gt;Pages that don't specify a layout automatically use &lt;code&gt;src/layouts/default.vue&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This means layout selection stays close to the page itself instead of requiring another routing configuration file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why &lt;code&gt;definePage()&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;One important detail here is that &lt;code&gt;definePage()&lt;/code&gt; isn't a Solid-Vue-specific API.&lt;/p&gt;

&lt;p&gt;It comes from the Vue Router ecosystem and is already familiar to developers using file-based routing with Vue Router tooling.&lt;/p&gt;

&lt;p&gt;Solid-Vue simply uses the page metadata to connect the route to the corresponding layout.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;definePage({
  meta: {
    layout: 'auth',
  },
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;maps naturally to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/layouts/auth.vue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The convention keeps the amount of configuration small while still allowing applications to grow beyond a single application shell.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layouts Are About More Than Visuals
&lt;/h2&gt;

&lt;p&gt;A layout isn't necessarily just a collection of CSS classes.&lt;/p&gt;

&lt;p&gt;It can represent an application's structural boundary.&lt;/p&gt;

&lt;p&gt;For example, a typical application might eventually have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
├── layouts/
│   ├── default.vue
│   ├── auth.vue
│   └── dashboard.vue
│
├── pages/
│   ├── index.vue
│   ├── login.vue
│   ├── register.vue
│   └── dashboard/
│       ├── index.vue
│       └── settings.vue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The pages remain focused on their own content, while layouts handle the surrounding application structure.&lt;/p&gt;

&lt;p&gt;That separation becomes particularly useful when an application has several sections with different navigation, headers, or visual shells.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our First UI Kit Add-on: Octans UI
&lt;/h2&gt;

&lt;p&gt;The second addition in this release is a new Solid-Vue add-on for &lt;strong&gt;Octans UI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Install it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx solid-vue add octans-ui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the first time one of our add-ons integrates a UI component library rather than simply adding a development utility or configuration.&lt;/p&gt;

&lt;p&gt;The goal is the same as with the rest of the Solid-Vue add-on system: reduce the amount of repetitive setup required when starting a project.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Does the Add-on Do?
&lt;/h3&gt;

&lt;p&gt;Octans UI requires a small amount of application-level setup.&lt;/p&gt;

&lt;p&gt;The Solid-Vue add-on takes care of that wiring for you.&lt;/p&gt;

&lt;p&gt;In particular, it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Installs the required Octans UI package.&lt;/li&gt;
&lt;li&gt;Adds the &lt;code&gt;UiProvider&lt;/code&gt; integration to &lt;code&gt;App.vue&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Registers the Octans UI plugin in &lt;code&gt;main.ts&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Leaves the application ready to import and use Octans UI components.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"ts"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Card&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@octans/ui&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;Card&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Button&lt;/span&gt; &lt;span class="na"&gt;primary&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      Click me
    &lt;span class="nt"&gt;&amp;lt;/Button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/Card&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part isn't that installing a UI library is difficult.&lt;/p&gt;

&lt;p&gt;It isn't.&lt;/p&gt;

&lt;p&gt;The point is that these small integration steps are exactly the kind of setup that tends to get repeated across projects.&lt;/p&gt;

&lt;p&gt;Solid-Vue's add-on system gives us a place to automate them.&lt;/p&gt;

&lt;h2&gt;
  
  
  We Don't Want the CLI to Guess
&lt;/h2&gt;

&lt;p&gt;There is another detail we're particularly careful about.&lt;/p&gt;

&lt;p&gt;A CLI that modifies an existing project needs to know when it can safely make an automatic change — and when it can't.&lt;/p&gt;

&lt;p&gt;For example, the add-on can normally update &lt;code&gt;App.vue&lt;/code&gt; and &lt;code&gt;main.ts&lt;/code&gt; when they follow the expected structure.&lt;/p&gt;

&lt;p&gt;But developers are free to customise those files.&lt;/p&gt;

&lt;p&gt;If Solid-Vue can't confidently determine where an integration should be added, the add-on doesn't try to make a risky modification.&lt;/p&gt;

&lt;p&gt;Instead, it reports what needs to be added manually.&lt;/p&gt;

&lt;p&gt;That's intentional.&lt;/p&gt;

&lt;p&gt;We'd rather give you a clear instruction than silently produce a broken application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Layouts and Octans UI Together
&lt;/h2&gt;

&lt;p&gt;These two features were also tested together.&lt;/p&gt;

&lt;p&gt;A typical application can have a layout responsible for the application shell while Octans UI provides the components used inside it.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
│
├── SolidVueLayout
│   │
│   ├── Dashboard Layout
│   │   ├── Navigation
│   │   ├── Header
│   │   └── RouterView
│   │       │
│   │       └── Octans UI components
│   │
│   └── Other Layouts
│
└── Vue Router
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The layout controls the surrounding structure.&lt;/p&gt;

&lt;p&gt;The router controls which page is displayed.&lt;/p&gt;

&lt;p&gt;Octans UI provides reusable interface components.&lt;/p&gt;

&lt;p&gt;Each part has a relatively small responsibility, without requiring a large application architecture just to get started.&lt;/p&gt;

&lt;p&gt;We tested this combination in both development and production builds, including a layout wrapping the UI provider and router.&lt;/p&gt;

&lt;p&gt;The result is the same workflow you'd expect from a normal Solid-Vue application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;If you're starting a new project, create one with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create solid-vue@latest my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And add Octans UI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx solid-vue add octans-ui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can then create your layouts under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/layouts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and select them from individual pages with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"ts"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nf"&gt;definePage&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dashboard&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;We're keeping Solid-Vue's approach deliberately incremental.&lt;/p&gt;

&lt;p&gt;Rather than adding every possible feature to the framework, we're looking for the repetitive pieces that developers commonly need when building small and growing applications.&lt;/p&gt;

&lt;p&gt;Layouts are one of those pieces.&lt;/p&gt;

&lt;p&gt;UI library integration is another.&lt;/p&gt;

&lt;p&gt;The add-on system gives us room to experiment with more integrations without making every Solid-Vue project depend on everything.&lt;/p&gt;

&lt;p&gt;And this is only the beginning of that approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;Create a new Solid-Vue application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create solid-vue@latest my-app
&lt;span class="nb"&gt;cd &lt;/span&gt;my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then add Octans UI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx solid-vue add octans-ui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more information, see the documentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.solid-vue.tech//guide/routing" rel="noopener noreferrer"&gt;Routing — Layouts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.solid-vue.tech//guide/addons" rel="noopener noreferrer"&gt;Add-ons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solid-Vue is still in early access, so we'd love to hear what feels useful, what feels rough, and what you'd like to see next.&lt;/p&gt;

&lt;p&gt;Try it, build something small, and let us know what you think.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;See:&lt;/strong&gt; &lt;a href="https://docs.solid-vue.tech/blog/solid-vue-adds-per-page-layouts-and-its-first-ui-kits-add-on-octans-ui" rel="noopener noreferrer"&gt;Solid-Vue Adds Per-Page Layouts and Its First UI Kit Add-on: Octans UI&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
    <item>
      <title>What Is the Simplest Frontend Framework for a Full-Stack Developer in 2026?</title>
      <dc:creator>Joni Ilman Pahmi</dc:creator>
      <pubDate>Tue, 29 Sep 2026 09:38:17 +0000</pubDate>
      <link>https://dev.to/solid-vue/what-is-the-simplest-frontend-framework-for-a-full-stack-developer-in-2026-2kbo</link>
      <guid>https://dev.to/solid-vue/what-is-the-simplest-frontend-framework-for-a-full-stack-developer-in-2026-2kbo</guid>
      <description>&lt;p&gt;If you already know JavaScript, HTML, CSS, Node.js, and some backend development, choosing a frontend framework in 2026 can feel strangely difficult.&lt;/p&gt;

&lt;p&gt;The syntax is rarely the hardest part.&lt;/p&gt;

&lt;p&gt;You also have to think about routing, state management, API integration, project structure, deployment, documentation, ecosystem, community, and—if you're looking for work—the size of the job market.&lt;/p&gt;

&lt;p&gt;So a very practical question appears:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Which frontend framework is the simplest to learn while still being practical for full-stack applications?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The problem is that "simple" can mean different things.&lt;/p&gt;

&lt;p&gt;It can mean fewer lines of code.&lt;br&gt;
It can mean fewer concepts.&lt;br&gt;
It can mean less configuration.&lt;br&gt;
It can mean faster development.&lt;br&gt;
Or it can simply mean that the architecture makes sense to you.&lt;/p&gt;

&lt;p&gt;Those are not always the same thing.&lt;/p&gt;

&lt;p&gt;This article compares React with Vite, Next.js, Vue, Svelte, and a more opinionated Vue + Vite approach from the perspective of a developer who already understands JavaScript and backend development.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Does "Simple" Actually Mean?
&lt;/h2&gt;

&lt;p&gt;For a full-stack developer, simplicity is not just about component syntax.&lt;/p&gt;

&lt;p&gt;A framework might be considered simple when you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;get a project running quickly;&lt;/li&gt;
&lt;li&gt;understand the project structure without learning dozens of conventions;&lt;/li&gt;
&lt;li&gt;add routing without a lot of configuration;&lt;/li&gt;
&lt;li&gt;connect the frontend to an API without fighting the framework;&lt;/li&gt;
&lt;li&gt;manage application state with a predictable solution;&lt;/li&gt;
&lt;li&gt;deploy without understanding a large platform-specific abstraction;&lt;/li&gt;
&lt;li&gt;come back to the project six months later and still understand it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last point is often overlooked.&lt;/p&gt;

&lt;p&gt;A framework can be easy to start with but difficult to maintain.&lt;/p&gt;

&lt;p&gt;Another framework can provide a huge number of features out of the box but require more concepts before you feel comfortable.&lt;/p&gt;

&lt;p&gt;So instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which framework is the best?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A more useful question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Which level of abstraction matches the application I'm building?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That changes the entire discussion.&lt;/p&gt;
&lt;h2&gt;
  
  
  React + Vite
&lt;/h2&gt;

&lt;p&gt;React remains a familiar choice for frontend development, while Vite provides a straightforward development environment for React applications.&lt;/p&gt;

&lt;p&gt;For developers who already know React, this combination can have a very small immediate learning curve.&lt;/p&gt;

&lt;p&gt;You already understand components, state, props, events, asynchronous code, and the general React development model.&lt;/p&gt;

&lt;p&gt;The trade-off appears when you move from components to the application as a whole.&lt;/p&gt;

&lt;p&gt;React itself is a UI library rather than an all-in-one application framework. Depending on your project, you may need to make additional decisions about routing, state management, forms, data fetching, validation, and other application concerns.&lt;/p&gt;

&lt;p&gt;That's not necessarily a bad thing.&lt;/p&gt;

&lt;p&gt;Experienced developers may actually prefer this flexibility because they can choose exactly what they need.&lt;/p&gt;

&lt;p&gt;But if your goal is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I want a straightforward application workflow with sensible defaults."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;then every additional decision becomes part of the learning curve.&lt;/p&gt;

&lt;p&gt;So the interesting distinction is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;React can be simple at the component level while the surrounding application architecture remains your responsibility.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Next.js
&lt;/h2&gt;

&lt;p&gt;Next.js provides a broader application framework around React.&lt;/p&gt;

&lt;p&gt;It brings conventions and features for things such as routing, server-side capabilities, rendering strategies, and deployment-oriented workflows.&lt;/p&gt;

&lt;p&gt;That can reduce the amount of infrastructure you have to assemble manually.&lt;/p&gt;

&lt;p&gt;But convenience has another side.&lt;/p&gt;

&lt;p&gt;You're not only learning React.&lt;/p&gt;

&lt;p&gt;You're also learning the Next.js way of handling routing, rendering, server functionality, data access, caching, and project organisation.&lt;/p&gt;

&lt;p&gt;For developers who want a full-stack React framework, that can be exactly what they're looking for.&lt;/p&gt;

&lt;p&gt;But for someone whose main goal is learning frontend development as quickly as possible, those additional concepts are worth considering.&lt;/p&gt;

&lt;p&gt;This creates an important distinction:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More built-in capability can reduce manual wiring, but it can also increase the framework mental model.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Vue
&lt;/h2&gt;

&lt;p&gt;Vue takes a slightly different approach to the learning experience.&lt;/p&gt;

&lt;p&gt;Its component model is approachable for developers who already understand HTML, CSS, and JavaScript, while the official ecosystem provides established solutions for common application concerns.&lt;/p&gt;

&lt;p&gt;That gives Vue an interesting middle ground.&lt;/p&gt;

&lt;p&gt;You can start with a relatively small application and gradually introduce routing, state management, and other capabilities as the project grows.&lt;/p&gt;

&lt;p&gt;You don't necessarily need to adopt a complete application platform on day one.&lt;/p&gt;

&lt;p&gt;For small applications, that incremental approach can be useful.&lt;/p&gt;

&lt;p&gt;It allows the developer to learn the framework itself first, then add more pieces when the application actually needs them.&lt;/p&gt;

&lt;p&gt;In other words:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vue can provide structure without forcing the entire application architecture on you immediately.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Svelte
&lt;/h2&gt;

&lt;p&gt;Svelte is another option that often comes up when simplicity is the main objective.&lt;/p&gt;

&lt;p&gt;Its component syntax can feel concise, and its compiler-oriented approach moves some work into the build process rather than relying on a large runtime abstraction.&lt;/p&gt;

&lt;p&gt;That can make the development experience feel different from React or Vue.&lt;/p&gt;

&lt;p&gt;However, fewer lines of code do not automatically mean a smaller learning curve.&lt;/p&gt;

&lt;p&gt;A developer coming from React still needs to understand Svelte's component model, conventions, and ecosystem.&lt;/p&gt;

&lt;p&gt;So Svelte is worth evaluating on its own terms rather than simply assuming:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;fewer lines = simpler framework.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sometimes the mental model matters more than the amount of code you write.&lt;/p&gt;
&lt;h2&gt;
  
  
  Full-Stack Developers Have a Different Problem
&lt;/h2&gt;

&lt;p&gt;A full-stack developer already understands concepts such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP;&lt;/li&gt;
&lt;li&gt;APIs;&lt;/li&gt;
&lt;li&gt;authentication;&lt;/li&gt;
&lt;li&gt;databases;&lt;/li&gt;
&lt;li&gt;server-side validation;&lt;/li&gt;
&lt;li&gt;application architecture.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means the frontend framework does not exist in isolation.&lt;/p&gt;

&lt;p&gt;It has to fit into an existing mental model.&lt;/p&gt;

&lt;p&gt;There are generally two ways to structure the application.&lt;/p&gt;

&lt;p&gt;The first is to keep the frontend and backend separate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   |
   v
React / Vue / Svelte
   |
   v
REST / GraphQL API
   |
   v
Node / Laravel / Other backend
   |
   v
Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second is to use a framework that combines frontend and server capabilities:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   |
   v
Full-stack framework
   |
   +---- UI
   |
   +---- Server / API
   |
   +---- Data access
   |
   v
Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neither architecture is automatically simpler.&lt;/p&gt;

&lt;p&gt;The important question is whether the framework's conventions actually reduce the amount of work required for your particular application.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Cost of "Simple"
&lt;/h2&gt;

&lt;p&gt;Every abstraction has a learning cost.&lt;/p&gt;

&lt;p&gt;A framework might give you routing, server functions, data fetching, caching, rendering strategies, and deployment conventions.&lt;/p&gt;

&lt;p&gt;Those capabilities can save time later.&lt;/p&gt;

&lt;p&gt;But every one of those features also creates another concept you need to understand.&lt;/p&gt;

&lt;p&gt;This creates a trade-off:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More built-in capability
        |
        v
Less manual wiring
        |
        v
More framework concepts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the opposite direction looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Less built-in capability
        |
        v
More manual choices
        |
        v
Smaller framework mental model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neither side is universally correct.&lt;/p&gt;

&lt;p&gt;The sweet spot depends on the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Small Business Application Is Not a Large Platform
&lt;/h2&gt;

&lt;p&gt;Consider a typical small-business application.&lt;/p&gt;

&lt;p&gt;It might need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;authentication;&lt;/li&gt;
&lt;li&gt;a dashboard;&lt;/li&gt;
&lt;li&gt;CRUD operations;&lt;/li&gt;
&lt;li&gt;forms;&lt;/li&gt;
&lt;li&gt;an API;&lt;/li&gt;
&lt;li&gt;database access;&lt;/li&gt;
&lt;li&gt;reports;&lt;/li&gt;
&lt;li&gt;PDF or spreadsheet exports;&lt;/li&gt;
&lt;li&gt;a few charts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's already a real application.&lt;/p&gt;

&lt;p&gt;But it does not necessarily require the architecture of a large distributed platform.&lt;/p&gt;

&lt;p&gt;Sometimes a predictable set of conventions is more useful than a large collection of infrastructure designed for problems the application does not currently have.&lt;/p&gt;

&lt;p&gt;This is where lightweight application architecture becomes interesting.&lt;/p&gt;

&lt;p&gt;The goal isn't to remove capabilities.&lt;/p&gt;

&lt;p&gt;The goal is to avoid making developers configure capabilities that their application doesn't actually need yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where a Lightweight Vue + Vite Approach Fits
&lt;/h2&gt;

&lt;p&gt;This is also the idea behind &lt;strong&gt;Solid-Vue&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Solid-Vue is an early-access Vue + Vite application framework focused on small and growing applications.&lt;/p&gt;

&lt;p&gt;The basic idea is straightforward:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Keep Vue and Vite as the foundation, then provide sensible defaults and integrated pieces for common application development tasks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example, a project can bring together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vue;&lt;/li&gt;
&lt;li&gt;Vite;&lt;/li&gt;
&lt;li&gt;file-based routing;&lt;/li&gt;
&lt;li&gt;Pinia;&lt;/li&gt;
&lt;li&gt;a server layer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The point is not to replace Vue.&lt;/p&gt;

&lt;p&gt;The point is to reduce the amount of orchestration work around Vue.&lt;/p&gt;

&lt;p&gt;Instead of repeatedly deciding how to connect the common pieces together, the framework provides a starting structure for developers who want a more opinionated workflow.&lt;/p&gt;

&lt;p&gt;For a full-stack developer building business applications, that can be a useful distinction.&lt;/p&gt;

&lt;p&gt;At the same time, Solid-Vue is still early-access.&lt;/p&gt;

&lt;p&gt;That means there is less ecosystem maturity than established technologies such as React, Next.js, Vue, or Svelte.&lt;/p&gt;

&lt;p&gt;That's an important trade-off, especially if your priority is ecosystem size, tutorials, community support, or hiring opportunities.&lt;/p&gt;

&lt;h2&gt;
  
  
  What About Jobs and Community?
&lt;/h2&gt;

&lt;p&gt;Learning difficulty is only one variable.&lt;/p&gt;

&lt;p&gt;If your goal is employment, you should also consider the technologies actually requested by employers in the market where you want to work.&lt;/p&gt;

&lt;p&gt;A smaller framework might be pleasant to learn while having fewer job listings, tutorials, or developers available to help.&lt;/p&gt;

&lt;p&gt;A larger ecosystem can provide more resources and potentially more employment opportunities.&lt;/p&gt;

&lt;p&gt;At the same time, job availability depends on many other factors, including country, company, seniority, and your overall skill set.&lt;/p&gt;

&lt;p&gt;So choosing a framework based only on the word &lt;strong&gt;"simple"&lt;/strong&gt; can be misleading.&lt;/p&gt;

&lt;p&gt;A practical way to think about it is to separate your goals.&lt;/p&gt;

&lt;p&gt;If your priority is employment, investigate the technologies employers are actually asking for.&lt;/p&gt;

&lt;p&gt;If your priority is learning frontend fundamentals, choose a framework whose programming model you can understand and practise consistently.&lt;/p&gt;

&lt;p&gt;If your priority is building small full-stack applications, evaluate how much application wiring the framework requires for the kinds of projects you actually expect to build.&lt;/p&gt;

&lt;p&gt;Different priorities can lead to different choices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should You Stay With React or Switch?
&lt;/h2&gt;

&lt;p&gt;If you already know React and have built several projects, switching is not automatically necessary.&lt;/p&gt;

&lt;p&gt;Your existing knowledge still transfers.&lt;/p&gt;

&lt;p&gt;Components, state, props, events, asynchronous operations, browser behaviour, JavaScript, and application architecture are not concepts that disappear when you change frameworks.&lt;/p&gt;

&lt;p&gt;In fact, you don't have to turn framework selection into a permanent decision.&lt;/p&gt;

&lt;p&gt;A better experiment is to build the same small application using two different frameworks.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Customer Management
       |
       +-- Search
       +-- Add customer
       +-- Edit customer
       +-- Delete customer
       +-- API
       +-- Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Build it with the framework you already know.&lt;/p&gt;

&lt;p&gt;Then build the same application with Vue or Svelte.&lt;/p&gt;

&lt;p&gt;Now compare the development experience.&lt;/p&gt;

&lt;p&gt;Don't only count lines of code.&lt;/p&gt;

&lt;p&gt;Ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How long did the first working version take?&lt;/li&gt;
&lt;li&gt;How many dependencies did you add?&lt;/li&gt;
&lt;li&gt;How many configuration decisions did you make?&lt;/li&gt;
&lt;li&gt;How often did you need the documentation?&lt;/li&gt;
&lt;li&gt;How easy was routing?&lt;/li&gt;
&lt;li&gt;How easy was API integration?&lt;/li&gt;
&lt;li&gt;How easy was state management?&lt;/li&gt;
&lt;li&gt;Could you explain the architecture to another developer?&lt;/li&gt;
&lt;li&gt;Would you still understand the project six months later?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those answers tell you much more than a generic claim that one framework is "easier".&lt;/p&gt;

&lt;h2&gt;
  
  
  So, Which One Is the Simplest?
&lt;/h2&gt;

&lt;p&gt;There isn't one framework that is objectively the simplest for every developer.&lt;/p&gt;

&lt;p&gt;For someone already comfortable with React, React + Vite may have the smallest immediate learning cost.&lt;/p&gt;

&lt;p&gt;Next.js provides a more integrated full-stack React experience, but that also introduces additional framework concepts.&lt;/p&gt;

&lt;p&gt;Vue offers an approachable component model and an ecosystem where application capabilities can be introduced progressively.&lt;/p&gt;

&lt;p&gt;Svelte provides a distinct and concise development model, but still requires learning its own ecosystem and conventions.&lt;/p&gt;

&lt;p&gt;A lightweight Vue + Vite framework such as Solid-Vue takes another approach: add more conventions around Vue while keeping the underlying stack relatively familiar.&lt;/p&gt;

&lt;p&gt;So the more useful question isn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which framework is objectively easiest?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Which framework gives me the least unnecessary complexity for the applications I actually want to build?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For a full-stack developer, that's a much more practical question.&lt;/p&gt;

&lt;p&gt;And when you're still unsure, there's a simple way to find out:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build one small application with two candidates.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The development experience will probably tell you more than another twenty framework comparison articles.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
