For the complete documentation index, see llms.txt. This page is also available as Markdown.

Release Notes - 2026

Release 2026.9

Release 2026.9
3 September 2026

iOS version

3.3.1

Android version

3.3.1

Jigx Builder

1.51.0

Mobile Apps

Bug fixes

  • Fixed the bottom navigation bar covering the primary action button on Android devices.

  • Amount control values now snap to the configured step - component.amount-control now keeps its value on the grid defined by minimum and step, on both input paths, a typed value snaps to the nearest valid step, and the +/- buttons move between valid steps instead of preserving an off-step offset. This applies everywhere amount-control is embedded (list-item, product-item), needs no configuration change, and doesn't affect existing solutions using the default step: 1.

  • Fixed the offline banner getting permanently stuck after backgrounding the app, sped up offline detection on resume, and made manual retry work in one tap.

  • Number fields now accept locale decimal separators - EU users on comma-decimal locales (e.g. Czech, German) couldn't enter decimals, the decimal-pad keyboard offers ,, but the field's string-to-number conversion only recognized .. Number fields now accept the device/app locale's separator (12,5 in EU, 12.5 in US).

Builder

Bug fixes

  • Error handlers now fire when a REST function is skipped or blocked - REST function definitions can now rely on their error handlers to react when the function doesn't run at all, either because its when condition evaluated to falsy, or because a guard function resolved falsy. Previously, both cases exited before any error handling ran, so there was no way to surface a notification or alert when a call was silently skipped or blocked, the function just did nothing, with no feedback to the user. A matching error handler now fires exactly as it would for a failed REST call, so you can tell the user why an action didn't go through instead of leaving it unexplained. Behavior change - if a function has a catch-all error handler (one without its own when condition), it will now also fire when the function is skipped by when or blocked by a guard, not only on an actual REST failure. Review any catch-all error handlers on your REST functions to make sure that's the behavior you want.

Release 2026.8

Release 2026.8
24 August 2026

iOS version

3.2.0

Android version

3.2.0

Jigx Builder

1.50.0

Announcement : JigxForms is live!

What is JigxForms? Create AI-powered forms to capture data in the field and sync it to other systems.

Try it for free today - Signup now for JigxForms!

Mobile Apps

New Features & Improvements

  • Local time by default for date/time text -Text rendered through TextWithFormat (format.dateFormat) now displays in the device's local timezone by default, instead of UTC. Previously, a stored value of 12:00Z would show as 12:00 on a device set to UTC+2, instead of the correct local time of 14:00. This resolves a long-standing display bug and removes the need for builders to work around it with JSONata expressions such as $fromMillis(..., @ctx.system.timezone.offset) , a workaround that applies today's UTC offset to any date, so it was off by an hour whenever the displayed date fell in the opposite DST season from today.

  • New timezone property - format.dateFormat now accepts an optional timezone property for when you want to display a date/time in a specific zone rather than the device's local one. The property accepts an IANA timezone name (e.g. Europe/Prague) or the literal value local. Because it's resolved from the named zone rather than a fixed offset, the correct DST offset is applied per date, a July timestamp shown with timezone: Europe/Prague renders in summer time even when viewed from a device that's currently in winter time. If timezone is omitted or set to an invalid value, the field falls back to device-local time silently, without throwing an error.

Bug fixes

  • Improved apps loading time on iPhone.

  • Fixed an issue where the app was stuck "Syncing" forever, If an app waited on a batch of data that came back empty, the sync never finished and the app sat there loading. Usually this occurred on the first sign-in, before anything had downloaded.

    The fix: An empty batch now reports itself as done, so the sync completes and the app carries on.

Builder

