Joyfill Monthly

September 2025



Overview


September marks the preparation and release of a new major version of the Joyfill SDKs. Joyfill has released many large features, which is why we’ve been publishing RC releases. As we finish September and move into early October, our focus is on stabilizing each SDK and moving them into non-RC release versions. During this period, any feedback, bug reports, or suggestions are greatly appreciated.

We want to thank all the integrators and developers who have been so patient with us. We’re on the final stretch of finalizing these new major versions and returning to our normal release cadence.

For each new feature please refer to the individual SDK's Documentation.

SDKs


🍎 iOS SDK

The iOS SDK new Major version is primarily backwards compatible and does not require any significant rewrites.

Important Note: We recommend reviewing the Joyfill Schema validation note under New Features to determine best course of action for your team.

🤖 Kotlin SDK

The Kotlin SDK is not as plug and play as the others with this major version. You will need to make some changes in order to move to the new Major version. See full migration guide for v1.x.x to v2.x.x under Kotlin documentation here.

Important Note: We recommend reviewing the Joyfill Schema validation note under New Features to determine best course of action for your team.

🖥 JS SDK

The JS SDK new Major version is primarily backwards compatible and does not require any significant rewrites.

Important Note: We recommend reviewing the Joyfill Schema validation note under New Features to determine best course of action for your team.

New SDK Features


🧮 Formulas

Formulas allow you to perform Excel-like functions and calculations against fields and display results in other fields. For example:

  • price * .7
  • if(age > 18, "Adult", "Minor")

Formulas are an entirely optional feature. You can enable or disable them in the Joyfill JS SDK Builder to either restrict or empower your users and teams to use them within their forms. See the JS SDK documentation for details on enabling this feature.

For documentation on formula syntax, operators, and functions, see Formula Documentation.

Supported SDKs:

  • React & Vanilla JS SDK: 4.0.0-rc3
  • iOS SDK: 3.0.0-rc3
  • Kotlin SDK: 2.0.0-rc4
  • React Native SDK: ❌

👁 Readable Field IDs

Readable Field IDs have been introduced to support formulas. The previous ObjectID format cannot be used in formulas. A field’s ID must be updated to a Readable ID format, such as customerAge, text1, or assetList.

Readable Field IDs are optional in the React & Vanilla JS SDK (disabled by default). See the SDK documentation for instructions on enabling them. For mobile SDKs, no configuration is required—if a Readable Field ID is present, it will be supported.

Supported SDKs:

  • React & Vanilla JS SDK: 4.0.0-rc3
  • iOS SDK: 3.0.0-rc3
  • Kotlin SDK: 2.0.0-rc4
  • React Native SDK: ❌

🌎 Timezone Support and Anchoring

We’ve introduced support for timezone capture and anchoring. When a date is captured, the associated timezone is also saved, ensuring the date remains consistent regardless of where the form is later opened. This resolves the issue of dates displaying differently in different timezones.

❗ Important Note: This feature applies only to newly captured dates. Previously captured dates will not include timezone anchoring and may still vary based on the local device timezone. To fix this, simply reselect the date and save the form again using the new SDK versions.

Supported SDKs:

  • React & Vanilla JS SDK: 4.0.0-rc3
  • iOS SDK: 3.0.0-rc3
  • Kotlin SDK: 2.0.0-rc4
  • React Native SDK: ❌

🧩 New Table Field Column Types

We’ve added new column types to make table fields more powerful:

  • Multi-Select – Select one or more options within a table cell.
  • Number – Restrict input to numbers only.
  • Label – Add read-only column labels for vertical labeling.
  • Date & Time – Capture date, time, or date-time values.
  • Signature – Capture a signature within a table cell.
  • Barcode – Capture barcodes directly in a table cell. Works with the new onCapture callback for integrating scanning functionality and populating values automatically.

These column types are optional. You can enable them in the Joyfill JS SDK Builder or keep them disabled to prevent use.

Supported SDKs:

  • React & Vanilla JS SDK: 4.0.0-rc3
  • iOS SDK: 3.0.0-rc3
  • Kotlin SDK: 2.0.0-rc4
  • React Native SDK: ❌

🔍 Mobile Table Field Search and Filter

We’ve added filtering, searching, and sorting capabilities to mobile table fields. This makes it easier for users to navigate, review, and update rows.

Supported SDKs:

  • React & Vanilla JS SDK: ❌
  • iOS SDK: 3.0.0-rc3
  • Kotlin SDK: 2.0.0-rc4
  • React Native SDK: ❌

🌃 New File and Image Field Callbacks and Control

In the React and Vanilla JS SDKs, we’ve added more control over file and image handling. Previously, uploads were limited to the system file picker with onUploadAsync. Now you can use the following fieldSettings properties:

// SDK fieldSettings
{
  systemFilePicker: Boolean,
  onFileUploadAsync: async Function(params, files),
  onFileClick: Function(params, urlObject),
  onFileDelete: Function(params, urlObject)
}

With these callbacks, you can integrate custom upload flows and remove reliance on the system file picker.

Supported SDKs:

  • React & Vanilla JS SDK: 4.0.0-rc3
  • iOS SDK: ❌
  • Kotlin SDK: ❌
  • React Native SDK: ❌

📑 Enhanced Page Breaking and Table Repeating Headers in PDF Generation

We’ve improved the page-breaking logic in our PDF Generation SDK. Table column headers will now repeat at the top of each page when a table spans multiple pages. This ensures clarity and context in generated PDFs.

Supported SDKs:

  • React & Vanilla JS SDK: 4.0.0-rc3
  • iOS SDK: ❌
  • Kotlin SDK: ❌
  • React Native SDK: ❌

✅ SDK Schema Validation

In the past, invalid data structures and types caused crashes in the SDKs. This optional schema validation ensures SDKs no longer crash due to invalid inputs.

Each SDK now includes:

  • A new validateSchema(object) method for external schema validation
  • A validateSchema: boolean property to enable/disable internal validation (useful for backward compatibility)
  • An onError callback for receiving validation errors

Important Note: For existing integrators upgrading to the new major version, it is recommended to disable internal SDK schema validation using the validateSchema option (see SDK documentation). Since Joyfill data is JSON and can be easily modified, validation should first be tested in a controlled environment before being enabled in production. Schema validation is an optional feature intended to reduce the risk of crashes caused by invalid data structures or types. While it provides an additional safeguard, it is not required for normal SDK operation.


Supported SDKs:

  • React & Vanilla JS SDK: 4.0.0-rc3
  • iOS SDK: 3.0.0-rc3
  • Kotlin SDK: 2.0.0-rc4
  • React Native SDK: ❌

🐛 Bug Fixes, Performance Improvements, & Miscellaneous Enhancements

We’ve resolved numerous bugs, improved performance and added additional improvements in this major release.

Other New Stuff


Joyfill Schema

We've created a public repo on github called Joyfill Schema (view here). This contains resources like a JSON Schema that is used for our new SDK Schema Validation, Typescript Types, and other useful times associated with the Joyfill JSON data. Hope you enjoy!