---
sourceDocument: Yokohama API Reference
sourceDocumentLink: https://www.servicenow.com/docs/r/yokohama/api-reference

 Release :

    - yokohama

ft:locale :

    - en-US

ft:publication_title :

    - Yokohama API Reference

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Mobile client GlideForm (g form) scripting and migration

# Mobile client GlideForm (g form) scripting and migration {#ariaid-title1}

Release version: Yokohama  
Updated January 30, 2025  
![](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 Mobile client GlideForm (gform) scripting and migration

This guide outlines the requirements and best practices for adapting or creating client scripts, UI policies, navigator modules, and UI actions for the ServiceNow mobile platform, specifically for the Yokohama release.
Mobile client scripting is similar to web scripting but has specific limitations and deprecated methods that must be addressed to ensure compatibility and functionality on mobile devices.
Show full answer Show less  

## Key Requirements for Client Scripts

* **Use new mobile GlideForm methods:** Replace deprecated methods like `gform.getControl()` with the newer mobile-compatible GlideForm API methods to manipulate form fields without direct HTML access.
* **Avoid deprecated methods:** Remove or avoid using `gform.getControl()`, `gform.getFormElement()`, and `gform.getElement()`, as they are unsupported on mobile.
* **Do not use unsupported browser objects:** Objects such as `window`, `document`, and JavaScript libraries like jQuery or Prototype are not supported. Use GlideForm methods like `setLabel()` or `addDecoration()` instead.
* **Eliminate synchronous calls:** Synchronous JavaScript, GlideAjax, and GlideRecord calls are prohibited. All such calls must be asynchronous and use callbacks. For example, `gform.getReference()` and GlideRecord queries must include callback functions.
* **Avoid unavailable mobile platform methods:** Methods such as `showRelatedList()`, `hideRelatedList()`, `flash()`, and `enableAttachments()` do not function on mobile and should not be used.
* **Enable scripts explicitly for mobile:** Scripts must be enabled to run on the mobile UI to be effective.

## UI Policies and Other Components

* **UI Policies:** Use the "Run scripts in UI type" setting to specify if the scripts run on mobile, desktop, or both. Update existing policies accordingly and set this properly for new scripts.
* **Navigator Modules:** Ensure modules are stored in the `sysuiapplication` or `sysuimodule` tables to be accessible in the mobile platform.
* **UI Actions:** UI actions must be created or migrated to the `sysuingaction` table to appear and function on the mobile client. Scripts that avoid deprecated methods typically do not require changes.

## Practical Impact for ServiceNow Customers

By following these guidelines, ServiceNow customers can ensure their client scripts and UI components work seamlessly on the mobile platform, providing a consistent and functional user experience across devices. Migrating scripts to use the new mobile-compatible GlideForm API and asynchronous calls improves performance and compliance with mobile platform constraints. Enabling scripts and properly configuring UI policies, modules, and actions tailored for mobile ensures full feature availability and reduces errors or non-functional behaviors in mobile apps.  
Client scripting for mobile is identical to scripting for the web, with some
exceptions. All new scripts must conform to certain guidelines. The following items are affected
on the mobile platform: client scripts, UI policies, navigator modules, and UI
actions.

## Client scripts

For new or existing scripts to be valid for mobile, they must conform to the following requirements:

* Use the new mobile methods in place of g_form.getControl().
* Do not use deprecated methods.
* Do not reference unsupported browser objects.
* Do not make synchronous JavaScript, GlideAjax, and GlideRecord calls.
* Do not call methods that are not available for mobile.
* Enable scripts to run on the mobile UI.

|-|-|
| Use the new mobile methods | Several new methods are available for modifying form fields instead of directly manipulating the HTML. These methods replace previous usages of g_form.getControl(), which is deprecated for the mobile platform. In your existing scripts, ensure that the new methods are used in place of methods that are not valid on the mobile platform. For information on these new methods, refer to [Mobile GlideForm() API](https://www.servicenow.com/docs/DPUjGNWQ8~8f7r9UZPofdQ#c_MobileGlideForm_API "The Mobile GlideForm (g_form) API provides methods to work with forms on the mobile platform."). |
| Do not use deprecated methods | The following methods have been deprecated for the mobile platform because direct access to HTML elements is not allowed: * g_form.getControl() * g_form.getFormElement() * g_form.getElement() To ensure that existing scripts are compatible, remove all calls to deprecated methods from your code. For new scripts, do not use deprecated methods if you want the script to be valid for mobile. For g_form.getControl(), some of the functionality previously included with this method has been extracted to individual methods. Instead of g_form.getControl(), use the new methods described on the developer site. |
| Do not reference unsupported browser objects | The following browser objects are not supported in mobile scripts: * Window * jQuery or Prototype ($, $j, or $$) * Document Make sure that new scripts do not use these objects, and remove any usage of these objects from your existing scripts. Use GlideForm (g_form) instead, which provides methods such as setLabel(), addDecoration(), and hasField() for accomplishing the same tasks. |
| Do not make synchronous JavaScript calls | The mobile platform does not allow synchronous JavaScript calls. The g_form.getReference() method must now have the callback parameter defined. For example: g_form.getReference(fieldName, callback) Be sure that all g_form.getReference() calls include the callback parameter. For example, the following script does not include a callback and is incompatible with the mobile platform: var userName = g_form.getReference('assigned_to').user_name; g_form.setValue('u_assigned_user_name', userName); The following script has been updated to include the callback and is compatible with the mobile platform: g_form.getReference('assigned_to', function(now_GR) { g_form.setValue('u_assigned_user_name', gr.user_name); }); |
| Do not make synchronous Ajax calls | The mobile platform does not allow synchronous GlideAjax calls. Any use of getXMLWait() in a GlideAjax call will not work on the mobile platform. Be sure that all GlideAjax calls are asynchronous. For more on synchronous versus asynchronous GlideAjax calls and getXMLWait(), see [AJAX](https://www.servicenow.com/docs/EUuVtpQj8lhgYiIx3PfYiw#p_AJAX "AJAX (asynchronous JavaScript and XML) is a group of interrelated, client-side development techniques used to create asynchronous Web applications."). For information on the available GlideAjax methods, refer to the [GlideAjax API](https://www.servicenow.com/docs/hQVQpbybRqKr0684okooTQ#c_GlideAjaxAPI "The GlideAjax class enables a client script to call server-side code in a script include."). |
| Do not make synchronous GlideRecord calls | The mobile platform does not allow synchronous [GlideRecord](https://www.servicenow.com/docs/GNcUDjfFwAF~ZL~iRfwBNQ#c_GlideRecordScopedAPI "The scoped GlideRecord API is used for database operations.") calls. Make sure that any existing GlideRecord calls include a callback. For example, the following script does not include a callback and is incompatible with the mobile platform: var now_GR = new GlideRecord('incident'); gr.addQuery('number', g_form.getValue('related_incident')); gr.query(); gr.next(); g_form.setValue('u_related_incident_description', gr.short_description); The following script has been updated to include the callback, and is compatible with the mobile platform: var now_GR = new GlideRecord('incident'); gr.addQuery('number', g_form.getValue('related_incident')); gr.query(function(now_GR) { gr.next(); g_form.setValue('u_related_incident_description', gr.short_description); }); |
| Do not use methods unavailable on the mobile platform | Due to the limitations and reduced functionality that is imposed by the mobile platform, the following methods are not deprecated but are not available on the mobile platform. If these run on the mobile platform, no action occurs: * showRelatedList () * hideRelatedList () * showRelatedLists () * hideRelatedLists() * flash() * getSections() * enableAttachments() * disableAttachments() * setReadonly() (Note that setReadOnly() is available) * getParameter() |
| Enable scripts for mobile | Scripts must be enabled for the mobile platform. |
[Table 1. Requirements]

{#r_MobilePlatformMigrationImpacts__table_Requirements}  
Note:  
Focusing an element on a mobile form is not supported.

## UI policies {#r_MobilePlatformMigrationImpacts__UIPolicies}

Use the Run scripts in UI type field to determine whether scripts
run on the mobile platform, the desktop, or both. Update existing policies so that they
apply to either the mobile platform or both. For new scripts, also ensure that the mobile
option or both is selected.

## Navigator modules

For existing code, modules must be transferred to either the sys_ui_application or
sys_ui_module tables to be available on the mobile platform. When developing new code, be
sure that all modules are created in the sys_ui_application or sys_ui_module tables.

## UI actions

UI actions must be transferred to the sys_ui_ng_action table to appear on the mobile
platform. UI action scripts that do not use deprecated methods do not require changes to the
script itself. For new UI actions, be sure that they are created in the sys_ui_ng_action
table.

