Skip to main content


Control webviews programmatically with the Pipeable iOS and (soon) Android SDKs

try? await page.goto("", waitUntil: .networkidle)

let searchForm = try await page.waitForXPath(
    "//form[contains(@action, '')]", visible: true

let textAreaEl = try await searchForm?.querySelector("input[type='text']")

try await textAreaEl!.type("web automation", delay: 50)

try await page.submitActiveForm()

try await page.waitForURL { url in url.contains("hn.algolia") }

try await page.waitForSelector(".Story_title", visible: true)

let stories = try await page.querySelectorAll(".Story_title a > span")

var storyTitles: [String] = []
for story in stories {
    if let title = try await story.textContent() {

WebView Mastery

Gain unprecedented programmatic control over in-app embedded browsers, also known as webviews.

Cross-Platform SDK

Harness the power of the Pipeable SDK with seamless integration across both iOS and (soon) Android platforms.

Universal Automation

Build automations that leverage the document object model (DOM) and can do anything that a user can do, unrestricted by the absence or limitations of APIs.

Broad Compatibility

Leverage Pipeable's compatibility with Puppeteer and Playwright to utilize the same automation code on both cloud and client platforms.

Seamless Authentication

Empower users to effortlessly sign into websites using their preferred auth methods, such as FaceID or TouchID. The tight integration between webviews and mobile OSes eliminates the need for manual credential entry or explicit sharing.

Client and Cloud

Execute automations entirely on the client for better privacy and security. Or offer users an option to continue the session in the cloud for better convenience and more flexibility.