• 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

Native Runtimes

Run your app in an environment that's pre-configured for your language.

Render provides native runtimes for the following programming languages:

  • JavaScript / TypeScript (supports both Node.js and Bun)
  • Python
  • Ruby
  • Go
  • Rust
  • Elixir

Each native runtime preloads your service's environment with relevant utilities for its language. This enables you to set common build and start commands for your service (e.g., npm install and npm start) without first needing to install the corresponding tools.

You set your service's runtime while creating your service and can change it later if needed.

What about Docker?

Render also provides two Docker-specific runtimes: one for building from a Dockerfile and one for pulling a prebuilt image.

Use Docker in the following scenarios:

  • Your application already uses Docker.
  • Render doesn't provide a native runtime for your application's language (e.g., PHP, .NET, or a JVM-based language).
  • You want full control over which tools and libraries are present (and absent) in your runtime environment.

Changing a service's runtime

You can change an existing service's runtime in any of the following ways:

Changing runtimes via Dashboard

  1. From your service's Settings page in the Render Dashboard, scroll down to the Build section.

  2. Under Source, click Edit.

    The Update Source dialog appears:

    The Update Source dialog in the Render Dashboard

  3. Select your service's current backing Git repo or Docker image (or select a new source if you're also changing it).

  4. The Update Source dialog now prompts you to specify a Branch and Runtime, along with build and start commands (unless you're using Docker):

    The Update Source dialog in the Render Dashboard

  5. Provide values for these fields based on your new runtime and click Deploy.

Render kicks off a deploy using your new runtime and configuration.

Changing runtimes via API

  1. Send a request to the Render API's Update service endpoint. In your request, specify a new runtime via the serviceDetails parameter.

  2. Follow up with a request to the Trigger deploy endpoint to trigger a new deploy.

Changing runtimes via Blueprint

If you're managing your service with Render Blueprints, update the service's runtime field in your render.yaml file, then sync your Blueprint.

Tools and utilities

All Render native runtimes run on Debian 12.x, "bookworm", which includes a broad general-purpose build toolchain.

Additionally, all native runtimes include the tools listed below.

To use a tool that isn't included in Render's native runtimes, or to omit tools you don't need, you can deploy with Docker instead.

🟢Available both during builds and at runtime
🟨Available during builds only
  • 🟢 bun
  • 🟢 curl
  • 🟢 ffmpeg
  • 🟢 g++
  • 🟢 gcc
  • 🟢 gettext
  • 🟢 ghostscript
  • 🟢 git
  • 🟢 gnupg2
  • 🟢 imagemagick
  • 🟢 jq
  • 🟢 libvips-dev
  • 🟢 libvips-tools
  • 🟢 make
  • 🟢 nano
  • 🟢 node
  • 🟢 npm
  • 🟢 pandoc
  • 🟨 pigz
  • 🟢 pnpm
  • 🟢 postgresql-client
  • 🟢 postgresql-client-12
  • 🟢 postgresql-client-13
  • 🟢 postgresql-client-14
  • 🟢 princexml
  • 🟢 python3-dev
  • 🟢 python3-pip
  • 🟢 python3-setuptools
  • 🟢 rsync
  • 🟢 sqlite3
  • 🟢 swig
  • 🟢 typescript
  • 🟢 unzip
  • 🟢 vim
  • 🟢 webpack
  • 🟢 wget
  • 🟢 yarn
  • 🟢 zip

Feature support

All native runtimes support the same set of platform-wide features, including:

  • Automated builds and deploys
  • Infrastructure as Code support with Blueprints
  • Regular updates to native runtimes to improve functionality, security, and performance
  • Private networking, load balancing, and service discovery
  • Optional persistent disk storage
  • Automatic Brotli and gzip compression for faster responses
  • Easy HTTP health checks and zero-downtime deploys
  • Automatic pull request previews
  • Native HTTP/2 support
  • DDoS protection
  • Automatic HTTP → HTTPS redirects
Native Runtimes
  • Changing a service's runtime
  • Tools and utilities
  • Feature support
All Systems Operational
© Render Inc. All rights reserved.