<?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: yaniv soussana</title>
    <description>The latest articles on DEV Community by yaniv soussana (@yanivsuzana).</description>
    <link>https://dev.to/yanivsuzana</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F384125%2Fe91ed97a-3e7e-4d29-839f-ef80c3f3bd37.png</url>
      <title>DEV Community: yaniv soussana</title>
      <link>https://dev.to/yanivsuzana</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yanivsuzana"/>
    <language>en</language>
    <item>
      <title>HTML-First:Why I Built My Own HTML-First Multi-Part Application Architecture (And You Might Want To Too)</title>
      <dc:creator>yaniv soussana</dc:creator>
      <pubDate>Mon, 25 Aug 2025 17:31:22 +0000</pubDate>
      <link>https://dev.to/yanivsuzana/html-firstwhy-i-built-my-own-html-first-multi-part-application-architecture-and-you-might-want-to-360e</link>
      <guid>https://dev.to/yanivsuzana/html-firstwhy-i-built-my-own-html-first-multi-part-application-architecture-and-you-might-want-to-360e</guid>
      <description>&lt;p&gt;Building modern web apps often means choosing between &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk"&gt;SPAs&lt;/a&gt; or traditional MPAs. I wanted a &lt;strong&gt;simpler, faster, and more flexible approach&lt;/strong&gt; that keeps HTML as the source of truth, allows mixing server-rendered and client-only components, and avoids JSX entirely. In this article, I’ll walk you through my &lt;strong&gt;HTML-First Multi-Part Application architecture&lt;/strong&gt;, why I built it, and how it can boost performance and maintainability for your projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;I decided to create my own &lt;strong&gt;HTML-First architecture&lt;/strong&gt; to build something &lt;strong&gt;easy, robust, and performance-oriented&lt;/strong&gt;. By leveraging &lt;strong&gt;Sigment’s syntax&lt;/strong&gt; (e.g., &lt;code&gt;return div("hello")&lt;/code&gt;), components are declared in plain JavaScript without JSX. This produces &lt;strong&gt;smaller bundles&lt;/strong&gt;, faster performance, and a simpler development experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not a SPA?
&lt;/h2&gt;

&lt;p&gt;While SPAs are powerful, they aren’t always ideal for larger projects. My Multi-Part Application (MPA) approach allows parts of a page to be &lt;strong&gt;server-side rendered (SSR) for SEO&lt;/strong&gt;, while other parts can remain &lt;strong&gt;client-rendered&lt;/strong&gt; when SEO isn’t critical. This combination provides &lt;strong&gt;better SEO&lt;/strong&gt;, &lt;strong&gt;fine-grained performance optimization&lt;/strong&gt;, and flexibility in choosing which parts of a page require SSR.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture &amp;amp; Concepts
&lt;/h2&gt;

&lt;p&gt;My MPA differs from traditional MPAs because a &lt;strong&gt;single page can contain multiple independent parts&lt;/strong&gt;, each with its own components and lifecycle. Key concepts include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;&amp;lt;layout&amp;gt;&lt;/code&gt;&lt;/strong&gt;: Base template for a page containing &lt;code&gt;data-part&lt;/code&gt; placeholders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;data-part&lt;/code&gt;&lt;/strong&gt;: Marks sections in the layout that can be overridden by page-specific content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;data-component&lt;/code&gt;&lt;/strong&gt;: Represents interactive or dynamic components that can be &lt;strong&gt;SSR&lt;/strong&gt; (&lt;code&gt;runAtServer&lt;/code&gt;) or &lt;strong&gt;client-only&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;data-param&lt;/code&gt;&lt;/strong&gt;: Allows sending parameters to a component.
Example: &lt;code&gt;&amp;lt;div data-component="Product" data-item="laptop"&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;
Inside the component (client-only), you can access it via &lt;code&gt;props.item&lt;/code&gt;.
⚠️ Works &lt;strong&gt;only for client-only components&lt;/strong&gt;, not SSR.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This system allows &lt;strong&gt;mixing SSR and client-only components&lt;/strong&gt; seamlessly on the same page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layout Example
&lt;/h3&gt;

