---
title: "DDoS protection, Railway domains, better canvas state"
date: 2026-02-20
number: 0278
url: https://railway.com/changelog/2026-02-20-domains
---

# DDoS protection, Railway domains, better canvas state

We've partnered with [Fastly](https://www.fastly.com/) to bring DDoS protection to every public service on Railway. All traffic routes through their global network (100+ points of presence) where it's filtered before it reaches your infrastructure. Nothing to configure, nothing to enable. It's on by default.

We're also shipping [buying domains](https://railway.com/domains) to Priority Boarding. You can search, buy, and manage domains without leaving Railway. DNS handles itself, WHOIS privacy is included, and auto-renewal is on by default. On top of that, canvas state is now per-environment, so your layouts stop fighting each other.

We do also want to address the network instability this week but the engineering team needs a bit more time for that retro. Our customer teams are reaching out proactively to provide an interim report. We truly apologize for the disruption.

As we say, let's get into it! 🚄

## DDoS protection

[Image: Global DDoS mitigation powered by Fastly]

In the past we would recommend customers to bring their own DDoS protection. Over time were a number of factors that made this a untenable proposition. Customers just joining us on this journey would then need to go to an external site, juggle name servers and overall it was an unintuitive experience. 

We asked: what if we can improve this for our customers? Well- we did just that.

Everyone on Railway gets DDoS protection by default. We've partnered with Fastly to provide DDoS mitigation and global traffic termination across their 100+ points of presence.

All public traffic to your services now routes through Fastly's network, where malicious traffic gets filtered before it reaches your infrastructure.

There's nothing to configure. No proxy to set up, no plan to upgrade, no feature flag to enable. If your service has a public domain, it's protected.

We're also building CDN caching on top of this partnership. More on that soon. Let us know what you think on [Central Station](https://station.railway.com/new?type=feedback).

## Buy domains on Railway to Priority Boarding

[Video: Search, purchase, and manage domains without leaving Railway]

New in [Priority Boarding](https://railway.com/account/feature-flags): Railway Domains

Setting up a domain for your Railway service has always meant a trip to your registrar. Buy the domain there, come back to Railway, add it, copy the DNS records, switch to your DNS provider, paste them, wait for propagation, switch back to verify. It works, but it's a lot of context-switching for something that should take a few seconds.

Not anymore. Railway handles the entire thing. Search for what you want at [railway.com/domains](https://railway.com/domains) or from a service's networking settings. Pick from over 250 TLDs. Not sure what to name your project? Describe what you're building and get AI-powered suggestions.

When you purchase a domain from a service's networking settings, Railway attaches it and configures DNS automatically. No records to copy, no propagation to wait for. You can also buy a domain on its own and connect it to a service later.

Privacy and renewal are handled out of the box. Every domain comes with WHOIS privacy and auto-renewal turned on. Pricing is at cost, rounded up to the nearest dollar. You get a heads-up before renewals, and if payment fails, Railway retries a few times before letting the domain expire.

Manage everything at [railway.com/workspace/domains](https://railway.com/workspace/domains): expiry dates, attached services, and payment status in one place.

Check out the [documentation](https://docs.railway.com/networking/domains/railway-domains) for the full details.

## Better canvas state across environments

[Video: Canvas state is now scoped per environment]

Canvas state (positions, groups, edge anchors) used to live at the project level, shared across every environment and every team member. One project, one layout.

That works when your project has five services and one environment. It falls apart when it doesn't. A project with `production` (10 services) and `staging` (14 services, four of them test-only) would render all 14 positions in both environments. Phantom nodes showed up where services didn't exist. Two people rearranging the canvas at the same time meant one layout wins and the other disappears. Template deployments dropped nodes into positions that only made sense in the source environment.

Canvas state is now per-environment. Create a new environment, and the layout copies over, but the two are independent from that point forward. Rearrange staging without touching production. Organize by dependency chain in one environment and by team ownership in another. If you want to pull a layout from another environment, import it from the canvas settings in the floating left menu.

## Fixes and improvements

- We shipped template UI improvements: variable autocompletion when deploying into an existing project, markdown support in variable descriptions, and better handling of optional variables
- We improved the canvas to center services when the right panel is open. Previously, opening a panel shifted your view off-center
- We fixed an issue where missing GitHub installation errors weren't surfaced. If your GitHub org's repos weren't showing up, Railway now tells you why
- We fixed a bug in the domain configuration modal where the TXT host value included the zone, making it easy to accidentally paste a malformed record into your DNS provider
- We shipped the ability to paste a GitHub URL in the command palette's GitHub Repos sublist. Previously, this only worked at the palette root