Versyka
Posted on Oct 25
AI-assisted
Python 3.10 reaches end of life on October 31, 2026 . Node 20 already did, on April 30, 2026 .
End of life doesn't break anything. The interpreter keeps running. What stops is security releases: the next CVE in that version never gets a patch, and nothing in your build turns red to tell you.
The hard part isn't upgrading. It's knowing where the version is pinned, because it's rarely in one place.
Where runtime versions hide
File What it looks like
Dockerfile FROM python:3.10-slim , FROM node:20-alpine
.python-version 3.10 or 3.10.14
runtime.txt python-3.10.14 (Heroku-style platforms)
.nvmrc / .node-version 20
serverless.yml runtime: python3.10 , runtime: nodejs20.x
pyproject.toml requires-python = ">=3.10,<3.11"
package.json "engines": { "node": "20.x" }
CI config python-version: "3.10" , node-version: 20
A quick audit script
Run this from the root of a repository:
#!/usr/bin/env bash # Find pinned Python 3.10 and Node 20 runtimes grep -RInE \ --include…