We’ve been hard at work for the last several months upgrading aspects of our platform across the stack, including our recent announcement of our new standards-based identity architecture and mobile app.

This has all been part of our mission to make uPort a trustworthy, flexible, and inclusive identity solution that empowers people to take control of their relationships.

With the latest iteration of the uPort mobile app, creating an identity is easier than ever: free, instantaneous, and requiring no interaction with Ethereum.

What about the devs?

While we’re certainly proud of these accomplishments for end users, to fully empower people to take control of their relationships, we need to empower developers to seamlessly integrate uPort into a variety of applications.

For developers, uPort is a way of securely interacting with users and their data, while simultaneously respecting privacy.

By giving users greater control of their data, you can reduce the overhead required to maintain an application, eliminating the need for massive databases of user information, and building GDPR compliance into your architecture from the start. As a bonus, your users will have an easy on-ramp to the Ethereum ecosystem, abstracting away key and account management behind a simple user interface.

I’m proud to announce that this week we’ve taken a giant step towards making this vision a reality, with the 1.0 release of our javascript libraries: uPort Connect, and uPort Credentials, plus a brand new library in beta, uPort Transports, which make up the other half of our integrated identity solution.

We’ve listened to you

After collecting extensive feedback from developers integrating uPort in both Web 2.0 and Web 3.0 applications, we have addressed a number of the major pain points and shortcomings of our libraries, and are excited to enter a new phase of development focusing on adding features that solve problems for our users: developers and non-developers alike.

Let’s get down to libs

First and foremost, we’ve clarified the purpose of each of our libraries to reduce redundancy and confusion, removing duplicated functionality between them, and settling on a (more) mature API which reflects this.

uPort Connect

First among these is uPort Connect, our opinionated and fully featured library for interacting with a uPort identity from a web browser. This is the plug-n-play Self-Sovereign Identity solution you’ve always wanted: a decentralized equivalent of Facebook Connect, providing preconfigured flows to authenticate users, request data from their uPort mobile app, issue verified data back to them, and make transactions on the Ethereum network.

uPort Credentials

Sometimes, you need a little more flexibility; uPort Credentials is our primary library for creating and using a uPort identity in javascript. It’s best thought of as a lightweight version of the mobile app that you can use anywhere: client or server.

It can sign pieces of data as JSON Web Tokens (JWTs), verify data signed by other identities, and make selective disclosure requests for data held by other identities (such as a uPort mobile app).

This is the library you should use if your app has a specific identity that needs to issue credentials that can be tied back to it, or if your application needs to spin up new identities on the fly.

uPort Transports

Finally, we’ve untangled the communication logic used by uPort Connect and are releasing it as a separate library, uPort Transports. This is the missing piece that helps transport messages created with uPort Credentials to users’ mobile apps, via QR codes, bridge servers, push notifications, or plain old links.

Based on feedback from developers, we’ve built out our variety of transports in response to issues that arise in trying to support communication with the uPort app from a variety of browsers and operating systems. You can use this library to craft your own channel of communication between an instance of uPort Credentials and the mobile app, whether it be in a browser, on a server, or on the moon.