Hugo, Don't Waste Your Time
2 minutes
Tip using Ko-fi or Buy Me a Coffee
Hugo, the static site generator written in Go, is fast and has been around for years. However, the software has been in a constant prototype phase for over a decade. In 2026, the development is still operating on a methodology of “move fast and break things.” That’s fine for a six-month startup, but less-so for a platform that has been around since 2013. Its primary function is to transform 2004-standardized Markdown into 2008-standardized HTML5. So how much innovation is needed?
The technical debt in adopting Hugo is significant, and unless you are happy with the frequent maintenance of your deployment, you should avoid Hugo. You could be better off hand-coding or vibe-coding the individual blog posts in native HTML and CSS than adopting Hugo’s fluid template ecosystem.
In the 13 months since I last updated this blog, there have been insurmountable changes to the Hugo platform, rendering the entire theming template for this site unusable. This means a website cannot be updated with new posts or edits until all of these breakages are fixed by the owner.
Even when the show-stopping errors get fixed and the Hugo app finally builds the development, other changes could prevent the website from rendering properly, and there’s no feedback on what went wrong. To debug, you have to go through pages of Hugo release notes from weekly updates to pinpoint a legacy version that introduced some breakage that has since been long forgotten and lost to the documentation.
This time, it was a change introduced in early April 2025, 10 months ago, and 10 major releases. In the Hugo community, the users are the alpha testers. Is this wanted from an established writing platform? Not in my opinion, and I regret adopting it.
Hugo is a hobby software, consistently pursuing the latest shiny features and uncommitted to any stable structure, so use it at your own risk.
- Number of releases in April-May 2025, 16.
- Total releases, 362
- Jul 5, 2013 - v0.7 pre-release
- Jun 6, 2016 - v0.16 first release
- Dec 24, 2024 - v0.140.1 previous working version in use
- Feb 27, 2025 - v0.145.0 final usable release for this site
- Feb 9, 2026 - v0.155.3 latest Hugo release at writing
Some of the shit that could arise in Hugo and blocked me from publishing this post
Error executing "main" at <.Err>: can't evaluate field Err in type resource.Resource: Resource.Err was removed in Hugo v0.141.0 and replaced with a new try keyword.Error mapping key "subtitle" already defined.Error execute of template failed: template: _default/taxonomy.html: executing "_default/taxonomy.html" at <partial "head/metadata.html" .>: error calling partialError execute of template failed: template: _default/taxonomy.html: executing "main" at <partial "partials/grouping.html" .>: error calling partial: partial "partials/grouping.html" not foundexecute of template failed: template: _default/terms.html:22:64: executing "main" at <.Title>: can't evaluate field Title in type page.OrderedTaxonomyEntryexecuting "main" at <transform.Unmarshal>: error calling Unmarshal: type template.TryValue not supported

Written by Ben Garrett
