This is a template for slides for TPAC 2025.

Reader(s): To start the slide show, press ‘A’. Return to the index with ‘A’ or ‘Esc’. On a touch screen, use a 3-finger touch. Double click to open a specific slide. In slide mode, press ‘?’ (question mark) to get a list of available commands. To start the slide show, press Shift+F5 (Command+Enter on Mac). Return to the index by pressing ‘Esc’. You can also click to open a specific slide.

If it doesn't work: Slide mode requires a recent browser with JavaScript. If you are using the ‘NoScript’ add-on (Firefox or the Tor Browser), or changed the ‘site settings’ (Chrome, Vivaldi, Opera, Brave and some other browsers), or the ‘permissions for this site’ (Edge), you may have to explicitly allow JavaScript on these slides. Internet Explorer is not supported.

Leaving slide mode.

Modular Web Engines

Niklas Merz / Martin Alvarez

TPAC 2025
Kobe, Japan & online
12 November 2025

Agenda

  1. Intro and background on the challenge
  2. Design of a new embedded engine (Bai Haili & Shen Jing, Huawei)
  3. Your feedback
  4. Open questions and discussion

Logistics & Administrivia

WebViews for cross-platform

WebViews for cross-platform

A full-fledged WebView (complete implementation of Web standards) is not always required

Case Study: MiniApps

See the standards gap analysis of MiniApp APIs and MiniApp elements.

MiniApps APIs Gap

Type API Description #1 #2 #3 #4 2+ Standard
Data management Data storage Get, set key=value pairs yes yes yes yes yes Storage API (IndexedDB API), Web Storage API
File system management Storage, management in the local file system yes yes yes yes yes File System API, File and Directory Entries API
Data exchange with other MiniApps Data exchange between installed apps yes yes yes yes Broadcast Channel API, Channel Messaging API
Compression/Decompression ZIP file management yes yes yes yes
Clipboard Clipboard set/get yes yes yes yes yes Clipboard API
Cryptography Encryption, decryption, random yes yes yes yes Web Crypto API
Cache Cache management (rules, cleaning, etc.) yes Content Index API
Sensors Accelerometer Sensors yes yes yes yes yes Sensor APIs (Accelerometer)
Compass Sensors yes yes yes yes yes Sensor APIs (Magnetometer)
Gyroscope Sensors yes yes yes yes yes Sensor APIs (Gyroscope)
Proximity sensor Sensors yes Proximity Sensor
Step counter Sensors yes yes yes yes
Ambient light sensor Sensors Sensor APIs (Ambient Light)

MiniApps Markup Elements

Type Feature Style? Funct.? Rec? Standard solution?
Container Content division <div> direct usage
Inline container <span> direct usage
Dialog <dialog> direct usage
Stacking container yes <div>* HTML + CSS (div { position: relative; })
Slideshow (carousel) yes <div>* HTML + CSS Flexbox + overscroll-behavior + scroll-behavior...
Tabs yes <nav><section>* (OpenUI) (navs + section + CSS)
List container yes <ul><li> HTML + CSS
Fixed container yes <div>* HTML + CSS
Scrolling container yes <div>* HTML + CSS
Grid layout yes <div>* HTML + CSS
Marquee yes <marquee> (deprecated)* HTML + CSS
Drag and drop yes <div>* HTML + Drag and Drop API
Pull to refresh yes <div>* HTML + JS + CSS
Conditional block @style CSS media queries
Navigation Bar <nav> HTML + CSS

Reduce fragmentation

MiniApp platforms plus several for Android, including WebAPKs, Instant Apps, Quick Apps...

Applicable to new scenarios (WoT)

e-ink IoT Thermostats

Source

UIs & APIs for chatbots

Deepseek chatbot

Use Case Optimization

Only subsets selected from the full set of standards

Use Case Optimization

Only subsets selected from the full set of standards

Open discussion

Ideas to define profiles

Where? High-Performance Web CG, MiniApps CG, Web DevX CG, WebViews CG...

Thank you

https://espinr.github.io/talks/2025/1112-Modular-Web-Engines-TPAC