Improvements

  • disableNetworkRetries property for REST functions - REST function definitions can now set disableNetworkRetries: true to opt out of the platform's automatic network-level retry. When set, a fetch that fails at the connection level surfaces to the function immediately instead of being silently retried underneath it. Previously, a connection failure (logged as Failed to reach endpoint (retry exceeded) from data-provider-controller) was automatically retried up to 3 times by the platform's fetchWithRetry behavior, with no visibility or control at the function level. For idempotent calls this is harmless, but for non-idempotent calls — a POST or PUT that creates a record — it's unsafe: if an earlier attempt actually reached the remote service and was processed, but the response was lost on the way back, the function only sees "network failed" and the platform quietly retries, with no key or reference tying the retry to the original attempt. Each retry can then create a duplicate record server-side. Note: This property is opt-in and off by default, so existing REST functions keep the current automatic-retry behavior unless you explicitly set disableNetworkRetries: true. Set it on any REST function that performs a non-idempotent write (record creation, payment processing, and similar) where a duplicated retry would create duplicate data. This property helps prevent duplicate records being created on a bad connections.

Bug fixes

  • Fix REST functions sending unconverted values (e.g. raw file paths instead of base64) when combining conversions with an inputTransform.

Release 2026.7

Release 2026.7
11 August 2026

iOS version

3.0.0

Android version

3.0.0

Jigx Builder

1.48.0

Announcement : JigxForms is live!

What is JigxForms? Create AI-powered forms to capture data in the field and sync it to other systems.

Try it for free today - Signup now for JigxForms!

Mobile Apps

New Features & Improvements

  • Fix generated PDFs rendering with the wrong solution's layout when multiple solutions are loaded on one device.

  • New package deep links …/solution/{id}/package/{pkg}/jig/{jigId} ensures that tapping back returns users to the wrapper's list.

  • Add support for opening package jigs from push notifications.

  • Added a delay of the offline banner until the device is offline for 4 seconds, preventing false-negative flashes on brief connectivity drops.

Bug Fixes

  • Fix queued file uploads (photos, generated PDFs) failing with ENOENT after an iOS app upgrade by healing stale app-container paths at upload time.

  • Fix jigs failing to render when a published configuration is missing its children list.

  • Auth-protected files now open correctly via open-url on Android devices.

  • Fixed an issue where primary action buttons (such as Complete, Stop time log, Add to appointment, and Preview PDF) could intermittently fail to appear on Android, even though the action panel was active. Restarting the app was previously the only way to recover; this now resolves reliably without needing to relaunch.

  • Prevented unexpected logout during session refresh. Fixed an issue where a brief network interruption during session refresh could incorrectly log users out. The app now stays logged in when this kind of temporary connection issue occurs.

  • Fix secondary credential connect form showing a free-text field instead of the tenant dropdown when connection details fail to load. The form now retries loading instead of storing a credential with an unverified tenant.

  • Open deeplink and notification targets immediately while their solution syncs, with a skeleton placeholder instead of a false Solution is not available error.

  • Reduce generated PDF file size on iOS by up to 5× for image-heavy documents.

Components and jig types

New features & improvements

  • The amount-control component now supports a isManualEditingEnabled property, which re-enables direct keyboard input for typing a value rather than relying solely on the plus/minus buttons. While focused, the field holds your input as a draft string, and the value is only committed to the configured min/max range once you blur or submit.

Bug Fixes

  • Fixed an Android issue for the amount-control where submitting and then blurring the field could cause the value to be committed twice.

  • Fixed an issue where dropdown items with a title, subtitle, and description could have their description text appear outside the bottom sheet. The description now measures and wraps correctly, and multi-select footer buttons display side by side instead of stacking.

  • Fixed an issue where a stray tab bar could appear in the footer of the dropdown bottom sheet.

  • Media-picker keyboard overlap - Fixed an issue where opening the media picker while a text field was focused could leave the on-screen keyboard visible over the picker sheet on Android, and cause the keyboard to unexpectedly reappear after closing the sheet.

Builder

New features & improvements

  • Added a new @ctx.solution.version expression exposing the published version number of the current solution.

Bug Fixes

  • Fix expression failures when splitting a string by a backslash literal more than once in one expression.

Jigx Management

