• Townie
    AI
  • Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
valdottown

valdottown

blog

Val Town's Blog
Public
Like
8
blog
Home
Code
9
components
12
posts
3
routes
6
styles
1
utils
7
IMAGES.md
README.md
TODOs.md
H
index.ts
Branches
5
Pull requests
1
Remixes
17
History
Environment variables
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
posts
/
2025-04-07-blog.md
Code
/
posts
/
2025-04-07-blog.md
Search
4/4/2025
Viewing readonly version of main branch: v183
View latest version
2025-04-07-blog.md
title:
We migrated our blog to Val Town in a day, and you should too
description:
This very blog that you're reading right now is now hosted on Val Town
pubDate:
2025-04-07T00:00:00.000Z
author:
Steve Krouse

We migrated our blog to Val Town 🥳

We completed this migration in about one day of work. Now our deployments happen instantly (~100ms), and we've greatly simplified our blogging stack.

BeforeNow
RenderingAstroReact
Version controlGitHubVal Town
Text editinglocal editorVal Town
DeploymentCloudflare Pages + GitHubVal Town
HostingCloudflare PagesVal Town
CDNCloudflareCloudflare

Should you migrate your blog to Val Town?

Maybe! It depends on your constraints and what matters to you. We care deeply about:

  1. Tight feedback loops
  2. Simple, browser-based workflows
  3. A fast migration

We also care deeply about dogfooding, but unless you're us – and unfortunately most of you aren't – that one doesn't apply to you.

First, why you shouldn't migrate your blog to Val Town

  1. Val Town Projects are beta software, so you'd be on the cutting-edge alongside us. We're coming up with patterns that you'd get for free from a mature blogging tools like Astro and Cloudflare Pages.
  2. Val Town doesn't yet have pull-request comments like Github does.
  3. We don't have good workflows for bundlers or build steps, so it's hard to use anything that requires vite, etc.

Ok, now that we got the downsides out of the way, here's why it might be a good idea to blog on Val Town...

TODO: I feel like somewhere around here we should address the concern of lock-in and make it clear that Val Town is built on web standards and that you can easily leave for another blogging platform (or do our strategy of leave and proxy back to us). Also we have a very generous free tier so your blog can go viral on HN and have 100k visitors in a day and it's still free.

Tight feedback loops

We at Val Town are obsessed with tight feedback loops.

"Creators need an immediate connection to what they're creating."

– Bret Victor, "Inventing on Principle"

In some ways, this singular comittment to tight feedback loops is what seperates Val Town from all other code hosting & deployment platforms. We believe that you should be able to iterate directly in your production environment, not iterate locally, then deploy, then wait minutes to see how things look live.

In Val Town, a save is a deploy, and it happens in about 100ms. We go to great technical lengths to make this possible. This means no waiting minutes to see what your post looks like live. And this goes for branches too. Every edit of every branch is instantly deployed in a branch preview.

Simpler, browser-based workflow

Val Town lets you use fewer tools. It replaces:

  • your local text editor,
  • git + GitHub for version control
  • whatever you use for deployment and hosting, Cloudflare, Vercel, Render, Railway, Heroku, Digital Ocean, Hertzner, etc

Simpler, browser-based workflows are particularly important for casual contributors, such as less technical folks on your team or contributions from strangers on the internet. Val Town is a single place for code to be edited, versioned, collaborated on, and deployed. No need for anyone to install or use git, clone the repo locally, install programming languages or dependencies, or use a local text editor.

For example, if you wanted to submit a fix a typo in this blog post that you're reading right now:

  1. Sign up to Val Town
  2. 'Remix' this project
  3. Make your edit to this file
  4. Type cmd+enter, to see the changes live on your remix
  5. Send us a pull request

To be fair, the flow to editing a markdown file in a Github repo is fewer steps than this – and we do plan to make our flow as simple as theirs – but what we bring to the table is step (4), the ability to view exactly what your changes will look like when merged into main. This isn't an option (for good security reasons) for outside contributors to a project that is deployed by Cloudflare or Vercel. We at Val Town are unqiuely positioned to accomplish this because we host both your source code and your deployments.

A fast migration

How did we migrate 61 blog posts – with images, videos, and intricate formatting and styles – to an entirely new blog in a single day?

We didn't. We left them where they are, and proxy to them.

Writing a proxy in Val Town (or any functions platform with the 'fetch handler' interface) is always a delight:

Create val
const OLD_BLOG_HOST = "https://val-town-blog.pages.dev/"; export async function proxy(req: Request): Promise<Response> { const url = new URL(req.url); return fetch(OLD_BLOG_URL + url.pathname + url.search, { method: req.method, headers: req.headers, }); }

So if you go to view blog.val.town/blog/val-town-newsletter-24 you'll see exactly what you would at val-town-blog.pages.dev/blog/val-town-newsletter-24. I find it somehow eerily that proxies work so well.

So far we've had reasonable success with this technique of migrating to Val Town quickly by proxying most old content, and only rebuilding the homepage and new posts. I first used this technique on my personal website, stevekrouse.com, and was pleased to see it continue to work here. If you, dear reader, have a blog you'd like to migrate to Val Town in this way and get stuck, shoot me an email at steve@val.town – I'd be happy to help.

Given this, I was able to vibecode my way through building the core blog with OpenTownie in about half a day, and then it took Jackson about half a day to make it pretty. Honestly, this blog post has taken more time to write than entire the blog migration itself.

Get yourself a Val Town blog

If you are starting a new blog from scratch, Remix this markdown blog starter.

If you are migrating an existing blog, feel free to Remix this blog, because it comes with good patterns for proxying to old content and rendering new content.

FeaturesVersion controlCode intelligenceCLI
Use cases
TeamsAI agentsSlackGTM
ExploreDocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.