Get Started

Cloud Phone widgets are web apps that connect the world’s most underserved communities on feature phones. Widgets work for anyone, anywhere, on any device, all with a single codebase. Cloud Phone’s advanced remote browser provides access to real-time content from the web, so you can build using standard Web APIs.

Why Cloud Phone?

Familiar APIs: Cloud Phone uses W3C Standard Web APIs

Powerful Servers: Cloud Phone widgets run on powerful Chromium-based servers

Instant Updates: Cloud Phone widgets are loaded in real-time

Online Simulator: Access the Cloud Phone Simulator online today

No Cost: Register and publish for free on Cloud Phone

There are no special SDKs to learn, no time-consuming profiling and optimization, no registration fees, and no complex distribution models or firmware over-the-air (FOTA) upgrades to coordinate. You are in full control of the experience.

Developer Program

Get started today, join the Cloud Phone Developer Program

Growth

In 2024, Cloud Phone’s reach has expanded to over 90 markets, impacting millions of users across India, the Philippines, Vietnam, South Africa and beyond. Through key partnerships with HMD, itel, Viettel and more we’re seeing firsthand how affordable devices are closing the digital divide and making a real difference in underserved communities.

One year after launch, Cloud Phone continues to grow. As of December 2024:

  • There are 1M+ active users on Cloud Phone
  • Cloud Phone is integrated on 40+ phone models across 37 brands
  • Cloud Phone is available in 90 markets worldwide
  • Daily unique users grew 500% in Q4 2024

The Basics

Cloud Phone for Developers is written for software engineers with prior web development experience. It assumes a working knowledge of the following technologies.

Prerequisites

HTML

HyperText Markup Language (HTML) provides structure for content. Cloud Phone supports all HTML5 tags and custom elements supported by Chromium.

CSS

Cascading Style Sheets (CSS) provides instructions to style and lay out content. Cloud Phone supports all CSS page layout techniques that Chromium supports including Flexbox, Grid, Table, Floats, and Multi-Column, as well as Relative, Absolute, and Sticky positioning.

JavaScript

JavaScript enables interactive functionality such as responding to keyboard events and fetching asynchronous resources. The ECMAScript is a standardized specification for the JavaScript language. Cloud Phone fully supports ES2023 and supports some ES2024 methods.

HTTP

HyperText Transfer Protocol (HTTP) is the foundation for transmitting information like HTML documents on the web. HTTP follows a client-server model. All Cloud Phone widgets are accessed via HTTP, with support for HTTP/2 and HTTP/3 using the QUIC transport protocol.

Resources

If you need a refresher, there are many great resources to learn web development.

Cloud Phone Fundamentals

CloudMosa data center used for Cloud Phone

Cloud Phone is a remote browser based on the same Chromium engine that powers Google Chrome. This means that most web apps built for Chrome will work well on Cloud Phone with just a few changes. There are a few important considerations that make Cloud Phone different.

  • Small screens: 1.8-2.4" QQVGA or QVGA
  • Keyboard navigation: arrow, soft keys, and T9
  • Hardware-limited API availability
  • Server-side rendering
Cloud Phone Architecture

Learn the foundations behind the Cloud Phone remote browser

Design

Cloud Phone is specifically designed for budget feature phones. These devices typically have low-end hardware, including small non-touch screens. You should test widgets using a 4:3 aspect ratio and the smallest resolutions: QQVGA (128x160) and QVGA (240x320).

Many frameworks and libraries automatically support responsive design that adapts layouts to fit common screen sizes. However, most popular tools like Tailwind define the smallest breakpoint at 640px. This is 5x the width of the smallest QQVGA devices running Cloud Phone!

Moreover, because Cloud Phone devices navigate using a keyboard instead of touchscreen gestures, navigation hints need to be displayed on screen. It’s best practice to display menu elements like a soft key bar and follow conventional layouts.

Cloud Phone Design

Learn to design for the next billion on Cloud Phone feature phones

Keyboard Navigation

Arrow key navigation

Because touchscreens have become ubiquitous, many JavaScript frameworks don’t support arrow key navigation out of the box. Meanwhile, most Cloud Phone devices have the following keys available:

  • Soft Keys: left soft key (LSK) and right soft key (RSK)
  • Arrow Keys: ArrowUp, ArrowRight, ArrowDown, and ArrowLeft
  • T9: the numbers 0-9 in a 3x4 grid used for alphanumeric input
