
Overview
Moving an app from staging to production can expose unexpected failure modes: security holes, performance and scaling issues, or data loss. This checklist is meant to catch common pitfalls for apps on Fly.io, but it’s not a guarantee of production readiness. Not every item here will apply to your app, and you may have additional requirements that aren’t listed. Use this as a foundation and adapt it to your needs. Think of this list as a scaffold, not a silver bullet.Security
Set up single sign-on for organizations
Set up single sign-on for organizations
Isolate staging and production environments
Isolate staging and production environments
Enforce least privilege access
Enforce least privilege access
Protect sensitive information
Protect sensitive information
Make sure private services are not exposed
Make sure private services are not exposed
fly ips list and use fly ips release to release unnecessary public IPs. More detail is available in this flyctl reference: fly ips commands. Assign private apps a Flycast address instead.Use Arcjet application security for JavaScript apps
Use Arcjet application security for JavaScript apps
Databases
Use Managed Postgres
Use Managed Postgres
Practice your disaster recovery plan
Practice your disaster recovery plan
App performance
Get Machine sizing right
Get Machine sizing right
Fine-tune your app
Fine-tune your app
Availability, resiliency, and costs
Use multiple Machines for resiliency
Use multiple Machines for resiliency
Scale your app into more regions
Scale your app into more regions
Use autostop/autostart to reduce costs
Use autostop/autostart to reduce costs
Set up autoscaling by metric to reduce costs
Set up autoscaling by metric to reduce costs
Networking
Set up a custom domain
Set up a custom domain
Consider using a dedicated IPv4 address
Consider using a dedicated IPv4 address
Set up Flycast for private apps
Set up Flycast for private apps
Monitoring
Monitor your app with fully-managed metrics
Monitor your app with fully-managed metrics
Use Sentry for error tracking
Use Sentry for error tracking
SENTRY_DSN as an app secret. Read more about Application Monitoring by Sentry.Export your logs
Export your logs
CI/CD
Generate review apps with GitHub Actions
Generate review apps with GitHub Actions
Deploy with GitHub Actions
Deploy with GitHub Actions