New features & improvements

  • Added support for cookie-based authentication alongside existing OAuth/SSO flows.

  • Caching optimization and performance enhancements.

  • Added a Cloudflare sync setting to SolutionSettings so a solution can be enabled to sync to the Cloudflare platform. Added a new Cloudflare tab in Solution → Settings with a Sync to Cloudflare toggle. Saves on toggle, and visibility/editability is gated by member, org-owner, and support roles.

Release 2026.6

Release 2026.6
10 July 2026

iOS version

2.130.2

Android version

2.130.2

Jigx Builder

1.47.0

Mobile Apps

New Features & Improvements

  • Type-to-confirm account deletion - Account deletion now requires users to deliberately type a confirmation phrase before the action completes. This prevents accidental deletions on shared devices where users may tap Delete instead of Logout. The profile area has also been redesigned into consistent cards for a cleaner, more organized layout.

  • Sync interrupted state - Syncs that are killed or sent to the background mid-flight now resolve to an explicit interrupted state rather than hanging indefinitely on the syncing screen. The interruption reason is recorded and datasource subscribers are notified, giving the app a clear signal to retry or recover gracefully. This is particularly helpful in field environments where connectivity or device usage is unpredictable.

Bug Fixes

  • Fixed an intermittent issue where the primary action button failed to appear under poor connectivity. A fallback timer now ensures the action panel always renders, even when the device interaction queue stalls.

  • Resolved a regression that caused login to hang on the sync screen with null datasource counts and no banners appearing. Stabilizing an internal logout callback allows initial sync to complete as expected.

  • Fixed userId-related errors that caused offline writes to be silently dropped during auth-limbo or logout states. Background sync can now perform authenticated work without requiring an active UI session. An offline-launch initialization crash has also been resolved.

  • On logout, push notification endpoints are now torn down per organization rather than leaving orphaned or mis-scoped endpoints active across sessions.

  • Fixed an issue where portrait-orientation photos taken with the camera appeared stretched when exported to PDF on iOS. The fix corrects an EXIF orientation mismatch introduced with a previous iOS image optimization update.

Jigx Management

  • Bug fixes, performance improvements, and usability improvements.

Release 2026.5

Release 2026.5
24 June 2026

iOS version

2.124.2

Android version

2.124.2

Jigx Builder

1.46.0

Announcement : Introducing JigxForms

What is JigxForms? AI-powered forms. Built for the field. Ready anytime, anywhere. Create and submit powerful, customizable forms, directly from your phone.

Register now for JigxForms!

Mobile Apps

Bug fixes

  • Stuck-offline banner. Fixed an issue where users were seeing the offline banner permanently even after reconnecting.

  • expo-task-manager crash - Patched a recurring iOS-only native crash (EXC_BAD_ACCESS) in Expo's expo-task-manager module caused by a use-after-free race condition.

  • Region filtering - After login, users were briefly seeing solutions from the wrong region (e.g. AP solutions appearing in a US East account). All organization observers now consistently apply region filtering.

  • Fixed black camera preview on Samsung devices (forces stable CameraX 1.5.3) and adds shutter animation + haptic feedback on capture to stop accidental duplicate photos.

Actions & events

New features & improvements

  • action.open-url now supports custom HTTP request headers when opening URLs. You can now securely open authenticated web content, documents, and other protected resources without requiring users to manually authenticate outside the app.

    • ​Added custom request headers, such as authorization tokens or API keys, to URL requests.

    • ​Enabled access to authenticated endpoints and protected resources directly from the app.

    • ​Supports scenarios where additional request context is required before a URL can be opened.

  • canGoBack event - New jig-level property that lets you control whether users can navigate away from the current screen. It applies to all back-navigation triggers, including the Android hardware back button, iOS swipe-back, the header back button, action.go-back, and action.go-to initiated from the jig. Use canGoBack to confirm before leaving read-only screens, protect unsaved changes across multiple components, or block navigation entirely in kiosk-style flows.

  • Action lists now support expressions for actions and isSequential, not just static arrays. Also hardens the expression engine so context aliases (@ctx.) aren't replaced inside quoted strings, with better validation and error logging.

