Frameworkless

Journey to frameworkless web apps. No React, Svelte, Aurelia or Vue.

9 posts in this saga
Updated at Sep 04 2026 at 12:57 UTC
  • SvelteKit Team decides to Break Its Router for Nominal Gain

    1 of 9 |
    Updated at

    No longer using Sapper for this site or SvelteKit for any new projects. Instead I am using lit.dev and fastify, which have higher performance. Good bye Svelte Sapper whatever! Here's a starter repo: https://github.com/normano/web-starter for high performance, low maintenance web apps.


    TL;DR Fuck SvelteKit snce 1.0.0-next.406. Pick HTML/CSS/JS for simplicity and quick dynamic work. Should've listened to our elders about the complexity of frameworks and the value-less decisions framework maintainers tend to ma...

  • Starting a New Adventure in Vanilla HTML JS CSS

    2 of 9 |
    Updated at

    Leaving Svelte behind immediately, I've started looking for vanilla approaches to replace Sapper and SvelteKit for my apps.

    When it comes to web apps, some want to be loaded on page by page, some from that server via SSR and my typical app serve a seed page that fetches the rest from the backend. As long as you can get an initial page and show a loading screen of sort then you will always win the first impression user experience front. That is my goal.

    The question is what is needed for that? Well, how do web...

  • Vanilla SPA Website with Web Components and Fastify in Typescript.

    3 of 9 |
    Updated at

    https://github.com/normano/web-starter

    BOOOM BABY! NO FUCKING FRAMEWORK!

    From my last post where I had a direction on where to go I found the libraries that were sufficient to get me going on the Vanilla JS track successfully.

    Rollup for bundling because web components.

    Lit for web components templating and sugar syntax. This is very very useful. VS Code has an extension for syntax highlighting and there are static analysis tools out there.

    Router-slot to enable SPA with guarded routes.

    Fastify for the backend we...

  • Glad to be in Web Components Land

    4 of 9 |
    Updated at

    Already started migrating the front end part of one application to Web Components. Absolutely making heavy reuse of existing code to hasten the effort. The way the web components renders and how high performance it is, its fucking amazing. This is exactly what I've been looking for. Loads way faster than Svelte will any day and this is without any SSR. Imagine how this thing will scream with SSR.

    I need to figure out how I'm going to do bootstrapping. I'm thinking I will have the bootstrapper js file trigger...

  • No More SvelteKit in my Projects and NoMo Svelte in my New Projects

    5 of 9 |
    Updated at

    Migrated my SvelteKit projects to lit-html because it is so much better to use lit-html. I've always been a fanatic about staying close to vanilla as possible for high performance and low maintenance. I'm super happy about how lit has gone about it.

    I've noted in previous posts why I am switching away from Svelte and going frameworkless. No more Aurelia, React, Vue or Svelte/SvelteKit/Sapper as Web Components with Lit obliterates the use case of these frameworks. Never required two way binding, SSR or whatev...

  • If You Find Yourself Adding Slots In Web Components, Think Again.

    6 of 9 |
    Updated at

    I've been looking for a way to pass properties and/or attributes to a slot element through to the target element that replaces the slot, but that isn't supported behavior in the W3c spec. I spent a few days trying to google for a solution heavily, but instead landed on the simplest solution. I use lit (http://www.lit.dev) for creating web components because it is perfect for any use case.

    I found one idea to pass attributes and properties here: https://pierrelebrun.me/dynamic-properties-on-slots. I find it c...

  • Server Side Rendering Doesn't Matter

    7 of 9 |
    Updated at

    I think SSR is only important because of cargo culting. This site right now uses Sapper to render the the entry page after that, it's all Javascript. I never cared about Sapper's SSR ability. Only that it kept close enough to HTML, CSS, JS and easy to understand routing. No weird shit.

    Now that I've discovered lit-html which is lightweight and helps tremendously with building web applications without a framework why bother with React, Svelte or anything else for small web apps? Web Components are easy AF. Bu...

  • Snapfire 0.5.0: Moving to Tera 2

    8 of 9 |
    Updated at

    When I announced Snapfire 0.4.0, the pitch was about the development loop: stop restarting your server every time you touch an .html file. That part hasn't changed, and it still works the same way.

    This release is about the engine underneath.

    Tera 2 shipped and it isn't a version bump. It's a rewrite. The Rust API changed, the template language changed, and a handful of things that used to fail silently now fail loudly. Snapfire 0.5.0 moves to it.


    Today I'm releasing Snapfire 0.5.0.

    GitHub Repository: https:/...

  • Upgraded Norman's Oven to Version 4

    9 of 9 |
    Updated at

    VERSION 4 of Norman's Oven is HERE!

    It's been a while since I last updated this site (No more Leptos). I updated the API and internal management site as well. API and mgmt were still using node.js, until now! Now, we are all rust powered using Snapfire, XWM, HTMX, Actix Web and Tera 2. AI played a big part in why this worked so well and how the data transfer was so easy and fast.

    Personally, I've never would've bothered with anything of this, but the advent of AI made me very ambitious. Snapfire and Snapfir...