• Docs
  • Changelog
Sign in
Get started
    • Home
    • Your first deploy
    • Free instances
    • Platform features by plan
    • Use with coding agents
    • FAQ
    • Templates
      • Migrate from…
        • Heroku
        • Railway
    • Compute plans
    • SandboxesBeta
      • Service types
        • Which to use?
        • Static sites
        • Web services
        • Private services
        • Background workers
        • Cron jobs
        • Workflows
        • Multi-service architectures
      • Data storage
        • Render Postgres
        • Render Key Value (Redis®-compatible)
        • Persistent disks
    • How deploys work
    • Supported languages
    • Git providers (GitHub, etc.)
    • Build pipeline
    • Deploy hooks
    • Monorepo support
    • Troubleshooting deploys
      • Previewing changes
        • Single-service previews
        • Preview environments (multi-service)
      • Docker deploys
        • Overview
        • Deploy a registered image
        • Using secrets
      • Runtime
        • Native runtimes
        • Environment variables & secrets
        • Default environment variables
    • Intro to sandboxes
    • Limits
      • How to…
        • Create & configure sandboxes
        • Execute commands
        • Manage files
        • Manage snapshots
      • Use with…
        • Claude Managed Agents
        • Cursor Cloud Agents
        • OpenAI Agents API
      • SDK/CLI reference
        • TypeScript SDK
        • Python SDK
        • CLI commands
    • Intro to workflows
    • Tutorial
    • Limits & pricing
      • How to…
        • Define tasks
        • Define flowsNew
        • Trigger runs
        • Develop locally
      • SDK reference
        • TypeScript SDK
        • Python SDK
      • Example workflows
        • TypeScript examples
        • Python examples
    • Overview
    • Create & connect
    • Database credentials
    • Extensions
    • Version upgrades
    • Logical replication
    • Legacy instance types
      • Database recovery
        • Recovery & backups
        • High availability
      • Database performance
        • Read replicas
        • Connection pooling
        • Admin apps
        • Repacking tables
        • Troubleshooting performance
    • Regions
    • Inbound IP rules
    • Edge caching
    • WebSockets
    • TLS certificates
      • Custom domains
        • Overview
        • Cloudflare
        • Namecheap
        • Other DNS providers
      • Internal traffic
        • Private network
        • Private links
      • Outbound traffic
        • Default IP ranges
        • Dedicated IP addresses
        • Outbound bandwidth
        • Handling network changes
      • Static site config
        • Custom response headers
        • Redirects & rewrites
    • The Render Dashboard
    • SSH / Shell access
    • Projects & environments
      • Service actions
        • Scaling
        • Rollbacks
        • Maintenance mode
        • One-off jobs
      • Infrastructure as code
        • Blueprints overview
        • render.yaml reference
        • Terraform provider
    • In-dashboard metrics
    • Health checks
    • Uptime best practices
      • Logging
        • In-dashboard logs
        • Log streams (syslog/HTTPS)
      • OpenTelemetry (OTel) metrics
        • Provider setup
        • Metrics reference
      • Notifications
        • Webhooks
        • Email / Slack
    • MCP Server
      • Render CLI
        • Overview
        • Command reference
      • REST API
        • Overview
        • API reference
      • Third-party connections
        • OIDC support
        • Datadog
    • Workspaces, members, & roles
    • Login settings
    • Audit logs
      • Organizations
        • Overview
        • SAML SSO
    • DDoS protection
    • Platform maintenance
      • Compliance
        • Overview
        • HIPAA (US health data)
        • HIPAA best practices
        • Shared responsibility model
        • Pentest policy
    • Heroku vs Render
    • Vercel vs Render

Handling Outbound Network Changes

If your Render service maintains a long-lived outbound connection to an external resource (such as a third-party API or database), that connection might experience an interruption due to a change in Render's outbound IP routing for your service:

Common causes of an IP routing change include:

ChangeInitiated by

Adding or deleting dedicated outbound IPs that apply to your service

You

Periodic rotation of in-use IP addresses in Render's default IP ranges

Render

Routine maintenance of Render's IP routing infrastructure

Render

Whenever a routing change occurs, Render proactively resets affected TCP connections to public destinations. This closes the connection with a TCP reset so your service can reconnect using its new outbound IP.

From your service's perspective, this process appears the same as any other transient network interruption.

Restoring an interrupted connection

To restore an outbound connection after an IP routing change, your service can use the same retry logic it would use for other connection interruptions.

The examples below use Node.js and Python, but you can apply this same pattern to other languages and frameworks.

Only retry actions that are safe to repeat.

Make sure to enforce idempotency or deduplication safeguards where appropriate.

Example: HTTP retries

This example demonstrates outbound HTTP connections that retry transient upstream failures using exponential backoff.

Example: WebSocket retries

This example demonstrates an outbound WebSocket connection that reconnects using exponential backoff with jitter between reconnection attempts.

Note that as part of reconnecting, your application might also need to reauthenticate or resubscribe to the upstream service.

FAQ

How often does Render perform actions that change outbound IP routing?

These changes are uncommon, but they are occasionally required as part of Render's routine network operations or when responding to unexpected infrastructure events.

Render maintains dynamic, redundant routing paths to preserve your service's outbound internet connectivity. Whenever traffic moves to a different route (whether as part of routine maintenance or to resolve a transient network-link interruption), established outbound connections can be reset.

When routing changes are necessary, your service might experience multiple resets in short succession.

Do outbound IP changes affect incoming requests to my service?

No. Outbound IP changes don't affect how Render routes incoming requests to your service. They can only interrupt established, outbound internet connections from your service.

Do outbound IP changes affect private network connections?

No. Private network connections between your Render services are not affected by outbound IP routing changes.

Handling Outbound Network Changes
  • Restoring an interrupted connection
    • Example: HTTP retries
    • Example: WebSocket retries
  • FAQ
All Systems Operational
© Render Inc. All rights reserved.