Skip to content

Capacitor iOS Research

cheyras edited this page Sep 13, 2026 · 1 revision

Capacitor on iOS — archived scanner-platform research

Research snapshot: 2026-09-01. Ingested into the wiki: 2026-09-13. This page preserves a historical investigation into an optional native scanner route for DeckPal. Issue statuses below are those saved in the snapshot; they have not been refreshed. The reports are evidence of what their authors encountered, not current App Store policy or a guarantee of acceptance.

Why DeckPal was investigating this

The scanner redesign plan sought fast on-device card detection, rectified captures and a reviewable collection batch. Its later RECOMMENDATION.md chose a learned corner detector deployed on the web, with classical refinement. It held Capacitor plus Apple's VNDetectRectanglesRequest as a fallback if measured device performance made the web route unsuitable.

The companion report, R6-capacitor-remote-url.md, dated 2026-09-01, asked whether a thin Capacitor shell could load DeckPal's live Vercel URL through server.url while exposing that native capability. Its recorded conclusion was that the fallback brought extra deployment and WebView considerations; it favored evaluating a bundled shell and an update channel over assuming remote loading preserved the existing deployment model unchanged. That is the archived report's assessment, not a fresh platform recommendation.

Inference about this particular search: its seven results focus on iOS submission, SDK packaging, permissions, authentication and service workers, which fit that fallback assessment. The saved response does not contain the original search query, so its exact wording and the author's selection process cannot be recovered from this file. These records establish a research option and recommendation; they do not establish that a Capacitor app was built, submitted, approved or shipped.

Original context artifacts, recorded before repository cleanup:

  • roadmap/plans/card-scanner-redesign/PLAN.md — scanner intent and on-device detection decision.
  • roadmap/plans/card-scanner-redesign/p2-work/research/RECOMMENDATION.md — primary web approach and gated native fallback.
  • roadmap/plans/card-scanner-redesign/p2-work/research/R6-capacitor-remote-url.md — the remote-loading/deployment question and historical assessment.

What the seven saved issues contributed

Dates and statuses in this table come from the saved GitHub fields, not a live lookup. “Closed” alone does not establish a shipped fix: the snapshot contains issue bodies and metadata, but no comment threads or linked fixes.

Source issue Recorded status and dates Reported finding Relevance to the DeckPal investigation
#8537 — SDK freshness and signatures Open; created 2026-07-23; updated 2026-08-07. The reporter said official Capacitor/Cordova frameworks failed SDK-freshness validation (ITMS-90111), while rebuilding with a newer SDK produced a signature failure (ITMS-91065). They requested updated publisher-signed binaries. A native fallback would depend on a working distribution chain, not just a Swift plugin that compiles locally. The report's broad claim that shipping was impossible is an unverified reporter conclusion, not this archive's finding.
#7176 — Privacy Manifest request Closed 2024-03-11; created 2024-01-05; updated 2024-05-26. A feature request asked Capacitor to include an iOS Privacy Manifest, citing Apple's then-announced third-party SDK requirements and linking Apple documentation. SDK packaging and privacy declarations were another release dependency to check when evaluating native adoption. The saved closure does not identify which release implemented the request.
#5661 — Non-public API rejection Closed 2022-06-07; created 2022-06-06; updated 2022-07-13. A Capacitor 3.5.1 user reported ITMS-90338 during submission, naming selectors in Capacitor.framework despite a successful Capacitor Doctor result. A green local environment check did not prove submission acceptance in this historical case. The body does not settle whether the cause was framework behavior, validation behavior or another factor.
#4122 — App-Bound Domains and service workers Closed 2021-02-06; created 2021-01-27; updated 2022-11-10. A requester planning production server.url use wanted configurable App-Bound Domains and a WKWebView setting to enable service workers on iOS 14+. They cited a trusted-domain limit of ten. This directly connects remote loading to the PWA/offline assumptions under investigation. It is a historical feature request, not proof that today's configuration needs the same workaround or guarantees offline behavior.
#2878 — Deprecated UIWebView rejection Closed 2020-05-07; created 2020-05-07; updated 2020-06-08. A Capacitor 2.0.2 project reported ITMS-90809 while uploading for TestFlight. Its Cordova plugins included camera, in-app browser and video editor; changing or removing its in-app-browser/auth path did not resolve the reported rejection. Native dependency and plugin contents mattered beyond DeckPal's own web code. The reporter had not established the culprit, so this is not evidence that Capacitor itself universally used the rejected API.
#2308 — Sign in with Apple plugin request Closed 2020-01-09; created 2020-01-08; updated 2020-06-17. A developer offering Google sign-in requested an official Apple sign-in plugin because the Cordova alternatives they tried did not work with Capacitor. They framed it around the App Store login rules they understood in January 2020. Authentication parity was part of evaluating an iOS wrapper. The quoted policy and plugin-availability statements belong to that date; this archive does not apply them to a current DeckPal release.
#1942 — Referenced privacy APIs and purpose strings Closed 2020-01-23; created 2019-09-10; updated 2022-11-11. A Capacitor 1.2.0 user reported a missing photo-library purpose-string rejection even though they said they never invoked the relevant permission path. They proposed making native capabilities more modular. The archive highlights the distinction between bundled native APIs and features actually called by the web app. It does not endorse the reporter's placeholder-string workaround or establish a current permission checklist.

Preserved evidence and limits

The original scratch file r2.json was a GitHub search response, not a Cloudflare R2 configuration. Its exact bytes are preserved in the raw search snapshot. The archive filename uses the source file's last-modified date, 2026-09-01 (16:20:38 UTC); the response itself contains no retrieval timestamp or original query. It records search_type: lexical, total_count: 7 and incomplete_results: false. That describes this response, not an exhaustive survey of Capacitor or iOS release failures.

  • Snapshot size: 41,670 bytes.
  • SHA-256: d9cd20920664865a88282765ea7315923f59573d05643a91e05b3066b3ac3cb9.
  • Reports span 2019–2026 and different Capacitor versions. Combining them does not show that all seven problems coexisted in one release.
  • Comment counts are present, but comments, maintainer explanations and resolution commits are absent. Saved statuses cannot supply those outcomes.
  • No current SDK, Capacitor, Apple-policy, pricing or app-shipping claim has been independently verified during this ingestion. A future native-platform decision needs fresh primary-source checks and an actual release experiment.

See Frontend Research for the broader web architecture and Decision Log for recorded project decisions.

Last updated by Codex in-session worker on behalf of @cheyras -- 2026-09-13

Clone this wiki locally