Skip to content

Commit 0592bf0

Browse files
authored
Merge pull request #22097 from newrelic/EOL-synthetics
chor: eol for synthetics
2 parents 3976c1f + 790b453 commit 0592bf0

File tree

3 files changed

+168
-0
lines changed

3 files changed

+168
-0
lines changed
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
---
2+
title: "End of Life Announcement: For Chrome 134 and Node.js 16 runtime for synthetics"
3+
subject: "On February 9, 2026, New Relic will upgrade synthetics runtime to Chrome 140 and Node.js 22, ending support for Chrome 134 and Node.js 16 runtimes."
4+
publishDate: '2025-11-05'
5+
eolEffectiveDate: '2026-02-09'
6+
---
7+
8+
On **February 9, 2026**, New Relic will upgrade synthetics runtime environments, ending support for:
9+
10+
* Chrome 134 browser runtime
11+
* Node.js 16 runtime for both API and browser monitors
12+
13+
The following upgrades will be implemented:
14+
15+
* **Synthetics Node API runtime**: Upgraded to Node.js 22
16+
* **Synthetics Node browser runtime**: Upgraded to Node.js 22
17+
* **Chrome browser**: Upgraded to Chrome 140
18+
* Release candidate version available via Docker image tags (rc1.1)
19+
20+
## What's changing?
21+
22+
The following monitor types will be affected by these changes:
23+
24+
* Scripted Browser
25+
* Step Monitor
26+
* Simple Browser Monitors
27+
* Scripted API
28+
* Cert Check
29+
* Broken Link
30+
31+
**Note:** Moving to Chrome 140 automatically upgrades to Node.js 22.
32+
33+
## Transition timeline
34+
35+
### Public locations
36+
37+
* **Node API runtime**: Default remains Node.js 16 until February 8, 2026. On **February 9, 2026**, all monitors will be force upgraded to Node.js 22.
38+
39+
* **Node Browser runtime**: Default remains Chrome 134 for three months starting November 1, 2025. Force upgrade to Chrome 140 occurs on **February 9, 2026**.
40+
41+
### Private locations
42+
43+
* **Node API runtime**: The "latest" tag on `DESIRED_RUNTIMES` will point to Node.js 22 runtime starting **December 1, 2025**. Until then, "latest" points to Node.js 16 runtime.
44+
45+
* **Node Browser runtime**: The "latest" tag on `DESIRED_RUNTIMES` will point to Chrome 140 with Node.js 22 runtime starting **December 8, 2025**. Until then, "latest" points to Chrome 134 with Node.js 16 runtime.
46+
47+
48+
49+
## Changes during transition period
50+
51+
### For public browser monitors
52+
53+
In the creation/edit monitor screen, you'll see the ability to select Chrome browser versions:
54+
55+
* Chrome 134
56+
* Chrome 140
57+
58+
![Chrome version](/images/runtime-synthetic.webp "Chrome version changes")
59+
60+
### For other monitor types
61+
62+
Select the runtime in the Configure monitor screen.
63+
64+
![node runtime](/images/node-synthetic-runtime.webp "node runtime changes")
65+
66+
67+
68+
## What you need to do during the transition period
69+
70+
1. Review and test your monitors using the new runtime options available in the monitor configuration screens.
71+
72+
2. Address Node.js 22 time out behavior: Node.js 22 has documented issues with time out behavior for resource handles. Review the [Node.js 22 release documentation](https://nodejs.org/en/blog/announcements/v22-release-announce) for details.
73+
74+
3. Ensure monitors don't time out with Node.js 22 before the transition date.
75+
76+
### Handle resource cleanup properly
77+
78+
Our analysis indicates that Node.js executes browser monitor scripts successfully but waits for open handles, eventually causing monitor time-outs. Ensure proper cleanup of resource handles.
79+
80+
**Example 1 - Stream cleanup:**
81+
82+
```javascript
83+
let downloadStream = got.stream(fileDownloadUrl);
84+
// Add cleanup in finally block
85+
finally {
86+
if (downloadStream) {
87+
downloadStream.destroy();
88+
}
89+
}
90+
```
91+
92+
**Example 2 - HTTPS request cleanup:**
93+
94+
```javascript
95+
const req = https.request(options, (res) => {
96+
try {
97+
const cert = res.socket.getPeerCertificate();
98+
99+
if (cert && Object.keys(cert).length > 0) {
100+
const validTo = cert.valid_to || cert.validTo;
101+
console.log("Raw certificate valid_to:", validTo);
102+
resolve({ validTo: validTo });
103+
} else {
104+
reject(new Error("Could not get certificate information"));
105+
}
106+
} catch (err) {
107+
res.destroy();
108+
if (res.socket) res.socket.destroy();
109+
reject(err);
110+
}
111+
});
112+
```
113+
114+
In the above example, `res.socket` is opening the socket and in the if condition we are not closing the socket. For above code, you can add cleanup functionality as follows:
115+
116+
```javascript
117+
const req = https.request(options, (res) => {
118+
try {
119+
const cert = res.socket.getPeerCertificate();
120+
121+
// Always destroy the response and socket
122+
const cleanup = () => {
123+
try {
124+
res.destroy();
125+
if (res.socket && !res.socket.destroyed) {
126+
res.socket.destroy();
127+
}
128+
} catch (e) {
129+
console.log("Cleanup warning:", e.message);
130+
}
131+
};
132+
133+
if (cert && Object.keys(cert).length > 0) {
134+
const validTo = cert.valid_to || cert.validTo;
135+
console.log("Raw certificate valid_to:", validTo);
136+
cleanup();
137+
resolve({ validTo: validTo });
138+
} else {
139+
cleanup();
140+
reject(new Error("Could not get certificate information"));
141+
}
142+
} catch (err) {
143+
res.destroy();
144+
if (res.socket) res.socket.destroy();
145+
reject(err);
146+
}
147+
});
148+
```
149+
150+
151+
152+
## Troubleshooting
153+
154+
### Monitor time-outs or failures after upgrade
155+
156+
* Check for usage of deprecated Node.js APIs that were removed or changed in Node.js 22
157+
* Re-run monitors locally using Node.js 22 to reproduce and fix issues
158+
* If failures persist only on browser monitors, verify Chrome 140-specific behavior and contact support
159+
160+
### Rollback options
161+
162+
* **Public locations**: Temporarily switch monitor runtime back to Chrome 134 during the transition window
163+
164+
## Additional resources
165+
166+
* [Synthetics runtime documentation](https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/using-monitors/new-runtime/)
167+
168+
* If you have questions or need assistance during this transition, please contact our [support team](https://support.newrelic.com/s/)
216 KB
Loading
447 KB
Loading

0 commit comments

Comments
 (0)