Release 2026.4

Release 2026.4
10 June 2026

iOS version

2.105.2

Android version

2.98.2

Jigx Builder

1.45.1

Announcement : Introducing JigxForms

What is JigxForms? AI-powered forms. Built for the field. Ready anytime, anywhere. Create and submit powerful, customizable forms, directly from your phone.

Register now for JigxForms!

Mobile Apps

New features & improvements

  • Added the ability to manage notifications in the app using the Mark All as Read icon, and the Trash icon to delete read or all notifications.

  • A redesigned media picker flow for the mobile app. Updated user experience for selecting and managing media across image, video, and document fields.

Bug Fixes

  • Improved performance and rendering of image-heavy grids. Fixed navigation stutter and layout pop-in when opening grid screens. Prevented unnecessary image reloads and flashing during re-renders. This fix provides a smoother and more responsive grid browsing experience.

  • Resolved an issue where video previews could appear as a black screen after recording or selecting a video from the device.

  • Fixed notifications when tapping a push notification now correctly marks it as read.

  • Fixed an issue where downstream actions could run before selected or captured files were fully saved. The media picker now waits for file persistence to complete before closing, improving reliability for scenarios such as signature capture and PDF generation.

  • Files with spaces or special characters in their names now copy and upload correctly.

  • Signing out now correctly clears downloaded files.

Components and jig types

New features & improvements

  • jig-header – Added support for displaying a custom logo in the navigation bar and controlling title visibility. This enables more flexible header configurations with different combinations of branding, titles, and actions to match your application’s design and branding requirements.

Builder

New features & improvements

  • Enhanced onTableChanged event handling for the Dynamic Data provider when Row-Level Security (RLS) is enabled. What’s changed :

    • onTableChanged events are now triggered only for data changes that the current user is permitted to see under RLS rules.

    • Prevented unnecessary onTableChanged events from firing when no actual data change has occurred.

Updates to Quick-Start sample solutions

Solution
Additions

jigx-samples

jig-header component with logo

Release 2026.3

Release 2026.3
2 June 2026

iOS version

2.99.3

Android version

2.92.3

Jigx Builder

1.44.0

Announcement : Introducing JigxForms

What is JigxForms? AI-powered forms. Built for the field. Ready anytime, anywhere. Create and submit powerful, customizable forms, directly from your phone.

Register now for JigxForms!

Mobile Apps

New features & improvements

  • Added support for packages - solutions composed inside other solutions. A jig can navigate into a package, execute its actions, with expression-resolved targets, and pass callback actions for the package to invoke back. The package property (target solution name) is available in the action.go-to and execute.action. Package onLoad, datasources, and @ctx.solution.* state are scoped to the package. The app switcher now hides package, form, and data solutions, showing only real apps.

  • Solution title available in expressions - The =@ctx.solution.title expression is now supported in YAML configurations, allowing you to reference the solution's display title (as defined in index.jigx) directly within your jigs. This follows the same pattern as other solution metadata properties such as =@ctx.solution.name, =@ctx.solution.id, and =@ctx.solution.organizationId. Use this expression wherever you need to dynamically display or reference the solution title, for example, in screen headers, labels, banners, or conditional logic, without hardcoding the title string into individual components.