&lt;p&gt;Here’s an example of a layout file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;My Site&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"description"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"keywords"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/assets/css/index.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;data-component=&lt;/span&gt;&lt;span class="s"&gt;"Header"&lt;/span&gt; &lt;span class="na"&gt;runAtServer&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/header&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&lt;/span&gt; &lt;span class="na"&gt;data-part=&lt;/span&gt;&lt;span class="s"&gt;"sectionA"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;data-part=&lt;/span&gt;&lt;span class="s"&gt;"sectionB"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;data-part=&lt;/span&gt;&lt;span class="s"&gt;"sectionC"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&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;footer&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;data-component=&lt;/span&gt;&lt;span class="s"&gt;"Footer"&lt;/span&gt; &lt;span class="na"&gt;runAtServer&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/footer&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example of Using Layout in a Page
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;layout&lt;/span&gt; &lt;span class="na"&gt;data-layout=&lt;/span&gt;&lt;span class="s"&gt;"/layouts/index.html"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/layout&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;description&lt;/span&gt; &lt;span class="na"&gt;data-description=&lt;/span&gt;&lt;span class="s"&gt;"Hello page description"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;keywords&lt;/span&gt; &lt;span class="na"&gt;data-keywords=&lt;/span&gt;&lt;span class="s"&gt;"hello,greeting"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/keywords&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"module"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/bundle.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;data-part=&lt;/span&gt;&lt;span class="s"&gt;"sectionA"&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;Hello Page&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;This page shows the Hello component.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;data-component=&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt; &lt;span class="na"&gt;runAtServer&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example Components
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Hello.js
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sigment&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Hello&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;div&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nf"&gt;div&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mycss&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;what is your name:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;youname&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Hello&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Header.js
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sigment&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;div&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;site-header&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="nf"&gt;nav&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Home&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; | &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/about&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;About&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; | &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; | &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/counter&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Counter&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; | &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/about/1/2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Example with param&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="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Footer.js
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sigment&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Footer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;div&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;© 2025 Sigment. Built with love for developers&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Footer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Components &amp;amp; Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hello.js&lt;/strong&gt;: SSR-enabled component. Renders on the server when &lt;code&gt;runAtServer&lt;/code&gt; is used.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Header.js &amp;amp; Footer.js&lt;/strong&gt;: Globally loadable SSR components.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dynamic Props Example:&lt;/strong&gt; Visiting &lt;code&gt;/about/1/2&lt;/code&gt; automatically injects &lt;code&gt;id=1&lt;/code&gt; and &lt;code&gt;pageid=2&lt;/code&gt; into About.&lt;br&gt;
&lt;strong&gt;Multiple Component Instances:&lt;/strong&gt; Multiple instances (like Hello) can coexist with independent lifecycles and reactive state.&lt;/p&gt;
&lt;h2&gt;
  
  
  Developer Experience
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Adding a new page/component is simple: create HTML in &lt;code&gt;src/html&lt;/code&gt; and JS in &lt;code&gt;src/components&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Layouts are reusable with &lt;code&gt;&amp;lt;layout&amp;gt;&lt;/code&gt; and &lt;code&gt;data-part&lt;/code&gt;. Components can be SSR or client-only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dev mode&lt;/strong&gt; (&lt;code&gt;npm run dev&lt;/code&gt;) serves pages as-is without layout transformation for faster iteration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production mode&lt;/strong&gt; (&lt;code&gt;npm run build &amp;amp;&amp;amp; npm run start&lt;/code&gt;) fully processes layouts and SSR components for clean HTML output.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTML as source of truth&lt;/strong&gt; — semantic, clean, and easy to edit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible hybrid rendering&lt;/strong&gt; — SSR where needed, client-only elsewhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight &amp;amp; modular&lt;/strong&gt; — small bundle sizes, no JSX.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO &amp;amp; performance friendly&lt;/strong&gt; — SSR ensures important parts are indexed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-grained control&lt;/strong&gt; — independent lifecycles per component.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;Check the project here: &lt;a href="https://github.com/sigmentjs/html-first-architecture-example" rel="noopener noreferrer"&gt;HTML-First Architecture Example&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/sigmentjs/html-first-architecture-example.git
&lt;span class="nb"&gt;cd &lt;/span&gt;html-first-architecture-example
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run build
npm run start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visit &lt;code&gt;/&lt;/code&gt;, &lt;code&gt;/hello&lt;/code&gt;, &lt;code&gt;/about/1/2&lt;/code&gt;, or &lt;code&gt;/counter&lt;/code&gt; to see the architecture in action.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extending the Architecture
&lt;/h2&gt;

