···2233All notable changes to this project will be documented in this file.
4455+## [2.2.1] - 2025-11-29
66+77+### Added
88+99+- **Documentation resources**: Added links to AT Protocol OAuth documentation
1010+ and official example implementations in both guides
1111+512## [2.2.0] - 2025-11-29
613714### Added
···5566## Overview
7788+This library implements the
99+[Backend-for-Frontend (BFF) pattern](https://atproto.com/specs/oauth#confidential-client-backend-for-frontend)
1010+recommended by AT Protocol for mobile apps requiring long-lived sessions. Your
1111+server acts as the OAuth client, keeping tokens secure while the mobile app
1212+receives a session cookie.
1313+814Mobile authentication uses a secure WebView flow:
91510161. App opens a secure browser (ASWebAuthenticationSession on iOS, Custom Tabs on
···364370- The OAuth state expired (default: 10 minutes)
365371- User took too long to complete authorization
366372- Start a new login flow
373373+374374+## Resources
375375+376376+### AT Protocol Documentation
377377+378378+- [OAuth Specification](https://atproto.com/specs/oauth) - Full OAuth spec
379379+ including mobile client requirements
380380+- [OAuth Introduction](https://atproto.com/guides/oauth) - Overview of OAuth
381381+ patterns and app types
382382+- [BFF Pattern](https://atproto.com/specs/oauth#confidential-client-backend-for-frontend) -
383383+ Backend-for-Frontend architecture details
384384+385385+### Example Implementations
386386+387387+- [React Native OAuth Example](https://github.com/bluesky-social/cookbook/tree/main/react-native-oauth) -
388388+ Official Bluesky mobile example using `@atproto/oauth-client-expo`
389389+- [Go OAuth Web App](https://github.com/bluesky-social/cookbook/tree/main/go-oauth-web-app) -
390390+ BFF pattern implementation in Go
391391+- [Python OAuth Web App](https://github.com/bluesky-social/cookbook/tree/main/python-oauth-web-app) -
392392+ BFF pattern implementation in Python
393393+394394+### Alternative Approaches
395395+396396+This library uses the BFF pattern where OAuth tokens stay on your server. If you
397397+prefer tokens on the device, consider:
398398+399399+- [@atproto/oauth-client-expo](https://www.npmjs.com/package/@atproto/oauth-client-expo) -
400400+ Official Bluesky SDK for React Native (tokens on device)
401401+402402+The BFF pattern is recommended when you need:
403403+404404+- Long-lived sessions (up to 14 days for public clients)
405405+- Server-side API calls on behalf of users
406406+- Simplified mobile client code
+18
docs/web-authentication.md
···240240241241See the [Hono example](../README.md#hono-integration) in the main README for a
242242complete working setup.
243243+244244+## Resources
245245+246246+### AT Protocol Documentation
247247+248248+- [OAuth Specification](https://atproto.com/specs/oauth) - Full OAuth spec for
249249+ AT Protocol
250250+- [OAuth Introduction](https://atproto.com/guides/oauth) - Overview of OAuth
251251+ patterns and app types
252252+- [Building Applications Guide](https://atproto.com/guides/applications) - Quick
253253+ start guide for AT Protocol apps
254254+255255+### Example Implementations
256256+257257+- [Go OAuth Web App](https://github.com/bluesky-social/cookbook/tree/main/go-oauth-web-app) -
258258+ Official Bluesky web app example in Go
259259+- [Python OAuth Web App](https://github.com/bluesky-social/cookbook/tree/main/python-oauth-web-app) -
260260+ Official Bluesky web app example in Python