Bug Fixes

  • Persistent file storage for media, signatures, and generated outputs - Media picker selections, captured signatures, and generated PDFs and files are now written to permanent storage locations that survive cache purges, app restarts, and low-memory events. On iOS, media and signatures are saved to Library/Application Support (excluded from iCloud backup), and generated PDFs and files are saved to Documents/Generated PDFs and Documents/Generated Files respectively. On Android, outputs are directed to internal storage and the documents directory. A loading indicator is displayed in the media field while the background copy is in progress, keeping the experience responsive. This resolves a number of issues where files appeared to save successfully but were lost after the OS purged temporary or cache directories.

  • Fixed an incorrect item height calculation in list widgets that caused list items to not properly fill the available container space. Items now render at the correct height regardless of screen size or the number of items in the list.

  • Fixed an issue on the sign-in screen where the on-screen keyboard remained visible when entering the SSO flow from the email field, covering the SSO options modal and making it difficult or impossible to interact with. The keyboard is now dismissed before the SSO options modal opens, ensuring it is fully visible and accessible.

  • Fixed an issue where component.grid rendered slowly on Android, with tiles appearing sequentially after the rest of the screen had already loaded. The per-tile entrance animation that triggered off-screen layer processing has been removed on both Android and iOS, so grid tiles now appear in a single frame and render consistently across platforms.

  • Remove orphaned cached files during a full entity sync to prevent unbounded storage growth.

  • Resolved issues affecting file uploads and downloads when using the Dynamic Data provider on unreliable network connections. File uploads and downloads now correctly transition to a Failed status when a network error occurs, instead of remaining indefinitely in an Uploading or Downloading state. Active file transfers on slow but functioning connections are no longer incorrectly cancelled by connection timeout checks during the transfer process.

Components and jig types

New features & improvements

  • Web-view component - Add allowInAppRedirect option to component.web-view, when enabled, Jigx deeplinks navigate within the app, regular URLs open in an in-app browser, and other schemes delegate to the system.

  • Added the listHeader property to jig.list, enabling fully configurable custom child components in the list header. This eliminates the need to use jig.default with component.list as a workaround for custom list header content, while maintaining the performance benefits of jig.list. The existing header /jig-header property remains reserved for configuring the hero header.

Jigx Management

  • Bug fixes, performance improvements, and usability improvements.

Updates to Quick-Start sample solutions

Solution
Additions

jigx-samples

List jig with listHeader

List jig with listHeader & jig-header

Changed CSV data files to JSON files to upload to Management

Release 2026.2

Release 2026.2
22 May 2026

iOS version

2.90.4

Android version

2.83.4

Jigx Builder

1.43.4

Announcement : Introducing JigxForms

What is JigxForms? AI-powered forms. Built for the field. Ready anytime, anywhere. Create and submit powerful, customizable forms, directly from your phone.

Register now for JigxForms!

Mobile Apps

Bug Fixes

  • Fixed progressive performance degradation on Android.

  • Resolved an issue where newly created users in existing or new organizations could see the “No Solution” screen in the mobile app, despite solutions being assigned correctly. This was caused by an update to the backend identity provider which introduced non-standard user IDs (GUIDs) for newly created users. This caused validation checks used during solution assignment to fail

Actions

New features & improvements

  • Add page property to action.generate-pdf to control paper size (letter, legal, tabloid, a4, a3), orientation (portrait, landscape), custom dimensions (width/height in PDF points), and margins (uniform number or per-side object). Fix iOS PDF generation to paginate multi-page content correctly instead of producing a single oversized page.

  • A new onAppActivated event is available on solution and jig level, allowing you to define actions that automatically execute when the app returns to the foreground from the background or inactive state. This is useful for refreshing data or triggering syncs when a user returns to the app mid-session. Note that onAppActivated does not fire on initial app launch, only on subsequent foreground transitions.

Builder

New features & improvements

  • REST functions have been enhancement to allow the UseLocal:true property to be used with secrets.

  • Index.jigx - You can now use the bundleId property in the dependencies section of the index.jigx file to restrict a solution to specific mobile app bundle IDs. This enhancement allows greater control over which branded or distributed mobile apps can load a solution. This enhancement is useful for managing solution availability across multiple branded mobile apps or deployment environments.

Jigx Management

  • Bug fixes, performance improvements, and usability improvements.

Release 2026.1

Release 2026.1
20 May 2026

iOS version

2.80.0

Android version

2.73.0

Jigx Builder

1.42.0

Announcement : Introducing JigxForms

