KaiOS

Migrating KaiOS Apps to Cloud Phone

Migrating KaiOS Apps to Cloud Phone

KaiOS developers can easily migrate their web apps to Cloud Phone with minimal changes.

Both KaiOS and Cloud Phone run web apps on feature phones. KaiOS is an operating system forked from Firefox OS that uses the Gecko rendering engine. Cloud Phone is a Chromium-based remote browser service available on budget feature phones that run on a real time operating system (RTOS).

Packaged vs Hosted

KaiOS has two app types.

Packaged apps are ZIP files that contain all the HTML, CSS, and JS.
Hosted apps are web apps available via an HTTPS URL.

Both app types are installed via the KaiStore (JioStore in India). Since all required code is bundled into a ZIP, packaged apps easily work offline. Hosted apps can work offline, but require a service worker similar to a progressive web app (PWA). Unlike packaged apps, hosted apps can be updated instantly without submitting new builds to each app store.

All Cloud Phone apps are rendered on servers and accessed via an HTTPS URL, similar to hosted apps on KaiOS. Packaged apps must be hosted to work on Cloud Phone.

Rendering Engine

Cloud Phone uses Chromium (currently Chromium 128) released in August 2024. New Chromium releases are regularly incorporated into Cloud Phone after a validation period. As a result, you do not need to worry about backwards compatibility or supporting a nearly decades old browser. The Chromium version can be parsed from the User-Agent header, in this example Chrome/122.0.6261.111 from April 2024 on a Nokia 110 4G.

Mozilla/5.0 (Cloud Phone; Nokia 110 4G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.111 Mobile Safari/537.36 Puffin/12.1.1.46653FP

Since KaiOS descends from Firefox OS, it uses the same Gecko rendering engine as the Firefox web browser. The KaiOS version corresponds to the Gecko version.

KaiOS VersionGecko EngineRelease Date
KaiOS 1.037March 2015
KaiOS 2.548August 2016
KaiOS 3.084October 2020
KaiOS 4.0123N/A

Because the rendering engine is such a critical part of the operating system, it is not updated independently of the OS. The vast majority of KaiOS devices run v2.5 based on Gecko 48, released back in 2016.

Migration

Required to build a KaiOS app for Cloud Phone

  • Remove the -moz- prefix from CSS properties, i.e. -moz-user-select
  • Remove the moz prefix from event handlers, i.e. mozorientationchange
  • Remove calls to navigator.b2g and navigator.moz APIs
  • Adapt designs for fullscreen QQVGA and QVGA screens

Tips to further optimize for Cloud Phone

  • Remove Polyfilled APIs
  • Remove Babel transpilation
  • Remove runtime dependencies like core-js

Manifest

KaiOS apps declare the permissions they need in a manifest.webapp (KaiOS 2.5) or manifest.webmanifest (KaiOS 3.0) file. Cloud Phone widgets do not need a manifest file.

Features

Cloud Phone supports many standard Web APIs and capabilities including:

Cloud Phone does not provide KaiOS’ non-standard APIs like systemXHR, Audio Channels, Alarms, or TCP/UDP Sockets. Additionally, KaiOS 2.5 restricts the use of Web Components behind the moz-extremely-unstable-and-will-change-webcomponents permission while Cloud Phone natively supports Web Components and the Shadow DOM.

Offline Support

Cloud Phone requires an active internet connection. Your app does not need to support offline usage.

Additional Considerations

Traffic Origination

Cloud Phone widgets run on servers while KaiOS apps run on the user’s device. Requests made from Cloud Phone originate from CloudMosa data centers, with the user’s IP address included in the X-Forwarded-For header. You may need to adjust analytics services to properly reflect the user’s IP address including IP-derived information like geolocation and network type.

Performance Optimization

Cloud Phone servers have significantly more resources (i.e. RAM, CPU) than KaiOS phones that typically have 256mb (KaiOS “Lite”), 512mb (most common), or 1GB (KaiOS 3.0+) of RAM. Your KaiOS app should perform similar, or better, on Cloud Phone under stable network conditions.

Responsive Design

All KaiOS phones have the same screen resolution (QVGA; 240x320) and same orientation (portrait), with the exception of the JioPhone 2 that has a landscape display. Cloud Phone is designed to run on devices with varying screens, including QQVGA and QVGA. You should adapt your app using responsive design to ensure it displays properly on screens of all sizes.

Icons

Both Cloud Phone and KaiOS suggest circular or rounded rectangle icons with similar padding. Resize app icons to 80x80 pixels and upload to the Cloud Phone developer portal.

Testing

Testing KaiOS apps varies based on OS version, and developer tools are available on a limited number of devices. You can test Cloud Phone widgets for free using the web-based Cloud Phone Simulator, or enable developer mode on any device. Developers can also contact CloudMosa to request a reference device.

Summary

Cloud Phone is a new and fast-growing platform that KaiOS developers can easily distribute their apps on. Both KaiOS and Cloud Phone target T9 feature phones that use D-pad navigation, and both are available in emerging markets around the world. Register for the Cloud Phone Developer Program and start developing for Cloud Phone today!