---
sourceDocument: Yokohama Build or modify applications
sourceDocumentLink: https://www.servicenow.com/docs/r/yokohama/application-development

 Release :

    - yokohama

ft:locale :

    - en-US

ft:publication_title :

    - Yokohama Build or modify applications

ft:clusterId :

    - cadev

bundleId :

    - cadev

workflow :

    - Development, Data, and Analytics


---

# ServiceNow Fluent

# ServiceNow Fluent {#ariaid-title1}

Release version: Yokohama  
Updated March 12, 2026  
![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 minutes to read
Summarize  
![AI sparkle icon](https://servicenow.com/docs/portal-asset/ai-sparkle-icon) Summarized using AI  
This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.  

## Summary of ServiceNow Fluent

ServiceNow Fluent is a declarative, domain-specific language (DSL) based on TypeScript designed to define application metadata files (sysmetadata) in source code.
It enables developers to define metadata such as tables, roles, ACLs, business rules, and Automated Test Framework tests using concise code instead of through traditional form or builder tool interfaces.
Fluent supports two-way synchronization, allowing changes in the ServiceNow AI Platform user interfaces to sync into the source code and vice versa, ensuring consistent metadata management across your ServiceNow instance.
Show full answer Show less  

## Key Features

* **TypeScript-based DSL:** Simplifies metadata definitions with clear, readable code files (with .now.ts extension).
* **Comprehensive APIs:** Provides APIs for various metadata types, including a generic Record API for metadata without dedicated APIs.
* **Two-way synchronization:** Keeps metadata and source code aligned by syncing changes between source files and ServiceNow metadata.
* **Integration with ServiceNow IDE and SDK:** Supports development and management through ServiceNow IDE or SDK tools.
* **Support for server-side scripts:** Enables importing and using JavaScript module code within server-side objects like BusinessRule.
* **Code directives:** Offers directives like `@fluent-ignore`, `@fluent-disable-sync`, and `@fluent-disable-sync-for-file` to control diagnostics and synchronization behavior.

## Usage and Practical Application

Developers write metadata definitions in `.now.ts` files using the Fluent APIs imported from `@servicenow/sdk/core`. For example, defining a table with columns, client scripts, and business rules can be done programmatically, linking to external client-side scripts or server-side JavaScript modules.

The Fluent approach automates generation of application metadata files on the instance, streamlining application creation and updates.

## Considerations

* Certain metadata types, such as Metadata Snapshots (`sysmetadatalink`) and UX Assets (`sysuxlibasset`), are not currently supported in Fluent code and remain as XML files in the application's metadata directory.

## Benefits for ServiceNow Customers

* **Improved development efficiency:** Reduce manual form-based configurations by defining metadata in code.
* **Better version control:** Code-based metadata enables easier tracking and collaboration through source control systems.
* **Consistency and automation:** Two-way sync ensures metadata changes are consistently reflected across development tools and the instance.
* **Enhanced customization:** Leverage TypeScript and JavaScript modularity for reusable and maintainable application components.  
Define application metadata in source code using the ServiceNow Fluent domain-specific programming language.

## Overview of ServiceNow Fluent {#servicenow-fluent__section_jnb_vvg_z1c}

ServiceNow Fluent is a declarative, domain-specific language (DSL) based on TypeScript for defining the metadata files \[sys_metadata\] that make up applications and includes APIs for the different types of
metadata, such as tables, roles, ACLs, business rules, and Automated Test Framework tests.

Developers define this metadata in a few lines of code instead of through a form or builder tool user interface. Applications created or converted with the ServiceNow IDE or ServiceNow SDK support development in ServiceNow Fluent.

ServiceNow Fluent supports two-way synchronization, which allows changes to metadata to be synced from other ServiceNow AI Platform user interfaces into source code and changes to source code to be synced back to metadata across the instance.

To get started using the ServiceNow IDE or ServiceNow SDK, see the [ServiceNow IDE](https://www.servicenow.com/docs/WXH~scy09LlIq5Ys8eHepQ "Create and develop scoped applications in source code in an integrated development environment (IDE) on the ServiceNow AI Platform to improve collaboration across development teams and accelerate application development.") or [ServiceNow SDK](https://www.servicenow.com/docs/FkpT~ktH_lNP0BluJhpg4g "Create and develop scoped applications in source code locally in Visual Studio Code Desktop and upload changes to an instance using the ServiceNow software development kit (SDK).") documentation.

## ServiceNow Fluent APIs {#servicenow-fluent__section_nyj_y13_zbc}

ServiceNow Fluent includes APIs for many types of metadata. You can use the Record API to define application metadata that doesn't have a dedicated API. For the latest list of supported APIs and examples, see the [ServiceNow Fluent API reference](https://servicenow.github.io/sdk/) and [ServiceNow SDK examples repository](https://github.com/ServiceNow/sdk-examples) on GitHub.  
Note:  
A limited number of metadata types, such as Metadata Snapshots \[sys_metadata_link\] and UX Assets \[sys_ux_lib_asset\], can't be represented as ServiceNow Fluent code and aren't transformed. These metadata types remain as metadata XML files in the metadata directory of your application.

## ServiceNow Fluent usage {#servicenow-fluent__section_dgj_1b3_zbc}

In files with the .now.ts extension, use objects in the ServiceNow Fluent APIs to define metadata in the application. You must also include the required imports for the APIs from @servicenow/sdk/core. For objects with server-side scripts, such as the
BusinessRule object, you can import and use code from JavaScript modules.  
The following example includes the definitions of a table, client script, and business rule in the application. The client script uses a script from the client-script.js file. The business rule uses a function from the script.js JavaScript module.

    import '@servicenow/sdk/global'
    import { BusinessRule, ClientScript, DateColumn, StringColumn, Table } from '@servicenow/sdk/core'
    import { showStateUpdate } from '../server/script.js'

    //creates todo table, with three columns (deadline, status and task)
    export const x_snc_example_to_do = Table({
        name: 'x_snc_example_to_do',
        schema: {
            deadline: DateColumn({ label: 'Deadline' }),
            state: StringColumn({
                label: 'State',
                choices: {
                    ready: { label: 'Ready' },
                    completed: { label: 'Completed' },
                    inProgress: { label: 'In Progress' },
                },
            }),
            task: StringColumn({ label: 'Task', maxLength: 120 }),
        },
    })

    //creates a client script that pops up 'Table loaded successfully!!' message everytime todo record is loaded
    ClientScript({
        $id: Now.ID['cs0'],
        name: 'my_client_script',
        table: 'x_snc_example_to_do',
        active: true,
        appliesExtended: false,
        global: true,
        uiType: 'all',
        description: 'Custom client script generated by Now SDK',
        isolateScript: false,
        type: 'onLoad',
        script: Now.include('../client/client-script.js'),
    })

    //creates a business rule that pops up state change message whenever a todo record is updated
    BusinessRule({
        $id: Now.ID['br0'],
        action: ['update'],
        table: 'x_snc_example_to_do',
        script: showStateUpdate,
        name: 'LogStateChange',
        order: 100,
        when: 'after',
        active: true,
    })

The client script referenced from the ClientScript object:

    function onLoad() {
        g_form.addInfoMessage("Table loaded successfully!!")
    }

The JavaScript module referenced from the BusinessRule object:

    import { gs } from '@servicenow/glide'

    export function showStateUpdate(current, previous) { 
        const currentState = current.getValue('state')
        const previousState = previous.getValue('state')

        gs.addInfoMessage(`state updated from "${previousState}" to "${currentState}"`)
    }

After building the application, this source code generates the following application metadata files on the instance.
Figure 1. Application metadata generated from ServiceNow Fluent code  
Tip:  
You can use the following directives in a code comment to help manage your code:

* `@fluent-ignore`: Suppresses ServiceNow Fluent diagnostic warnings and errors in the following line of code.
* `@fluent-disable-sync`: Turns off syncing changes to a ServiceNow Fluent object. Use before a call expression (for example, `Record({ ... })`) to turn off syncing for that object and its child objects. Only use this directive if you want to ignore changes made outside of the source code to the object and never update it when syncing.
* `@fluent-disable-sync-for-file`: Turns off syncing changes to a ServiceNow Fluent file (.now.ts). Use in the first line of the file to turn off syncing for all code in the file. Only use this directive if you want to ignore changes made outside of the source code to the file and never update it when syncing.
{#servicenow-fluent__ul_dzm_xxw_ldc}
**Related tasks**   

* [Define application metadata in code with ServiceNow Fluent in the ServiceNow IDE](https://www.servicenow.com/docs/juWJE0QUuULNSw1IRAbGfw "Define application metadata in code with ServiceNow Fluent in the ServiceNow IDE.")
* [Define application metadata in code with ServiceNow Fluent and the ServiceNow SDK](https://www.servicenow.com/docs/sRujRdnGwICW1IeE5~UHrw "Define application metadata in code with ServiceNow Fluent and the ServiceNow SDK.")  
**Related reference**   

* [ServiceNow Fluent API reference](https://www.servicenow.com/docs/cYIPYJfg49BUo2N6LC5XwA "Use ServiceNow Fluent APIs to define the metadata that makes up scoped applications in source code with the ServiceNow IDE or ServiceNow SDK.")

