Local Schemes

The capacitor:// and https:// Local Schemes

No web server runs inside a Capacitor 243,123 app. The WebView loads a URL that only looks remote, and native code answers each request from the files cap copy bundled:

Native files outside the bundle, such as a photo the Camera plugin saved, reach the page through the reserved path /_capacitor_file_ on the same origin, which Capacitor.convertFileSrc() builds. The probe logs its origin and one converted path:

The local origin and a converted file path, from logcatShell
adb -s emulator-5558 logcat -d -v tag -s Capacitor Capacitor/Console \
  | grep -E "Loading|local req|origin|file " | sed 's/File: .* Msg: //'
Output
W/Capacitor: Unable to read file at path public/plugins
D/Capacitor: Loading app at https://localhost
D/Capacitor: Handling local request: https://localhost/
D/Capacitor: Handling local request: https://localhost/assets/index-DTZYojoh.js
I/Capacitor/Console: platform=android origin=https://localhost
I/Capacitor/Console: file https://localhost/_capacitor_file_/data/user/0/com.example.booknest/f
  iles/c.jpg
D/Capacitor: Handling local request: https://localhost/favicon.ico

The warning only means the app has no Cordova 129 plugins (Migrating from Cordova). As a secure context, https://localhost runs crypto.subtle and service workers, and because the origin never changes, localStorage and IndexedDB survive app updates. Changing hostname or the scheme in a shipped app "loses" that data (The server Block), a trap Scheme Change and Data returns to.