Aman Bhargava Bangalore India Data Visualization Designer & Developer aman@diagramchasing.fun
Aman Bhargava Bangalore India Data Visualization Designer & Developer aman@diagramchasing.fun

Sveltia CMS is golden. Bye-bye TinaCMS.

dev notessveltepersonal site

For the past two years, I have been using TinaCMS for all my static sites. I have set it up for client projects, for use at my workplace and for my own sites too. Initially, the idea of having a nice UI for your markdown with schemas and all that jazz was lovely but Tina is so much overhead for what was, at least for me in my understanding, poor DX. Some points as to why:

  1. Schema is a pain to write. While there are extensive widgets you can use and being able to add functions helps, write a .js file is not fun. I want to be able to quickly write a YAML file and get on with my life. For a person who spends most of their time in VSCode, a CMS is not essential to be but merely a nice to have. I don’t want to spend so much time setting it up.
  2. Since it is a full-fledged React app, it is heavy and slow. I don’t like the idea of a React app living inside my Sveltekit project anyway.
  3. Error-prone. Stuff breaks and I don’t understand why. Sometimes I spend 15 minutes writing up a post and it does not save because of some reason I can’t figure out. I have to do it again.
  4. No built-in way to not deploy a commit. Every time you hit save, Tina (as with most Git-based CMSes) commits to your repo and since I host on Netlify, it triggers a build. Every. Time. Even if you just corrected a typo. At RVL when we started using it, one of us triggered 24 builds in a span of 10 minutes. On a free account it would take a matter of days to burn through the quota. The work-around is to set up an ignore rule on Netlify which looks at Tina’s default commits and ignores them. Then, I created a special page (IN REACT!!) for the Tina UI with a button that triggers a build through a Netlify build hook. It works but I think this is one of the biggest painpoints for me. Ideally, it should be something that Tina figures out on its own.
  5. TinaCloud, which manages auth, is confusing and for my purposes an overkill. I don’t want another account to manage.

These are the main things that come to mind. It has served me well but as I am refactoring my site, I cannot bear the thought of setting Tina up again so I started looking for alternatives and came across Sveltia CMS.

There is no documentation site for Sveltia but its README file. It is a drop-in replacement for DecapCMS (literally. I have never experienced something as smooth as what this migration process was) built ground-up with Svelte.

Svelte means it is fast and lightweight. I zip through the UI with no lag. The config can be written in YAML. It is mobile-friendly, with a passwordless way to sign-in from your phone and the UI is beautiful. There is no TinaCloud-like thing, you sign-in with GitHub (which I think only works if you host on something like Netlify or Cloudflare). There is a built-in skip CI, no-auto-deployments mode which saves to repo but does not build it on Netlify till you explicitly say so from the UI. Folder and asset management seems to be far easier. I’ve already said it once, but the UI is also just so so nice.

For v2 of aman.bh, we will try using Sveltia. This is the last time I try a CMS, if this doesn’t work out we’re editing plain markdowns from now on.

Permalink