Up 0.3.0 — Custom domains, logging & stability improvements and more.

Image for post
Image for post

I’m back from a little vacation with a new release of Apex Up! This release introduces custom domains, domain purchasing from the command-line, improved logging support, and more. As usual, run up upgrade to update!

If you’re new to Up, it provides tooling enabling your team to deploy and manage “infinitely” scalable serverless apps, apis, and websites in seconds to your own infrastructure (currently supporting AWS Lambda).

Up lets you write vanilla applications using the framework(s) you already know and love, pay for only what you use, and never worry about infrastructure again.

Purchasing domains

A lesser-known feature of AWS Route53 is that you can purchase domains! Up exposes this functionality, allowing you to easily check availability and purchase domains from the command-line.

Here’s an example of an unavailable domain, with suggestions:

Image for post
Image for post

And when it’s available:

Image for post
Image for post

If you decide that supersloths.com is your cool new startup, run up domains buy and fill out the brief interactive form to provide the registrar with your contact information.

Image for post
Image for post

Custom domains

You can now map your domain(s) to your Up applications. If you’ve purchased a domain via up all you need to do is add stages and run up stack plan to preview changes, then up stack apply to apply them.

A second related project, such an API for your front-end might have the following configuration.

Note that if it’s a side project and you do not require staging or production environments, you could use “development” to streamline your workflow (requiring only up instead of up deploy production).

AWS ACM will send an email to the owner of the domain to confirm ownership for SSL certificate it generates. Up will wait until this is complete.

Image for post
Image for post

Click “I Approve” in the email and the command will resume!

Image for post
Image for post

Once complete, CloudFront may take up to 30–40 minutes to apply changes, as it has to distribute your configuration throughout the globe. Subsequent deploys are typically a second or two, depending on your connection speed. CloudFront is unfortunately very slow to initiate, but thankfully this is a one-time cost!

After that, you’re done!

External registrars

If you did not register your domain via Route53 or up domains buy, you’ll need to visit your registrar’s site and assign the AWS nameservers, so your website can be served.

Once deployed, run up stack to view the status of your stack, and any nameservers associated with your mapped domain(s).

Image for post
Image for post

Here’s an example of the configuration for iwantmyname.com, however Godaddy and others will be very similar.

Image for post
Image for post

DNS propagation can take a moment, but otherwise you should be good to go!

Multi-line log capturing

One benefit of using Up is that it captures all of your logs, and will have the ability to transfer them to services such as Papertrail. Up now parses indented multi-line log lines, commonly used for stack traces, and treats it as a single log message instead of one per line.

JSON log capturing

If you’re interested in capturing richer logs, aka “structured logging”, you can output JSON log events to stdout from your application.

All your app needs to do is output a level , message , and optional fields for contextual information:

A minimalistic JavaScript logger for this format could be as simple as:

With the usage:

Check out a deployable example.

Log query units

The log query grammar now supports byte-size and duration units, for example:

Log query stage short-hands

In v0.2.0 to filter logs of a specific stage you needed to run:

Now you can use the stage shorthands stage , production , or development :

Hook arrays

A small but welcome addition is the ability to define multiple hook commands as arrays, instead of a single string with && :

Reverse proxy improvements

With big help from Steven Kabbes and several early adopters we’ve improved the robustness of the reverse proxy, and fixed a tricky long-standing bug causing intermittent errors has been resolved.

The reverse proxy now retries 5xx errors returned from your origin server, only when the request is idempotent (GET, HEAD, OPTIONS). You may disable this by setting proxy.retries to false.


  • add sub-process cleanup and grace period. Closes #311
  • add UP_STAGE env var. Closes #200
  • add environment variables to up start
  • add stage path support for defining a basepath (ex /v1 ) for a domain
  • add Lambda-specific logs to output (memory usage etc)
  • rename .proxy.timeout to .proxy.listen_timeout (BREAKING)
  • fix gzip handling when already compressed by the origin. Closes #328
  • fix permission issues for static file serving. Closes #385


If you’re like me and you love graphs, here’s a graph of Up’s usage. So far 1,377 people have used Up, performing a total of 14,356 deploys. On the finance side there’s $352 from donations ❤.

Image for post
Image for post

The focus for v0.4.0 is on refactoring & UX, such as improving upload performance with multi-part S3, and working on the Pro version.

Up Pro will likely have an early-adopter price of around $25 USD / mo unlimited-use, with no additional cost per “seat” or team member, making it a cost-effective choice for any business. Pro will ship with features such as encrypted environment variables mapped by stage, alerting, uptime monitoring and more.

If you have questions or features you’d like to see, feel free to open an issue!

Written by

Code. Photography. Art.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store