As part of our initiatives to better our app development environment and enable developers to build secure apps, the app development platform and the FDK are constantly upgraded. Though most of the upgrades are seamless and inherently handled by the FDK, at times upgrades entail migrating an app manually. In such cases, the FDK throws warning or error messages with appropriate links to resources that help in migration.
Important: When you run Freshworks CLI commands, an upgrade check is performed only if it hasn’t been performed in the last 24 hours. If a check has run in the last 24 hours, migration or upgrade warnings are not displayed.
The Migration Map
FDK and compatible Node.js versions
FDK version | Node.js version | Support for Node.js - Status |
---|---|---|
8.0.0 or later | Node 14.x | Live. |
7.0.0 - 7.5.1 | Node 12.x | Deprecated as on September 30, 2022. Please ensure to migrate your local FDK to the latest version. |
Prior to 7.0.0 | Node 10.x | Deprecated. |
Local FDK version | Create, validate, or test an app… | |
---|---|---|
Built with 6.13.0 - 7.5.1 | Built prior to 6.13.0 | |
8.0.0 |
There is a major version mismatch between the Node.js version used to build the app and the current version on which the app is run. The FDK displays a warning message (provided an upgrade check is not run in the last 24 hours). The message mentions the Node.js version on which the app is developed, the version on which the app is run currently, and prompts for continuation.
|
There is a major version mismatch between the Node.js version used to build the app and the current version on which the app is run. The FDK displays a warning message (provided an upgrade check is not run in the last 24 hours). The message states the Node.js version on which the app is developed, the version on which the app is run currently, and prompts for continuation.
|
Any earlier FDK version - 7.5.1 |
The FDK displays a warning message stating that your FDK version is deprecated (provided an upgrade check is not run in the last 24 hours). The message directs you to resources that contain information on the deprecation. The FDK displays another warning message. The message mentions the Node.js version on which the app is developed, the version on which the app is run currently, and prompts for continuation.
|
Migrate to the latest platform version
manifest.json changes
platform-version: From the app’s root directory, navigate to manifest.json. Modify the platform-version value to 2.2.
For a serverless SMI app, in manifest.json under product.<productName>, allow list all SMI functions/methods defined in the serverless component of the SMI app. To do this, in manifest.json, add an attribute - functions of the following format and list all SMI functions (server methods) defined in the exports code block of the app’s server.js file:
Copied Copy
EXPAND ↓12345678"functions": { "<serverMethodName1>": { "timeout": 10 }, "<serverMethodName2>": { "timeout": 15 } } timeout (integer): Time in seconds beyond which the app execution times out, if the SMI function does not return a valid response to the front-end component. You can specify an appropriate timeout value based on the SMI function. Valid values : 5, 10, 15, and 20
Notes:- If the SMI function does not return a response within the stipulated time, the app execution times out and an error message is displayed.
- If an invalid timeout value is specified, the fdk run or fdk validate commands display the error message Timeout should be one of the allowed values.
For a serverless app, in manifest.json, under product.<productName> register all the serverless events defined in server.js and the corresponding callback methods. To do this, in manifest.json, add an attribute - events of the following format and list all serverless methods defined in the exports code block of the app’s server.js file:
Copied Copy
EXPAND ↓12345678"events": { "<eventName1>": { "handler": "<callbackFunctionName1>" }, "<eventName2>": { "handler": "<callbackFunctionName2>" } } In manifest.json, ensure that the whitelisted-domains attribute is present. If the app uses the Request method to make secure HTTP calls to third-party domains, in manifest.json, ensure to whitelist the third-party domains. For more information, see the whitelisted-domains attribute definition in App Manifest.
For serverless apps
Copied Copy1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | { "platform-version": "2.2", "product": { "freshteam": { "events": { "onApplicantCreate": { "handler": "onApplicantCreateCallback" }, "onExternalEvent": { "handler": "onExternalEventHandler" } } } }, "whitelisted-domains": [ "https://www.google.com" ] } |
For serverless SMI apps
Copied Copy1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | { "platform-version": "2.2", "product": { "freshteam": { "location": { "candidate_sidebar": { "url": "index.html", "icon": "styles/images/icon.svg" } }, "events": { "onApplicantCreate": { "handler": "onApplicantCreateCallback" }, "onExternalEvent": { "handler": "onExternalEventHandler" } }, "functions": { "serverMethod": { "timeout": 10 } } } }, "whitelisted-domains": [ "https://www.google.com" ] } |
App code changes
The latest FDK version supports app creation, testing, validation, and packing in a local developer environment that is based on Node.js 14. In your app code, ensure that the app code doesn’t contain any Node.js features that are deprecated.
The latest FDK version contains support for the use of ES2020 features when building apps. This enables using constructs such as optional chaining operators in your app code.
Ensure that template substitutions of the form <%= iparam.key %> are used only in the Request method.
Migrate to the latest FDK version
Install the Freshworks CLI. This upgrades your local FDK version to the latest FDK version.
Important: The latest FDK version supports app creation, testing, validation, and packing in a local developer environment that is based on Node.js 14. Ensure that the app code doesn’t contain any Node.js features that are deprecated.
Note: The latest FDK version contains support for the use of ES2020 features when building front-end apps. This enables using ES2020 features such as optional chaining operators in your app code.