26 May, 2026
This release adds a lookup callback to the scan flow element and renames the userCreation auth config to userProvisioning.
Scan Lookup Callback
The scan flow input now supports an optional lookup callback. This lets you resolve a scanned value — such as a barcode — into a richer object like a product name or internal ID, before displaying it to the user.
const result = await ctx.ui.page({
title: "Scan product",
content: [
ctx.ui.inputs.scan("product", {
title: "Scan barcode",
lookup: async (value) => {
const product = await ctx.models.product.findOne({
where: { barcode: value },
});
return product ? product.name : null;
},
}),
],
});The return type is generic — TypeScript narrows automatically when a richer shape is returned. Returning null indicates the scanned value was not found.
userCreation Renamed to userProvisioning
The userCreation auth config field has been renamed to userProvisioning with clearer option values. Update your keelconfig.yaml to use the new field and values:
| Old value | New value |
|---|---|
userCreation: off | userProvisioning: none |
userCreation: auto | userProvisioning: auto |
userCreation: required | userProvisioning: existing |
# Before
auth:
userCreation: auto
# After
auth:
userProvisioning: autoThe old userCreation field is deprecated and will show a validation warning. See the authentication configuration docs for more details.
Fixes and Improvements
For a full list of fixes and improvements, check out our GitHub releases page (opens in a new tab).
For any issues or feedback, please contact us at help@keel.so.
Thank you for using Keel!