Soft Keys

Soft Keys are conventionally mapped as follows:

  • LSK: toggle the menu via the key name Escape
  • RSK: go back to the previous history entry

On Cloud Phone, RSK is mapped to history.back() by default. Widgets can override this behavior using the global back event

Arrow key navigation requires keeping track of, and displaying, the currently-focused element. When the user presses an arrow key, focus is moved to the next or previous element in a list or grid. It’s best practice to avoid nesting too many focusable elements to allow for efficient scrolling.

Keyboard Keys

Use KeyboardEvent.key to identify which key was pressed. This table shows all of the standard keys that can be intercepted by your app.

KeyKey CodeCode
Escape27Escape
ArrowUp38ArrowUp
ArrowLeft37ArrowLeft
ArrowRight39ArrowRight
ArrowDown40ArrowDown
Enter13Enter
Call0Power
149Digit1
250Digit2
351Digit3
452Digit4
553Digit5
654Digit6
755Digit7
856Digit8
957Digit9
*106NumpadMultiply
048Digit0
#51Digit3

The RSK cannot be intercepted directly, but can by using the back event. The EndCall key is handled by the operating system to exit the Cloud Phone app and cannot be override.

User Agent

Cloud Phone sends the User-Agent header with each request. Here is an example user agent from the Nokia 225 4G.

  Mozilla/5.0 (Cloud Phone; Nokia 225 4G) AppleWebKit/537.36 (KHTML like Gecko) Chrome/128.0.6613.170 Mobile Safari/537.36 Puffin/128.0.1.59191FP

User Agent Components

  • Cloud Phone identifies all Cloud Phone devices
  • Nokia 225 4G is the device model name. Generic is used by the Cloud Phone Simulator
  • Chrome/128.0.6613.170 identifies the Chromium version used by Cloud Phone servers
  • Puffin identifies the remote-browser architecture shared with the Puffin browser

Web API Availability

Cloud Phone supports many popular Web APIs. However, some APIs may not be available due to several factors.

  • Hardware Limitations: for instance, not all Cloud Phone devices have a camera
  • Client Version: outdated Cloud Phone client versions may not support specific features
  • Under Development: not all hardware is supported by Cloud Phone (yet)

Supported APIs

Supported APIs

As a general rule, Web APIs that execute and render solely on Cloud Phone servers are fully supported.

Limited Support

Limited Support

Cloud Phone has limited support for the following APIs, depending on client version:

  • File Upload and Download are available on Cloud Phone 2.7.0 or higher
  • MediaDevices and audio streaming via the built-in microphone are available on Cloud Phone 3.0 or higher
  • Vibration API is available on Cloud Phone 3.0 or higher

Unsupported APIs

Unsupported APIs

Planned Support

In Development

The following APIs are currently unavailable, but may become available for future Cloud Phone client versions on new devices.

Unsupported APIs

Unsupported

The following APIs are not necessary in the context of Cloud Phone and aren’t available or don’t function as expected.

  • WebXR APIs: virtual reality (VR) and augmented reality (AR) are unsupported
  • Filesystem: no access provided to the device filesystem
  • Payment Request API: no support for web payments
  • Fullscreen and Picture-in-Picture: Cloud Phone widgets already run fullscreen, and are too small for PiP
  • Remote Playback: feature phones do not support the Apple AirPlay or Google Chromecast protocols
  • Web MIDI API: Musical Instrument Digital Interface (MIDI) unavailable
  • Drag and Drop: the drag and drop paradigm doesn’t work on devices without a touchscreen or cursor
  • WebUSB: USB peripherals are not available on feature phones
  • Gamepad API: low-end feature phones don’t support complex peripherals
  • Clipboard API: copy-paste on T9 devices requires complex interfaces
  • Battery and Memory: these return values of the Cloud Phone servers, not client devices

Upgrades and Updates

We are constantly updating both the Cloud Phone client and servers to support new features and upgrade to the latest Chromium builds. If your widget needs access to unsupported APIs, contact us to discuss timelines or alternatives.

Contact Us

Contact Cloud Phone support to suggest a feature or report a bug

Get Support