&lt;p&gt;Once you understand the basics, you can extend this architecture for your own projects by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding new SSR or client-only components.&lt;/li&gt;
&lt;li&gt;Creating custom layouts with multiple &lt;code&gt;data-part&lt;/code&gt; sections.&lt;/li&gt;
&lt;li&gt;Using dynamic props from URLs to customize component rendering.&lt;/li&gt;
&lt;li&gt;Mixing SSR and client-only components to optimize SEO and performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contact Me
&lt;/h2&gt;

&lt;p&gt;You can reach m via email: &lt;a href="//mailto:nivben27@gmail.com"&gt;Yaniv&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>frontend</category>
      <category>html</category>
      <category>framework</category>
    </item>
    <item>
      <title>reactive sigment spa</title>
      <dc:creator>yaniv soussana</dc:creator>
      <pubDate>Sun, 24 Aug 2025 14:09:23 +0000</pubDate>
      <link>https://dev.to/yanivsuzana/reactive-sigment-spa-29lf</link>
      <guid>https://dev.to/yanivsuzana/reactive-sigment-spa-29lf</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk" class="crayons-story__hidden-navigation-link"&gt;🌱 Lightweight and Fast: Why I Built Sigment Instead of Using React&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/yanivsuzana" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F384125%2Fe91ed97a-3e7e-4d29-839f-ef80c3f3bd37.png" alt="yanivsuzana profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/yanivsuzana" class="crayons-story__secondary fw-medium m:hidden"&gt;
              yaniv soussana
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                yaniv soussana
                
              
              &lt;div id="story-author-preview-content-2687997" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/yanivsuzana" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F384125%2Fe91ed97a-3e7e-4d29-839f-ef80c3f3bd37.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;yaniv soussana&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 14 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk" id="article-link-2687997"&gt;
          🌱 Lightweight and Fast: Why I Built Sigment Instead of Using React
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/frontend"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;frontend&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/framework"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;framework&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              5&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>framework</category>
    </item>
    <item>
      <title>[Boost] Minimal Framework</title>
      <dc:creator>yaniv soussana</dc:creator>
      <pubDate>Sat, 19 Jul 2025 12:37:34 +0000</pubDate>
      <link>https://dev.to/yanivsuzana/-50mg</link>
      <guid>https://dev.to/yanivsuzana/-50mg</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk" class="crayons-story__hidden-navigation-link"&gt;🌱 Lightweight and Fast: Why I Built Sigment Instead of Using React&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/yanivsuzana" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F384125%2Fe91ed97a-3e7e-4d29-839f-ef80c3f3bd37.png" alt="yanivsuzana profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/yanivsuzana" class="crayons-story__secondary fw-medium m:hidden"&gt;
              yaniv soussana
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                yaniv soussana
                
              
              &lt;div id="story-author-preview-content-2687997" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/yanivsuzana" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F384125%2Fe91ed97a-3e7e-4d29-839f-ef80c3f3bd37.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;yaniv soussana&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 14 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk" id="article-link-2687997"&gt;
          🌱 Lightweight and Fast: Why I Built Sigment Instead of Using React
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/frontend"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;frontend&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/framework"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;framework&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              5&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>framework</category>
    </item>
    <item>
      <title>🌱 Lightweight and Fast: Why I Built Sigment Instead of Using React</title>
      <dc:creator>yaniv soussana</dc:creator>
      <pubDate>Mon, 14 Jul 2025 20:20:15 +0000</pubDate>
      <link>https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk</link>
      <guid>https://dev.to/yanivsuzana/lightweight-and-fast-why-i-built-sigment-instead-of-using-react-32lk</guid>
      <description>&lt;p&gt;&lt;em&gt;Tired of JSX, Babel, and slow builds? Sigment is a new lightweight JavaScript framework that brings fast, fine-grained reactivity — with zero boilerplate.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ Why Sigment?
