Building applications in source code
Summarize
Summary of Building applications in source code
ServiceNow enables customers to create and develop scoped applications in source code using either the online ServiceNow IDE on the ServiceNow AI Platform or locally with Visual Studio Code Desktop and the ServiceNow SDK. Both environments use ServiceNow Fluent, a domain-specific language, to define application metadata and support JavaScript modules and third-party libraries for enhanced code reuse. Developing in source code helps customers work in familiar tools, manage code via source control, and detect errors during build time. Note that the Global scope and global applications are not supported in the Yokohama release.
Show less
ServiceNow IDE vs ServiceNow SDK
- ServiceNow IDE: An online IDE based on Visual Studio Code for the Web, allowing real-time collaboration, integrated Git support with one branch per repository per instance, and built-in support for ServiceNow Fluent and Build Agent accessible via a chat panel.
- ServiceNow SDK: A local development environment using Visual Studio Code Desktop, enabling offline work, source control collaboration via CLI commands to sync with instances, full Git support, and optional Fluent language server installation. Build Agent features are supported starting with version 4.6.0.
Application Structure
Applications developed in source code follow a structure similar to Node.js/npm projects, defined primarily by package.json and now.config.json files. The default application directories and files include:
.vscode: Recommended VS Code extensionsdist: Build artifacts with subfolders for metadata XML and static assetsmetadata: Application metadata files (edited via source code or platform, not directly)nodemodules: Third-party Node.js modulessrc: Source code subdivided into client (UI), fluent (.now.ts files), and server (JavaScript modules)target: Installable package (.zip) for instance upload- Configuration and support files such as
.eslintrc,.gitignore,now.config.json,package.json
The now.config.json allows customization of application settings, while ESLint helps maintain code quality. The structure supports modular development and efficient packaging for deployment.
Practical Benefits for ServiceNow Customers
- Develop and maintain complex scoped applications using familiar tools and modern workflows
- Leverage source control integration for collaboration and version management
- Use ServiceNow Fluent and JavaScript modules to create modular, reusable code
- Benefit from automated build and error detection through the Build Agent and ESLint
- Access flexibility to develop either online or offline, depending on team needs
Additional Resources
Customers can extend their applications using JavaScript APIs, React for UI development, and customize application configurations in source code to tailor functionality and behavior.
Create and develop custom applications in source code using familiar development tools and processes.
Overview of development in source code
You can create scoped applications in code using the ServiceNow IDE on the ServiceNow AI Platform or locally in Visual Studio Code Desktop with the ServiceNow SDK.
In either development environment, you use ServiceNow Fluent, a domain-specific programming language, to define the metadata that makes up applications. ServiceNow Fluent includes APIs for defining the different types of metadata.
With the ServiceNow IDE or ServiceNow SDK, you can also create JavaScript modules and use third-party libraries in your application to optimize code reuse in scripts within a scoped application.
Developing and maintaining applications in source code enables you to work in familiar development environments, create and modify complex applications, manage code in source control more easily, and catch errors at build time.
|
ServiceNow IDE |
ServiceNow SDK |
Comparison of the ServiceNow IDE and the ServiceNow SDK
| Feature | ServiceNow IDE | ServiceNow SDK |
|---|---|---|
| Development environment | Online ServiceNow instance | Local development and the ability to work offline |
| User interface | IDE based on Visual Studio Code for the Web | Visual Studio Code Desktop |
| Collaboration | View any user's changes in real time in code or embedded ServiceNow AI Platform user interfaces from the Metadata Explorer. Collaborate with other developers on applications in source control. |
Download changes from an instance and install local changes to an instance using the ServiceNow SDK CLI to collaborate with other users. Collaborate with other developers on applications in source control. |
| Source control | Supports the most common Git functionality and integrating with a Git provider of your choice. One concurrent branch per repository per instance (or developer sandbox). |
Full support |
| Application conversion | Support for converting existing scoped applications not created with the ServiceNow IDE or ServiceNow SDK. | Support for converting existing scoped applications not created with the ServiceNow IDE or ServiceNow SDK. |
| ServiceNow Fluent | Full support The ServiceNow Fluent Language server is included with the ServiceNow IDE. |
Full support The ServiceNow Fluent Language server can be installed from the Visual Studio Code Extension Marketplace. |
| JavaScript modules and third-party libraries | Full support | Full support |
| Now Assist for Code | Code auto-complete support for scripts. For information about activation, see Now Assist for code generation. |
Not supported |
| Build Agent | Full support. Build Agent is accessed from a chat panel in the ServiceNow IDE. For information about activation, see Build Agent. |
Build Agent skills are available beginning with ServiceNow SDK version 4.6.0. |
Application structure
Custom scoped applications created with the ServiceNow IDE or ServiceNow SDK include source code files and metadata XML files. The package.json and now.config.json files define the application structure, which is similar to that of Node.js applications or Node Package Manager (npm) packages.
By default, applications include the following directories and files. You can modify certain aspects of the application structure to suit your needs in the now.config.json file.
| Directory or file | Description |
|---|---|
| .vscode | Directory containing recommended Visual Studio Code extensions. |
| dist | Directory containing the build artifacts for packaging. This directory includes the following subdirectories:
|
| metadata |
Directory containing the application metadata (XML) of the application, such as table schemas and business rules, organized in the same directory structure as existing ServiceNow applications. Note:
Application metadata shouldn't be edited from the XML files. Edit application metadata in the source code or on the ServiceNow AI Platform. |
| node_modules | Directory containing the third-party Node.js modules on which your application depends. |
| src | Directory containing the source code of your application. This directory includes the following subdirectories:
|
| target | Directory containing an installable package (.zip file) to upload to an instance. |
| .eslintrc | File containing the ESLint configuration. ESLint helps identify and fix issues in the application code. |
| .gitignore | File containing a list of directories or files for Git to ignore. These files aren't tracked in source control. |
| now.config.json | File containing the ServiceNow application configuration. The now.config.json file must be in the base directory for an application. You can configure aspects of an application by adding support parameters. For more information, see Custom application configuration in source code. |
| now.prebuild.mjs | Auto-updated file containing complete information about dependencies and their versions. This file is only available with the ServiceNow SDK. |
| package-lock.json | Auto-updated file containing complete information about dependencies and their versions. This file is only available with the ServiceNow SDK. |
| package.json | File containing information about your application and custom or third-party module dependencies. The package.json file must be in the base directory for an application. On an instance, the package.json path is specified in the Package JSON field of the custom application record [sys_app] in the format <scope>/<package-name>/<version>/package.json. |
Related applications and features
- JavaScript APIs
- Use JavaScript APIs in scripts that you write to change the functionality of applications or when you create applications.