What is JigxForms? AI-powered forms. Built for the field. Ready anytime, anywhere. Create and submit powerful, customizable forms, directly from your phone.

Register now for JigxForms!

Mobile Apps

New features & improvements

  • All input components that support the isRequired property have been enhanced to provide a clearer visual indicator for mandatory fields. When isRequired is set to true, the field label now displays an asterisk (*) instead of the previous (optional) text. This change brings the visual design in line with common UI standards and improves form clarity for users completing required information.

Bug Fixes

  • Resolved an issue where resetting a list’s amount.state on a default jig did not work as expected. The state now resets correctly, ensuring consistent behavior when clearing or reinitializing list data.

  • Fixed a backward compatibility issue with the numberOfLines property that caused display problems in swipeable lists. The UI now renders correctly, ensuring text truncation and layout behave as expected across both new and existing configurations.

  • Fixed an issue where the signature-field did not respect the disabled configuration. Even when configured with isDisabled: true, the field remained interactive.

  • Fixed an issue that caused signatures saved to dynamic files to display with a black background. Signatures now render with a white background in the app.

  • Improved geolocation loading performance on Android 16, resolving an issue that caused slow load times.

  • Improved continue logging alert wording and appearance.

  • Fixed an issue where setting isDisabled: true on a media-field blocked all interaction, preventing users from viewing existing media. Tapping a disabled media field now opens the detail modal so existing media can be viewed. Add and delete actions remain blocked as expected.

Components and jig types

New features & improvements

  • Banner - The component.banner introduces a consistent and flexible way to display prominent, text-based messages directly within your Jigx screens. It standardizes how messages are presented with built-in styling, contextual icons, and optional actions for user interaction. Banners make it easy to communicate system states, important information, or contextual guidance in a visually distinct area of your app. Whether you’re confirming success, warning about an issue, or guiding users through next steps, Banners ensure critical messages stand out without disrupting the user flow. Banners can include actions such as Retry or Dismiss. Common use cases include:

    • Error — “Something went wrong. Please try again.”

    • Warning — “Changes not saved.”

    • Success — “Your settings were updated successfully.”

    • Informational Text — Highlight short messages or announcements that need visual emphasis within a section or card, such as updates, notices, or reminders.

  • Sections - The component.section has been enhanced to support actions, icons and styling on the section header, allowing you to add interactive options such as “Show More” directly within the section title area. This enhancement provides a smoother and more intuitive user experience, resulting in faster navigation and improved usability across your screens.

  • Default placeholder Enhancement - When configuring screens that use array-based data (such as lists or dropdown components), the app now displays a default placeholder whenever no data is available. If you prefer not to show a placeholder, you can control this by setting a when condition on the component so it only renders when data exists. When configuring screens that use array-based data (such as lists or dropdown components), the app now displays a default placeholder whenever no data is available. If you prefer not to show a placeholder, you can control this by setting a when condition on the component so it only renders when data exists.

  • Enhanced lists to support multi-column layouts using the new numberOfColumns property, ideal for product catalogs, category menus, and compact dashboards. Multi-column layouts apply only to vertical lists and are supported exclusively in component.product-item and component.menu-item.

  • Menu-item - Added a new list child component, the menu-item is a lightweight list-item designed for quick selection and navigation. It’s ideal for presenting categories, filters, or simple choices that guide you to the next screen or refine the data being displayed. Use a menu-item when you want users to tap an option to view related content, for example, selecting a project, choosing a day of the week, or filtering items by category.

  • Header - Introduced new tiny height option, providing greater flexibility for space-constrained UI layouts. This option complements the existing small and medium header sizes. You can now display a hero-style header even when no child components are present, simply assign a height value to the header. If no height is provided, the header defaults to a compact size.

  • Enhanced amount control - The amount-control can now be used as a standalone component which provides a simple and intuitive way to adjust numeric values using plus and minus buttons. It’s ideal for shopping carts, quantity selectors, and any form where values need to increase or decrease in defined steps.

  • The product-item has been enhanced with the following:

    • Support for two distinct visual types to better fit your design needs.

      • default : The classic list row style. Best for dense lists where vertical space is at a premium.

      • card : A boxed, card-style presentation with elevation. Best for emphasizing individual items, especially when used with column (numberOfColumns) layouts.

    • Updated pricing colors: The current price now displays in red and the discounted amount in black, reversing the previous color hierarchy.

    • The bulk remove option (previously indicated by an 'X' icon) has been removed from the component and is no longer available.

    • Decimal formatting: You must explicitly handle decimal precision and formatting in data or expressions. Failure to format decimals (e.g., limiting to 2 decimal places) may result in UI alignment issues when multiple decimal points are displayed.

  • Rating - The Rating component allows users to capture and display ratings within the app. It is commonly used in frontline workflows such as service feedback, inspections, and performance scoring.

  • Summary component has been enhanced to include a progress value, which is useful for displaying completion or status over time, such as task progress, goals, or performance metrics. The value is shown as a visual progress indicator, making it easy to track how much has been completed at a glance.

  • Slider - Use the slider component to select a numeric value within a defined range by dragging a thumb control. Typical use cases include price ranges, quantity selection, thresholds, and score inputs.

  • The bottomSheet initialValue property now supports expressions, for example, initialValue: =@ctx.solution.state.defaultSheet.

  • Added support for component.field-row with flex styling, enabling precise control over the proportional width of input components within a row. This allows for more flexible and responsive form layouts.

  • Added videoQualityPreset property to media-field, avatar-field, and action.open-media-picker, enabling control over video compression on iOS - helping reduce file sizes or preserve original quality as needed.

  • Added two new optional properties on jig.list:

    • initialItemCount - number of items to render on the first frame. Lower = faster initial display; higher = more upfront rendering. Accepts a number or expression.

    • scrollRenderBuffer - multiplier for how many viewports of content to keep rendered off-screen while scrolling. Lower = less memory; higher = smoother fast scrolling. Accepts a number or expression.

    The list's default behavior is improved - A FlatList now uses the calculated item-count based on screen/item height instead of a hardcoded 25, and windowSize defaults to 5 instead of 2.

  • jig.tabs - The tab navigation bar now automatically hides when only 1 tab is present in a jig.

