Build truly artisanal hybrid apps

Peregrine was built for curious, detail-oriented developers to explore the full potential of iOS and Android while providing the essentials for feature-rich web views.

Type-safe serialization

Peregrine for iOS is written in 100% Swift. Use Codable interfaces for type-safe serialization and de­serialization.

struct LocationResponse: Encodable {
    let lat: Double
    let lng: Double
}

func getLocation(call: Call) {
    
    let response = LocationResponse(
        lat: location.coordinate.latitude,
        lng: location.coordinate.longitude
    )

    try! call.respond(with: response)
}
const { lat, lng } = await client.getLocation()

console.log(`You are at Latitude: ${lat}, Longitude: ${lng}`)

Asynchronous reactivity

Use Apple’s Combine framework to build reactive data pipelines that send asynchronous events to the web layer.

struct KeyboardEvent: Codable {
    let state: String
    let height: Double
}

class Keyboard {
    @Published var keyboard: Event?
    
    init() {
        
        Publishers
            .MergeMany(willHidePublisher, didHidePublisher, willShowPublisher, didShowPublisher)
            .assign(to: &$keyboard)
    }
}
const { Keyboard } = client

for await (const { state, height } of Keyboard.keyboard$) {
  console.log(`Keyboard is ${state}, height: ${height}`)
}

Roadmap

Recipe Book

Create a shared repository for native code snippets, called Recipes.

1.0 Release

Reach version 1.0.0 on Peregrine for Web, iOS, and Android.

Performance Enhancements

Only use HTTP/MessageChannels for the bridge when necessary.

Binary support for Android

Bring parity with iOS by supporting binary data.

App Portfolio

Celebrate and showcase success stories of Peregrine users.

Subscribe to our newsletter

Keep up to date with release announcements, community updates, new recipes, and more.