Changelog and Upgrade Guide
We have two versions – the Legacy Web SDK and the new Face Verify Web SDK.
Because we're moving towards phasing out the Legacy Web SDK, please upgrade to the new Face Verify Web SDK as soon as possible.
Face Verify Web SDK
v2.0.0
Release Notes
- The v2 Face Verify Web SDK introduces significant performance updates, improved accuracy, and streamlined user experience.
Added
scan_againcustom event: emitted when the user clicks on the "Scan again" button at the end of the flow.
Upgrade Guide
- Ensure that you are handling the new
scan_againcustom event.
v1.2.0
Added
- Implemented new slot designs:
cancellederrorgrant_permissioninterrupted
Fixed
allow_landscapeshould not be configurable until we're able to fully assess landscape mode implications across all tablet devices
v1.1.1
Added
Users can now choose their webcam in full screen with a new camera selection button.
We've added a set of options for controlling overlay colours, styles, and the floating prompt:
floating_prompt_rounded_cornerscontrols corners of floating prompt. Usefalseto remove border radius (default:true).liveness_overlay_stroke_colorcontrols colour of the overlay in Liveness (default:null).liveness_floating_prompt_background_colorcontrols colour of floating prompt background in Liveness (default:null).gpa_not_ready_overlay_stroke_colorcontrols colour of overlay in GPA in not ready state (default:null).gpa_ready_overlay_stroke_colorcontrols colour of overlay in GPA in ready state (default:null).gpa_not_ready_floating_prompt_background_colorcontrols colour of floating prompt background in GPA in not ready state (default:null).gpa_ready_floating_prompt_background_colorcontrols colour of floating prompt background in GPA in ready state (default:null).
Fixed
- Fixed countdown timer display in Kiosk Mode.
- Fixed the close_button not being sized correctly in Safari.
v1.0.0
Code changes from the Legacy Web SDK
If you're coming from the Legacy Web SDK, the minimal changes that you need to do are:
- Point the SDK's
<script>tag'ssrcattribute to the new URL - Change your event handler from
SpfaceEvent()to attaching an event listener to your<sp-face>element like the example below:
// ...
let spFaceEl = document.querySelector("sp-face");
["cancelled", "connecting", "connected", "error", "failed", "interrupted", "multiple_cameras", "passed", "permission", "permission_denied", "progress", "ready", "started", "streaming", "streamed", "unsupported"].forEach((eventName) => {
spFaceEl.addEventListener(eventName, e => {
this.yourSpFaceHandler(e);
});
})
// ...
And then handling it in a separate function:
yourSpFaceHandler(e) {
switch (e.type) {
case "ready":
// Handle ready event... perhaps a Toast or Snackbar?
break;
case "passed":
// Call /verify/validate endpoint
this.validateResult();
break;
case "failed":
// Call /verify/validate endpoint
this.validateResult();
break;
case "error":
// Handle error event... perhaps a Toast or Snackbar?
break;
default:
break;
}
},
- Remove everything in
sp-face-slots– i.e., with the Legacy Web SDK, you had to implement the following:
<div id="sp-face-slots">
<!-- UI has access to camera and is ready to begin verification -->
<div slot="ready" class="m-1">
<p class="has-text-grey-dark">Thank you. Please proceed to verify your identity.<br></p>
</div>
...
</div>
And this is not needed anymore. The new Face Verify Web SDK will handle all the slots.
Legacy Web SDK
v3.6.1
Added
Users can now choose their webcam in full screen with a new camera selection button.
We've added a set of options for controlling overlay colours, styles, and the floating prompt:
floating_prompt_rounded_cornerscontrols corners of floating prompt. Usefalseto remove border radius (default:true).liveness_overlay_stroke_colorcontrols colour of the overlay in Liveness (default:null).liveness_floating_prompt_background_colorcontrols colour of floating prompt background in Liveness (default:null).gpa_not_ready_overlay_stroke_colorcontrols colour of overlay in GPA in not ready state (default:null).gpa_ready_overlay_stroke_colorcontrols colour of overlay in GPA in ready state (default:null).gpa_not_ready_floating_prompt_background_colorcontrols colour of floating prompt background in GPA in not ready state (default:null).gpa_ready_floating_prompt_background_colorcontrols colour of floating prompt background in GPA in ready state (default:null).
Changed
- Title: We've removed the default title - by default no content will be shown. A
custom_titlecan still be set in SDK options.
Fixed
- Fixed countdown timer display in Kiosk Mode.
- Fixed the close_button not being sized correctly in Safari.
Removed
- Removed
failure_network_problemfrom the language strings as it's never used:
//...
"failure_motion_too_much_movement": "Please do not move during the face scanning process.",
"failure_network_problem": "Sorry, network problem", // remove this
"failure_user_timeout": "Your session has expired",
//...
v3.5.3
Additions & Changes
- When the Web SDK's
<iproov-me>component is removed from the DOM:- we now clean up any open resources such as WebGL render loops and video feeds;
- if this happens before an error or result event (i.e. before the user completes), the SDK now emits an error and invalidates the transaction with the error code
integration_unloaded - We've added an
integration_unloadederror code to handle the above unmounting case for our customers tracking.
Timeouts
- We now handle timeout logic in a much clearer way: The SDK emits an error event with feedback code
error_token_timeoutif the user starts the session too late.
Language strings
If your integration customises language strings, we advise you to update those strings to implement the new message format described below:
- When the SDK runs any of the following callbacks:
error,cancelled,interrupted,permission_denied,no_cameraorunsupported:- The language string mapping to the feedback event property is now displayed as the heading.
- A new language string has been added for each feedback code, suffixed with
_message. - Example:
error_no_camerais the heading term, defaulting to "We couldn't find a camera connected to your device" - Example:
error_no_camera_messageis the text term displayed beneath the heading, defaulting to "A camera must be available to iProov."
In practice, this is what a sample language customisation string will now look like:
// ...
"error_network_message": "...",
"error_no_camera": "No camera!",
"error_no_camera_message": "A camera must be available to use Singpass Face Verification.",
"error_no_face_found": "...",
// ...
If your integration specifies language strings but doesn't implement the new _message suffix, then we fall back to the old behaviour:
heading using the error language term, and text using the corresponding feedback code's language term.
Other additions to language strings
iproov_ready_titleto allow customisation of "Ready to iProov" message on the ready callbackiproov_ready_buttonto allow customisation of "Scan face" message for the ready callback buttonerror_token_timeoutanderror_token_timeout_messagewhen sessions don't start within 10 minutes of token creation- Added
error_device_motion_deniedfeedback code and language string, along witherror_device_motion_denied_messagelanguage string.
:::details See all language strings change list (highlighted)
You can also download the language file here.
// ...
"enrol": "",
"error": "",
"error_asset_fetch": "",
"error_asset_fetch_message": "",
"error_camera": "",
"error_camera_message": "",
"error_camera_in_use": "",
"error_camera_in_use_message": "",
"error_camera_not_supported": "",
"error_camera_not_supported_message": "",
"error_camera_permission_denied": "",
"error_camera_permission_denied_message": "",
"error_device_motion_denied": "",
"error_device_motion_denied_message": "",
"error_device_motion_unsupported": "",
"error_device_motion_unsupported_message": "",
"error_fullscreen_change": "",
"error_expired_token": "", // remove this
"error_fullscreen_change_message": "",
"error_token_timeout": "",
"error_token_timeout_message": "",
"error_invalid_token": "",
"error_invalid_token_message": "",
"error_network": "",
"error_network_message": "",
"error_no_camera": "",
"error_no_camera_message": "",
"error_no_face_found": "",
"error_no_face_found_message": "",
"error_not_supported": "",
"error_not_supported_message": "",
"error_server": "",
"error_server_message": "",
"error_too_many_requests": "",
"error_too_many_requests_message": "",
"failed": "",
"failure_ambiguous_outcome": "",
"failure_lighting_backlit": "",
"failure_motion_too_much_movement": "",
"failure_network_problem": "",
"failure_user_timeout": "",
"iproov_ready_title": "",
"iproov_ready_button": "",
"iproov_success": "",
"label_camera_selector": "",
"iframe_bridge_title": "",
"prompt_too_right": "",
"prompt_increase_screen_brightness": "",
"prompt_poor_lighting_conditions": "",
"prompt_calibrating": "", // remove this
"sdk_unsupported": ""
// ...
:::
v3.4.0
- Edit the language strings (download the language file here with the value pair removed)
Fixed
- UI - Fixed an issue where the UI scaled incorrectly when shifting between orientations and resizing the window
- UI - We've reduced the "page jank" when resizing the UI, when the window resizes change or the phone rotates
Changed
- UI - We've smoothed out the "move closer" prompt to avoid toggling between two UI states.
- Timeouts - We now handle timeout logic in a much clearer way:
- The SDK emits an error event with feedback code
error_token_timeoutif the user starts the iProov session too late. - As before, if the user starts iProoving but doesn't stream imagery in time, the SDK emits a failure event with the feedback code
failure_user_timeout.
- The SDK emits an error event with feedback code
- Error messaging and language - We've increased the level of detail, see
iproov-en.jsonfor the new strings:- When the SDK runs any of the following callbacks:
error,cancelled,interrupted,permission_denied,no_cameraorunsupported:- The language string mapping to the feedback event property is now displayed as the heading.
- A new language string has been added for each feedback code, suffixed with
_message. - Example:
error_no_camerais the heading term, defaulting to "We couldn't find a camera connected to your device" - Example:
error_no_camera_messageis the text term displayed beneath the heading, defaulting to "A camera must be available to use iProov"
- If your integration specifies language strings but doesn't implement the new
_messagesuffix, then we fall back to the old behaviour:- Heading using the "error" language term, and text using the corresponding feedback code's language term.
- When the SDK runs any of the following callbacks:
Added
- Genuine Presence Assurance - added reflection strength estimation capabilities
- Language strings:
error_token_timeoutanderror_token_timeout_messagewhen sessions don't start within 10 minutes of token createiproov_ready_titleto allow internationalisation of "Ready to iProov" on the ready callbackiproov_ready_buttonto allow internationalisation of "Scan face" for the ready callback button
v3.3.8
Changes
Start button
- After the user clicks the start button, we now briefly set the start button
innerHTMLto theprompt_loadinglanguage string while the video starts.
Support checker
- For both GPA and Liveness, we now require fullscreen to be enabled on the webpage.