Val Town Newsletter 13

Steve Krouse on

It’s been almost three months since the last Val Town Newsletter in early Sept! We went into a deep engineering hole to build Val Town v3. It shipped on Oct 23rd.

We then immediately embarked upon a cycle of user interviews and product polish, which has resulted in dozens of new features in the past couple weeks. We created the concept of Val Types: HTTP Handler, Interval, Email Handler, or a Script. We launched Val Town Blob and SQLite storage to put powerful persistence at your fingertips. Val exports and names are much easier to work with now too.

Coming up soon are “pull requests” for vals, continuing to polish and clarify the UI, moving our docs site to a public Github repo, custom domains, public folders, and much more!

Vals are being used on everything from tracking prices and RSS feeds to categorizing help tickets to making geolocation APIs. Lots of fun links below!

If you would like to do us a big favor, please email to schedule a user interview and onboarding session. The feedback we get from these sessions are what enable us to improve Val Town. We’re most excited to chat with folks at businesses who want to automate processes, make webhooks, little APIs, or crons. However, we’re happy to chat with anyone – please reach out!

Val Town v3

Val Town v3 finally shipped on October 23rd. It removed our custom @ symbol syntax, but kept the ability to import code by typing the @ symbol: we rewrite it as a web-standard JS import when you accept the completion. It’s more stable, easier to learn, supports JSX, environment variables, has no vendor lock-in, and fixed dozens of other bugs. It’s just way better — try it out!

Val Types

We created the concept of Val Types: HTTP Handler, Interval, Email Handler, or a Script. This lets us specialize the UI particularly for each type of val, which we’ve only just begun taking advantage of.

Screenshot 2023-11-28 at 10.29.37@2x.png


SQLite & Blob Storage

We all know functions are most useful when they can persist some state. Up until now, we had two bad answers:

  1. Store your state in JSON in another val
  2. Go signup for a database and come back here with your keys

The problem with (1) was that it only stored 100kb and it wasn’t ACID. The problem with (2) was that it took you out of the flow of programming.

A couple weeks ago we launched two integrations that let you persist real data without leaving Val Town:

Val Town SQLite gives you your own SQLite database. There is no setup. Just start writing SQL. Make tables, insert data, run queries, whatever you want!


Val Town Blob lets you store any sort of unstructured data, like JSON, text, images, binary, whatever. Again, no setup, buckets, regions, or keys. Just send us your blobs, and then retrieve your blobs.

Screenshot 2023-11-28 at 10.24.52@2x.png

Exports & names

Vals used to require exactly one export, and the name of that export was the name of the val. This was confusing to users, so we moved the name of vals outside the code, and allow vals to have as many or few exports as you’d like.

Screenshot 2023-11-28 at 10.28.07@2x.png


  • Docs site in a public github repo
  • Near-at-hand templates for common patterns, like importing from npm, using secrets, JSX, emailing yourself, persistence, OpenAI…
  • Clearer UI for running vals & logs (more intuitive feedback loop)
  • Lots of small upgrades and polish to product, docs, onboarding
  • Pull requests for vals
  • Public folders
  • Custom domains
  • Benchmark v3 runtime performance and update limits
  • LLM to help you write vals
Edit this page