I use LiveReloadX to automatically reload the browser as I work on my Hakyll-generated blog. LiveReloadX, and most other automatic reloading utilities work by watching the file system and notifying something in the browser to refresh the page.
When working with Hakyll, I run LiveReloadX as a static web server alongside the normal
npm install -g livereloadx stack exec site watch livereloadx -s _site
A live-reloading version of your Hakyll site will now be available on
If you don't want to install npm or pollute your global node modules, you can run the same thing with a Docker container:
docker run --rm -it \ -p 35729:35729 \ -v "$(pwd)/_site:/site" \ node:alpine /bin/ash -c \ "npm install -g --log-level=error livereloadx; \ livereloadx -s /site"
This is the mechanism I use, and it works wonderfully.