Safeguard
Security Guides•

Is Ruby 3.2 end of life? What ruby-lang.org lists and what to plan

Ruby 3.2 is marked end of life on ruby-lang.org as of April 2026. Dates for 3.3 and what to record in your Rails or Ruby dependency inventory.

Safeguard Security Team
4 min read

Yes. The ruby-lang.org branches page marks Ruby 3.2 with status "eol" and an end date of 1 April 2026. Ruby 3.3 is in security maintenance, with end of life expected on 31 March 2027. If a service still runs 3.2, record it as unsupported and plan the move.

What the branches page lists

The Ruby maintenance branches page lists a status and dates for each series. As we read it on 19 October 2026:

SeriesStatusNormal maintenance untilEnd of life
3.3Security maintenance1 April 202631 March 2027 (expected)
3.2EOL1 April 20251 April 2026
3.1EOL1 April 202426 March 2025
3.0EOL1 April 202323 April 2024

The page also lists newer series. The word "expected" on the 3.3 date matters: a date that is expected can move, so do not treat it as a contract.

Why Ruby is more than one version number

A Ruby application has at least three version facts, and they can each age at a different speed.

  • The interpreter. The ruby binary in your image or host.
  • The framework. For example Rails, whose maintenance policy has its own bug fix and security windows. See Rails maintenance policy explained.
  • The gems. Hundreds of libraries, each with its own maintainers and release rhythm.

A Gemfile can declare a ruby version line, and a Gemfile.lock pins the gem versions that were resolved. The ruby line tells you what the project asks for. It does not prove what is installed on the server. Compare it with the image or host value, as described in declared, built and running.

An upgrade path that holds up

  1. Read the Rails and gem support matrix for your target Ruby. Some gems lag a new Ruby by months.
  2. Update gems first on the current Ruby, so the later jump is smaller.
  3. Run the suite on the target Ruby in CI as a separate job. Treat new warnings as work items.
  4. Move one minor version at a time. Skipping several makes failures harder to attribute.
  5. Deploy to a small slice of traffic and watch error rates before full rollout.

Run a vulnerable gem check at each step, since upgrades change what resolves. Bundler audit in CI is covered in run bundler-audit in CI.

What to log

FieldExample
Interpreter and versionRuby 3.2.x
StatusEnd of life per ruby-lang.org
Source and check dateBranches page, 19 October 2026
Owner and targetTeam, migration date
ExposureInternet-facing or internal

If the service must stay a while, add the compensating steps you actually have, such as network limits and a short deploy cycle for gem fixes, and a date to revisit.

Try it yourself

Click through it at your own pace, or open it full screen. Find where package versions are shown, since a gem list and an interpreter version belong in the same inventory.

Where Safeguard fits

Safeguard's dependency scanning reads your lockfile into an SBOM, and reachability analysis helps separate gem vulnerabilities your code can actually call from the rest. A free scan is at gold.safeguard.sh/scan.

Quick check

Is Ruby 3.3 supported right now?

It is in security maintenance on the branches page, with end of life expected on 31 March 2027.

Does bundler audit cover the interpreter?

No. It checks gems. Track the interpreter separately.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.