Bug Fixes

  • Fixed an issue where the media picker did not enforce the maximumFileSize restriction when opening, and file size validation errors were not displayed to the user.

  • Add automatic file upload/download for media, signature, and avatar fields. Files now persist across form reopens with diff-based upload logic (only new files uploaded, removed files deleted). Per-field datasources enable efficient file comparison. Implements round-trip file persistence: capture → upload → reopen → display.

Actions

New features & improvements

  • Show-alert action - The new action.show-alert provides a flexible way to deliver context-aware notifications without interrupting user flow. Configure alerts with a title, description, icon, and style, and choose whether they appear as a toast or modal. You also have full control over dismiss timing and behavior. This action introduces support for groupId, allowing related alerts to be grouped and reducing repeated or duplicate messages, especially useful for handling recurring errors. These enhancements offer clearer communication, prevent alert overload, and ensure users receive timely information in a consistent and non-disruptive way. In addition to screen actions, show-alert is also available within functions, allowing you to configure user-friendly alerts for errors coming from the remote systems.

  • Two improvements to state management actions:

    • New: action.reset-component-state - Reset component state. Optionally target specific components by instanceId, or omit to reset all components.

    • Enhanced: action.reset-solution-state - The changes parameter is now optional. Omit it to reset all solution state keys at once.

  • Added videoQualityPreset property to action.open-media-picker, enabling control over video compression on iOS - helping reduce file sizes or preserve original quality as needed.

  • action.go-back - Add support for navigating to a specific jig using the go-back action's to option.

  • Action-evaluate - An action that evaluates any data structure. The action.evaluate action evaluates any value you pass into the options value property. It supports objects, arrays, primitives, and nested combinations of all three. Expressions are evaluated first. Any TextLocale or TextWithFormat values in the result are then resolved to strings. The final result is stored in outputs value and keeps the original shape.

  • Added the onBlur event which is triggered when you leave a form field, for example, when you tap into another field, close a picker, or dismiss the keyboard. It allows you to run actions after the user finishes interacting with a field, rather than on every value change. OnBlur only applies to certain form fields.

  • Added =@ctx.actions.<id>.state.isPending expression to track whether an async action is currently executing. Returns true while an async action is in progress and false when idle. Supported for all async actions. Sync-only actions (e.g. go-to, set-state, reset-state) always return false.

