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_again
custom 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_again
custom event.
v1.2.0
Added
- Implemented new slot designs:
cancelled
error
grant_permission
interrupted
Fixed
allow_landscape
should 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_corners
controls corners of floating prompt. Usefalse
to remove border radius (default:true
).liveness_overlay_stroke_color
controls colour of the overlay in Liveness (default:null
).liveness_floating_prompt_background_color
controls colour of floating prompt background in Liveness (default:null
).gpa_not_ready_overlay_stroke_color
controls colour of overlay in GPA in not ready state (default:null
).gpa_ready_overlay_stroke_color
controls colour of overlay in GPA in ready state (default:null
).gpa_not_ready_floating_prompt_background_color
controls colour of floating prompt background in GPA in not ready state (default:null
).gpa_ready_floating_prompt_background_color
controls 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'ssrc
attribute 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_corners
controls corners of floating prompt. Usefalse
to remove border radius (default:true
).liveness_overlay_stroke_color
controls colour of the overlay in Liveness (default:null
).liveness_floating_prompt_background_color
controls colour of floating prompt background in Liveness (default:null
).gpa_not_ready_overlay_stroke_color
controls colour of overlay in GPA in not ready state (default:null
).gpa_ready_overlay_stroke_color
controls colour of overlay in GPA in ready state (default:null
).gpa_not_ready_floating_prompt_background_color
controls colour of floating prompt background in GPA in not ready state (default:null
).gpa_ready_floating_prompt_background_color
controls 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_title
can 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_problem
from 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_unloaded
error 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_timeout
if 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_camera
orunsupported
:- 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_camera
is the heading term, defaulting to "We couldn't find a camera connected to your device" - Example:
error_no_camera_message
is 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_title
to allow customisation of "Ready to iProov" message on the ready callbackiproov_ready_button
to allow customisation of "Scan face" message for the ready callback buttonerror_token_timeout
anderror_token_timeout_message
when sessions don't start within 10 minutes of token creation- Added
error_device_motion_denied
feedback code and language string, along witherror_device_motion_denied_message
language 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_timeout
if 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.json
for the new strings:- When the SDK runs any of the following callbacks:
error
,cancelled
,interrupted
,permission_denied
,no_camera
orunsupported
:- 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_camera
is the heading term, defaulting to "We couldn't find a camera connected to your device" - Example:
error_no_camera_message
is 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
_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.
- When the SDK runs any of the following callbacks:
Added
- Genuine Presence Assurance - added reflection strength estimation capabilities
- Language strings:
error_token_timeout
anderror_token_timeout_message
when sessions don't start within 10 minutes of token createiproov_ready_title
to allow internationalisation of "Ready to iProov" on the ready callbackiproov_ready_button
to 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
innerHTML
to theprompt_loading
language string while the video starts.
Support checker
- For both GPA and Liveness, we now require fullscreen to be enabled on the webpage.