App Studio
URL Parameters as Variables
Route parameters and query string parameters in the URL are automatically available as {{ route.* }} tokens — used in data sources, widget content, and navigation actions.
Route Path Parameters
Parameters defined in the AppPage route (e.g., :id) are available as {{ route.paramName }}:
// AppPage route: /leads/:id
// Current URL: /app/acme/crm/leads/lead-456
{{ route.id }} → "lead-456"
// Multiple params
// Route: /reports/:year/:month
// URL: /app/acme/analytics/reports/2026/05
{{ route.year }} → "2026"
{{ route.month }} → "05"
Query String Parameters
Query string parameters are also available as {{ route.paramName }} — no distinction between path params and query params in the token syntax:
// URL: /app/acme/crm/leads?status=active&owner=user-jane
{{ route.status }} → "active"
{{ route.owner }} → "user-jane"
Using Route Params in Widget Config
// DataGrid — load data for the current entity
{
"dataSource": "GetLeadActivities",
"params": {
"leadId": "{{ route.id }}"
}
}
// Form widget pre-fill
{
"prefillData": {
"leadId": "{{ route.id }}",
"returnUrl": "{{ route.returnUrl ?? '/leads' }}"
}
}
// Page title using route param
// AppPage title field:
"Lead: {{ route.id }}"
// → Browser tab shows "Lead: lead-456"
// Navigate action with params
{
"type": "navigate",
"target": "/leads/{{ route.id }}/activities",
"params": { "filter": "open" }
}
Route Param Type Notes
All route params are strings. If you need a numeric comparison, use explicit coercion:
// Route param as number
"params": { "year": "{{ Number(route.year) }}" }
// Conditional using string comparison
"visibilityExpression": "{{ route.status === 'active' }}"