Builder

New features & improvements

  • Enhancement to REST functions now include the show-alert action within errors in functions, allowing you to display alerts automatically when errors occur.

    This enhancement enables you to:

    • Configure custom alerts that trigger on function errors.

    • Configure customized OAuth error messages in function errors.

    • Define actions directly on those alerts (e.g., Retry, Dismiss).

    • Use groupId to group related alerts and control how repeated error notifications are handled.

    This integration provides greater flexibility and visibility during error handling, helping users quickly understand and respond to issues within the app.

  • A unified approach for text style and formatting options has been introduced to simplify how you configure text across components. This enhancement standardizes the way line options (such as fontSize, isBold, color, and numberOfLines) are defined in YAML, ensuring a consistent structure and behavior across all components that display text.

  • Instantly visualize color values in Builder - a color decorator has been added to the YAML editor in Jigx Builder, making it easier to visually identify color values directly within your jigx configuration files. Color details also appear in hover pop-ups, providing quick previews and hex values, ensuring accuracy when selecting or adjusting colors.

  • Automatic change queuing for Dynamic Data tables (default/tableName) — All local database operations (CRUD, SQL, and find/replace) now track and queue changes using a temporary table workflow. Changes are detected, batched (INSERT/UPDATE/DELETE), and prepared for sync automatically. Includes built-in error handling and guaranteed cleanup, with no changes required to existing implementations.

  • Global datasources now support inputs - A global datasource can be instantiated multiple times within a Jig, each with its own input values. Use ctx.inputs inside the global datasource configuration to access them, the same way inputs work in custom components.

  • You can now query data from and execute actions in another installed solution directly from your datasource or jig configuration. Add a package property to any entity definition in a datasource.sqlite config to include data from another solution's SQLite database. In your SQL query, reference cross-package tables using [package-name].[entity-name] notation, making it straightforward to JOIN or UNION ALL data across solutions in a single query. To execute an action from another solution, add a package property to action.execute-action alongside the action name and any parameters. This release also adds a performOperations property to guard functions, giving you explicit control over whether table write operations run after a guard executes, useful when the default behavior (run on guard failure) does not fit your logic.

Bug fixes:

  • Fixed an issue where using a shared expression inside a when condition did not evaluate correctly. This occurred in cases where the shared expression referenced ctx.datasource and was used within an onFocus event. The condition now evaluates properly, ensuring consistent behavior whether the expression is used directly in the when condition or referenced through a shared expression.

Jigx Management

  • Bug fixes, performance improvements, and usability improvements.

Known Issues

  • Referenced actions for jig.tabs not executing at runtime - Referenced actions configured within jig.tabs are currently detected in Builder, but fail to run in the app. At runtime, the action returns a “no configuration found for … action” error, indicating that the referenced action is not being resolved correctly.

    Workaround: None at this time.

  • Header image not displaying when iOS preview is triggered - When a jig is configured with iOS preview, the header image does not display in the preview window. This occurs only when preview is invoked, normal navigation into the jig displays the header image as expected.

    Workaround: None currently available.

Updates to Quick-Start sample solutions

Solution
Additions

jigx-samples

Banner component

Sections component

Show-alert action

Menu-item component

Product-item component

Amount-control component

Rating component

Summary (progress) component

Last updated

Was this helpful?