Summary
As part of the release on August 17, Daily shipped a patch to a Daily Prebuilt custom theming issue that fixed an issue where sometimes provided themes wouldn't take effect.
The fix involved a change to the initial handshake between the DailyIframe
instance and the Prebuilt app running within the iFrame. Daily Prebuilt would block until it received a "launch configuration" from the DailyIframe
, guaranteeing that it would initialize with the appropriate theme upon loading.
The team added a version check in the Daily Prebuilt app launch logic, so that it would only wait and check for a launch config when the version of DailyIframe
was new enough: version 0.16.0 or above.
The check treated the concatenation of the major and minor version as a float (e.g. it treated "0.16.0" as the number 0.16). This works when comparing down to version 0.10, because 0.16 is greater than 0.15, 0.14, 0.13, etc. But for single-digit minor version numbers, this check breaks down: 0.16 is actually less than 0.9.
Impact
Anyone using daily-js versions 0.9.x and below in iframe mode to control the new Daily Prebuilt wouldn't be able to make calls—the Daily Prebuilt app would hang forever on launch, rendering nothing.
Detection and Resolution
- 9:04 EDT: Failure to render older versions of Daily Prebuilt was brought to the team's attention by a customer.
- 10:29 EDT: A Daily engineer submits a fix to the issue. It's merged within a few minutes.
- 16:10 EDT: The Prebuilt fix is deployed to production.
Analysis
- The code change that caused the compatibility issue was done rather hastily, and did not consider the full range of daily-js versions that were in use.
- There was an unnecessarily long gap between the fix being merged and the fix making it to production.
- The team didn't appoint one individual to manage this incident.
- There were two incidents ongoing at the same time, and this one did not get the attention necessary for the team to deliver a fix in a timely fashion.
- The team was bottlenecked on deployment activities at the moment when this fix was incorporated into our codebase.
- The team makes an effort to fully support releases of daily-js for 6 months, but there is no public mention of a 6-month window of support for older daily-js versions in Daily's documentation.
Actions
- Create a procedure for how to test different DailyJS bundle versions with latest server code.
- Gather metrics to better understand how much usage each version of daily-js is getting, by minutes, calls, and customers, and broken down by Prebuilt versus custom implementations.
- Provide public outline of what versions of daily-js are supported and when a version is reaching the 6-month timeline.
- Add daily-js version to logs, and warn when an unsupported or deprecated daily-js version is being used.