&lt;/h2&gt;

&lt;p&gt;Most frontend frameworks today rely on concepts like Virtual DOM, JSX, transpilers like Babel, and heavy build pipelines. While powerful, they introduce complexity and slow down compile time — especially in large projects with many components.&lt;/p&gt;

&lt;p&gt;Sigment was built to break that cycle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero JSX or Transpilers&lt;/strong&gt; — use plain JavaScript tag functions like &lt;code&gt;div()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Virtual DOM&lt;/strong&gt; — DOM updates are direct and efficient&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signal-Based Reactivity&lt;/strong&gt; — inspired by fine-grained reactivity systems like SolidJS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faster Compilation&lt;/strong&gt; — no need for Babel or JSX transforms means drastically faster builds&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔧 Core Concepts
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Clean, Functional Syntax
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Hello&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;div&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello, world!&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Signals Made Simple
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;signal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;view&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;div&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nf"&gt;button&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="nf"&gt;p&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;`Count is &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. No JSX
&lt;/h3&gt;

&lt;p&gt;Just plain JavaScript. What you write is what the browser sees — no build tools required.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Runtime Performance
&lt;/h2&gt;

&lt;p&gt;Sigment skips the diffing and reconciliation of Virtual DOM entirely. This leads to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lower memory usage&lt;/li&gt;
&lt;li&gt;Faster startup and update times&lt;/li&gt;
&lt;li&gt;Easier debugging (no abstraction between your code and the DOM)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📦 Automatic Optimization
&lt;/h2&gt;

&lt;p&gt;Sigment includes built-in strategies for optimal rendering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Components are automatically cached when loaded at runtime&lt;/li&gt;
&lt;li&gt;Global state is simple and signal-based — no need for Redux&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;navigateTo("dashboard", true)&lt;/code&gt; to preserve state across views&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Memoization isn't needed by default, but if a component is heavy, you can use &lt;code&gt;memoizeFunc()&lt;/code&gt; explicitly to optimize it.&lt;/p&gt;




&lt;h2&gt;
  
  
  📁 Project Setup
&lt;/h2&gt;

&lt;p&gt;You can start using Sigment in seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-sigment-app my-app
&lt;span class="nb"&gt;cd &lt;/span&gt;my-app
npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Built with TypeScript and Vite under the hood, but you can also run it without a build step if you prefer.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Designed for Humans
&lt;/h2&gt;

&lt;p&gt;Sigment is ideal for developers who want simplicity, speed, and full control over the DOM — without giving up reactivity.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No more bloated configs&lt;/li&gt;
&lt;li&gt;No JSX mental overhead&lt;/li&gt;
&lt;li&gt;No virtual DOM penalty&lt;/li&gt;
&lt;li&gt;No Babel or transpile time — compilation is instant&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Sigment architecture
&lt;/h2&gt;

&lt;p&gt;Sigment architecture support spa(single page application) &lt;br&gt;
or developer can choose &lt;a href="https://dev.to/yanivsuzana/html-firstwhy-i-built-my-own-html-first-multi-part-application-architecture-and-you-might-want-to-360e"&gt;"HTML first architecture" what calls Islands&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Learn More
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sigment.dev/guides/#intro" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sigmentjs" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sigmentjs/basic-sigment-typescript-vite" rel="noopener noreferrer"&gt;Starter Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/yanivsuzana/html-firstwhy-i-built-my-own-html-first-multi-part-application-architecture-and-you-might-want-to-360e"&gt;Islands -html first architecture&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Made with ❤️ by developers who love simplicity.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tags&lt;/strong&gt;: #javascript #webdev #frontend #framework&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>framework</category>
    </item>
  </channel>
</rss>
