The SuiteScript 2.1 Banner Is the Easy Part
Oracle set the clock: SuiteScript 1.0, 2.0, and 2.x are done by 2028.2. The banner is the easy part. The inventory is the job.

If you're on 2026.2, you've probably seen it by now.
"Update Scripts to SuiteScript 2.1."
Most people read that as two years of runway. It is.
It's also a deadline on a job most accounts have never scoped.
What Oracle Actually Said
Here's the timeline, straight from Oracle's transition page:
- 2026.2: 2.1 becomes the standard for new and existing scripts.
- 2027.1: SuiteScript 1.0 goes to end-of-life support. Critical issues only. Anything else, convert to 2.1 first.
- 2028.1: New accounts can't deploy 1.0 anymore. Scripts tagged
@NApiVersion 2.0or2.xrun as 2.1 by default. - 2028.2: Everything has to be 2.1.
Read that 2028.1 line again.
If you do nothing with your 2.0 scripts, NetSuite isn't going to leave them alone.
It's going to run them on the 2.1 engine for you. In production. On a release weekend. Tested or not.
It's Not One Job
The banner lumps 1.0, 2.0, and 2.x together.
They're not the same amount of work.
1.0 is a rewrite. nlapi calls don't find-and-replace into modules. Every 1.0 script gets rebuilt, and someone has to know what it was supposed to do in the first place.
That last part is usually the hard one.
2.0 and 2.x are a runtime change. Same API, different engine. Changing the header takes five seconds.
Finding out what that changed takes testing.
What Actually Breaks
Oracle publishes a list of differences between 2.0 and 2.1. Worth reading the whole thing.
The scary ones don't throw an error. They just quietly give you a different answer:
- JSON.stringify. 2.0 includes non-enumerable properties. 2.1 doesn't. If a script builds a payload and sends it somewhere, that payload can change shape.
- RESTlets. In 2.0, NetSuite quietly runs whatever your post() returns through JSON.stringify. In 2.1 it doesn't, so the response your caller gets changes. And a RESTlet that returns a JSON string to an application/json caller hands back a string in 2.0 but an object in 2.1. Whatever's on the other end of that integration finds out the hard way.
- Dates and numbers. toLocaleDateString, parseInt, and decimals with trailing zeros are all on the list.
- Stricter parsing. Strict mode, reserved words, reassigning a const, and sloppy JSON that 2.0 let slide.
None of this is exotic.
It's ordinary code that's been running for years without anyone looking at it.
Test It Before NetSuite Does
There's a preference built for exactly this.
Setup > Company > Preferences > General Preferences > Execute SuiteScript 2.0 Server Scripts as SuiteScript 2.1.
Turn it on in a sandbox. Every 2.0 and 2.x server script runs on the 2.1 engine, and you haven't touched a single file.
A few catches:
- Server scripts only. Client scripts need their own pass.
- Script records can override it. If Execute As is set to 2.0 on the record, it stays 2.0. Check before you trust a clean run.
- It's reversible. Something breaks, clear the box, fix it, try again.
Then do the part nobody likes.
Run real transactions. Enter the sales order. Approve the bill. Let the map/reduce run overnight. Hit the RESTlet from the actual integration.
A script that deploys clean hasn't been tested.
A script that's processed a real record has.
Start With the List
Before any of that, you need an inventory.
Every script. Its API version. Whether it's deployed. What it touches. Who owns it.
Bundles and SuiteApps go on the list too. Some of those are yours to fix. Some are a vendor's. You want to know which before 2028, not during.
Do you know who wrote every script that fires on invoice save?
Do you know if they still work there?
That's where the surprises are.
Bottom Line
Two years is plenty of time if you start with the list.
It goes fast if you wait for something to break.
Inventory now. Rewrite the 1.0 scripts on your schedule. Flip the 2.1 preference in a sandbox well before 2028.1 flips it for you in production.
Still feeling overwhelmed? That's exactly the type of situation we generally get brought in on!
Dealing with this in your own NetSuite account?
We fix exactly these problems in production. Run a free read-only health scan, or talk to a senior NetSuite consultant who has seen it before.
Written by Mike Pagani, founder of Adaptive Solutions Group — a NetSuite consultancy based in Pittsburgh, PA. Mike has been building SuiteScript automations, integrations, and NetSuite rescue projects since 2013.