[ Package conformance ]

Expo SDK · >=14.0.0

expo-print

printAsync routes through real window.print() (browser print dialog). printToFileAsync now produces a REAL, structurally-valid PDF (verified by `file`/macOS as com.adobe.pdf) carrying the html's text content + a real page count, written to the same in-memory cache the expo-file-system stub serves — so the returned `file:///sootsim-cache/Print/*.pdf` URI resolves to genuine PDF bytes (readAsStringAsync / FormData upload / Sharing / Print preview all work), and base64 (when requested) decodes to those bytes. This replaces the old `mock://print.pdf` dangling URI that broke every consumer. Fidelity caveat: the worker has no WebView render engine, so the PDF reproduces the document's TEXT (paginated, escaped) but NOT CSS/image layout — a degraded-but-real simulation of iOS's WKWebView→UIPrintPageRenderer output.
80%
API coverage
ExpoPrintLibraryCase PeachExpoPrintLibraryCase iOS
← iOS|Peach →
expo-printExpo Printexpo-print printToFileAsync HTML → PDF shape — verifies result.uri is a string ending .pdf, numberOfPages > 0, base64 typeof string, and Print.Orientation.portrait/landscape constants match the expected string values. renders `print:ready:ok` on both targets.
Diff0.29%
DeviceiPhone 16
OracleiOS
CapturedMay 13, 2026
iOSPeachDiff
Working (10)
upstream validation and concurrency guardprintAsync (real window.print)printToFileAsync (real PDF bytes: %PDF headercatalog/pages treexrefpaginated text contentreal numberOfPagesreal file:// uri + base64)selectPrinterAsyncOrientation enum
Missing (4)
CSS/image/font layout fidelity in the generated PDF (text-only render — needs a worker WebView engine to match WKWebView pixel output)useMarkupFormatter (same text path)printerUrl/AirPrint physical printingnative printer selection sheet (selectPrinterAsync returns undefined)