Skip to content

Custom Domains

One of the most powerful features of rpx is the ability to use custom domains for your local development environment. Instead of accessing your applications through localhost:3000 or similar URLs, you can use domains like my-app.test or api.local.

Benefits

  • Better Multi-Project Workflow: Work with multiple projects simultaneously, each with its own domain
  • Cookie Isolation: Test cookie-based authentication properly with real domain boundaries
  • Realistic Environment: Create a development environment that more closely matches production
  • Subdomain Testing: Test multi-subdomain applications like api.myapp.test and admin.myapp.test

Domain Formats

You can use various domain formats:

  • Simple domain: myapp.test
  • Subdomain format: api.myapp.local
  • .localhost domains: myapp.localhost (automatically resolves in modern browsers)
  • Wildcard domains: Support for *.myapp.test to handle any subdomain

Common TLDs for Local Development

While you can use any domain format, these top-level domains are commonly used for local development:

  • .localhost: Built-in browser support, no DNS resolution needed
  • .test: Reserved for testing purposes
  • .local: Often used for local network services (Note: may conflict with mDNS on some systems)
  • .example: Reserved domain that will never be registered
  • .internal: Commonly used for internal services

Configuration

You can set up custom domains in several ways:

CLI

bash
rpx --from localhost:3000 --to myapp.test

Library

ts
import { startProxy } from '@stacksjs/rpx'

startProxy({
  from: 'localhost:3000',
  to: 'myapp.test',
  https: true
})

Bun Plugin

ts
import rpxPlugin from 'bun-plugin-rpx'

export default {
  plugins: [
    rpxPlugin({
      domain: 'myapp.test'
    })
  ]
}

Multiple Domains

rpx supports configuring multiple domains simultaneously. See the Multiple Proxies documentation for details.

Hosts File Management

rpx automatically manages your system's hosts file, adding the necessary entries to resolve your custom domains to 127.0.0.1 and removing them on shutdown.

For more details on how this works, see the Hosts Management documentation.

Released under the MIT License.