Quickstart: build your first mobile form
Extend the Skedulo Plus mobile app with a custom form, starting from a working example.
Skedulo Plus extensions (mobile extensions) add custom forms to the Skedulo Plus app: inspection checklists, job completion forms, signature capture. A form is defined as JSON and deployed with the CLI. The fastest way to a working form is to start from one of the official examples and adapt it.
Before you start
You need:
- The Skedulo CLI installed and authenticated.
- Git installed locally.
- A Skedulo tenant you can deploy to.
- Basic familiarity with GraphQL and JSON.
1. Clone the examples repository
git clone https://github.com/skeduloDevelopers/MobileExtensionExamples.git
Each example is a complete, deployable form. HelloWorld is the bare-bones starter and the intended base for new extensions; AccountDetails is a practical working form; UIComponentsShowcase demonstrates every component. Pick the one closest to what you're building.
2. Understand the structure
Each extension is a bundled artifact: a JSON artifact file next to a source directory of the same name.
HelloWorld.MobileExtension.json # artifact file (this is what you deploy)
HelloWorld/
upload_config.json # name + definition ID for upload
mex_definition/
metadata.json # context: where the form appears
ui_def.json # the form's pages and components
instanceFetch.json # per-job/resource data queries
staticFetch.json # team-level shared data queries
static_resources/locales/en.json # UI strings
The two files you'll touch first:
upload_config.json names the extension:
{
"name": "My Extension",
"defId": "my_extension_id"
}
metadata.json sets the context object, which controls where the
form appears in the app: "Jobs" shows it on job details; "Resources"
puts it in the More menu:
{
"contextObject": "Jobs"
}
3. Define the UI
ui_def.json declares the form's pages and components: text editors,
selectors, date/time pickers, toggles, attachments, and signature
capture, among others. The
component library reference
documents each component's syntax and options.
Labels and placeholder text live in
static_resources/locales/en.json; the UI definition references them by
key.
4. Deploy to your tenant
Upload the extension with the CLI, passing the artifact file (not the source directory):
sked artifacts mobile-extension upsert -f HelloWorld.MobileExtension.json -a <tenant-alias>
Open the Skedulo Plus app, navigate to a job (or the More menu, depending on your context object), and your form is there.
Next steps
- Getting started with Skedulo Plus extensions is the full walkthrough.
- Fetch job and resource data into your form
covers
instanceFetchandstaticFetchin depth. - Expressions and validation covers dynamic behavior, conditional visibility, and input rules.
- Building with an AI assistant? Install the mex-developer agent skill so it knows the MEX schema and workflows.