SuiteCommerce / SCA 2019.2.0: TypeScript Migration, SuiteScript 2.0 Backend, and Breaking Directory Changes
SCA 2019.2.0 begins migrating core source from JavaScript/AMD to TypeScript, refactors Case and OrderHistory modules to SuiteScript 2.0 services, restructures the entire source directory layout, bumps the Node.js requirement to 10.16.x, and updates jQuery from 3.3.1 to 3.4.1.
The 2019.2.0 major release of SuiteCommerce and SuiteCommerce Advanced (SCA) introduces several structural and tooling changes that affect core SCA developers, theme/extension developers, and site administrators differently. The headline changes — TypeScript migration, SuiteScript 2.0 backend refactor, and a reorganized directory structure — are SCA-core-only, but the Node.js bump and jQuery update touch everyone.
Source Code Migration to TypeScript
Core SCA source files are being renamed from .js to .ts, and the module system is moving from AMD (define()/require()) to TypeScript-compatible CommonJS-style imports. This is the first phase of a multi-release migration.
- All
.tsfiles compile to JavaScript automatically viagulp localandgulp deploy. - Scope: Core SCA source only. Theme and extension development remains JavaScript/AMD — no changes required there.
- If you maintain customizations against core SCA source (not via the extension/theme APIs), your import paths and module references will break. You must update them to the new TypeScript module paths.
SuiteScript 2.0 Backend Migration (Phase 1)
Server-side logic is being migrated from SuiteScript 1.0 to SuiteScript 2.0 services. In this release, two My Account modules have been refactored:
- Case
- OrderHistory
All other modules remain on SuiteScript 1.0 and the Commerce API. This is also a phased migration spanning multiple releases. If you have backend customizations touching Case or OrderHistory service files, you will need to refactor those to the SuiteScript 2.0 module pattern (e.g., N/record, N/search, N/query imports instead of nlapiLoadRecord-style calls).
Source Directory Restructuring
The SCA workspace layout changes significantly. Module directories no longer carry semantic-version suffixes (e.g., Account@2019.1.0 becomes simply Account). The new top-level structure:
Root/
SC_19.2_Live/ <-- new workspace root
Advanced/ <-- distro.json lives here now
Account/
...
Backend/
Commons/
gulp
package.json <-- moved here; run npm/gulp from this dir
third_parties/ <-- moved outside workspace (shared globally)Breaking changes:
package.jsonand the gulp entry point move intoSC_19.2_Live/. Allnpm installandgulpcommands must now be run from that directory, not the root.distro.jsonmoves into theAdvanced/subdirectory.third_parties/moves outside the workspace. Any build scripts or CI pipelines referencing the old path will fail.- Module names lose their
@x.y.zsuffix. Any references to versioned module names in custom code,distro.jsonoverrides, or extension manifests need updating.
Node.js Requirement Change
Developer tools (theme, extension, and core SCA) now require Node.js 10.16.x. Older Node versions are unsupported. Update before running any gulp or npm commands for 2019.2.0 developer tools.
jQuery Update: 3.3.1 → 3.4.1
jQuery is bumped from 3.3.1 to 3.4.1 (version is also reflected in distro.json). jQuery 3.4.0 notably changed jQuery.extend behavior for deep copies involving __proto__ (a security fix). If your themes or extensions rely on deprecated jQuery methods or the old deep-copy edge cases, audit and test before migrating.
New Configuration Properties
The following properties are added to the SuiteCommerce Configuration record:
Categories.excludeEmptyCategories— hides categories with no items (Integrations > Categories tab).tracking.googleAdWordsConversion.id,.value,.label— Google AdWords conversion tracking fields (Integrations > Adwords tab).header.showRecognizedShopper— toggles recognized-shopper display in the header (Layout > Header tab).quote.daysToExpirationNotification,quote.requestAQuoteWizardBottomMessage,quote.contactBusinessDaysMessage— quote-related messaging controls (My Account > Quotes tab).
Extensibility API Updates
The Visual component gains two new methods:
showMessage(options)— displays a notification in the page's notification area (or anydata-viewplaceholder you specify). Acceptstext,type(info,warning,error,success), and an optionaltimeoutfor toast-style auto-dismiss.closeMessage(messageId)— programmatically dismisses a displayed message.
These methods are available on any component inheriting from Visual, including Layout, ProductListPage, and ProductDetails.
Other Changes
- Target Versions for Themes and Extensions: Extension manifests now include a target-version field specifying compatibility with SC, SCA, or SC InStore releases. The Extension Management bundle (2019.2.0) enforces this — incompatible extensions are hidden from site managers.
- Personalized Catalog Views (PCV): B2B-oriented feature enabling customer-group-specific item catalogs. No code-level migration action unless you are building custom catalog logic.
- PageType Component Enhancement: The
PageTypecomponent now accepts anoptionsobject during registration. Options are forwarded as constructor arguments to the view. Useful for passing contextual data into page-type views. - APM Instrumentation: New performance sensors are embedded in the source for future Application Performance Management integration. No functional impact in this release — the APM bundle update to consume this data will come later.
What to Do
- Core SCA developers: Audit any direct modifications to core source files. The TypeScript migration changes file extensions and the module system. The directory restructure moves
distro.json,package.json, andthird_parties/. Update your build scripts, CI pipelines, and any hardcoded paths. - Backend customizations on Case or OrderHistory: Refactor to SuiteScript 2.0 patterns. Replace
nlapiLoadRecord/nlapiSearchRecordcalls withN/recordandN/searchmodule equivalents. - All developers: Update Node.js to 10.16.x before using the 2019.2.0 developer tools.
- Theme and extension developers: Verify jQuery 3.4.1 compatibility. Check for deprecated jQuery methods and test any deep-copy logic that uses
$.extend(true, ...). - Extension developers: Begin declaring target versions in your extension manifests via the updated developer tools.
- Site administrators: Review the new configuration properties (empty-category exclusion, AdWords tracking, quote messaging) and configure as needed in the SuiteCommerce Configuration record.
Source: Oracle NetSuite Release Notes