Static Site Generators (SSGs) pre-generate all site pages at build time, producing plain HTML files that load almost instantly for users because there is no need for server processing. In contrast, Server-Side Rendering (SSR) renders each page on demand with every user request, which requires a running server (of course) and will lead to slower load times when the page isn’t cached. To add further contrast, Client-Side Rendering (CSR) usually causes the slowest initial load time because even when a page is cached, all dynamic content will need to be fetched and rendered by the client’s (your) computer.
My previous blog setup was over-engineered, utilizing Next.js SSR/CSR with a customized theme, Prismic CMS, and Vercel hosting. While these SaaS platforms offered extensive scalability features, I spent too much time optimizing caching and adding new functionalities. The primary goal of the blog was to write more, rather than focusing on coding.
Although coding is enjoyable, many people don’t realize that every application you use (including web apps, Android, and iOS) requires constant maintenance; otherwise, it will cease to function correctly. The more components there are in an application’s architecture, the more potential points of failure there are: a server might go down, a software library may require a security patch, or a SaaS vendor could go out of business.
SSGs are straightforward yet fully customizable. They only require a static content host and ideally a Content Delivery Network (CDN) to ensure consistent load times. It’s really freeing to have less bloat to deal with. Initially, I considered incorporating some dynamic elements or user interactions on the site, but maintaining and moderating those features would be too much effort for me at the moment. Many companies have entire departments dedicated to content moderation. If you’d like to leave a comment on any post, I’ll be cross-posting links to Bluesky, X, and Threads. As for the dynamic elements, I’ll host some of the web apps I mention in my posts on a separate domain or subdomain if they are interesting enough.