v1.36.0
logto-io/logtov1.36.0Jan 30, 2026by silverhand-bot
AI Summary
This release introduces wildcard redirect URI support for dynamic environments, fine-grained token exchange control per application, and the ability to trust unverified emails for SSO connectors. Additional improvements include a new option to skip required identifiers for social sign-in and enhanced user role API responses.
Key Highlights
- Wildcard redirect URIs support for preview deployments and dynamic environments
- Token exchange grant type with app-level control for M2M applications
- Trust unverified email for OIDC and enterprise SSO connectors
- Skip required identifiers option for social sign-in flows
- User role API improvements with detailed response payloads
New Features
- Wildcard patterns (*) in redirect URIs for http/https
- Token exchange grant type with allowTokenExchange field in customClientMetadata
- TrustUnverifiedEmail config for OIDC connectors
- Skip required identifiers for social sign-in
- User role API returns roleIds and addedRoleIds
- createApiClient function for @logto/api SDK
Full Release Notes

## Highlights
- **Wildcard redirect URIs**: Support wildcard patterns (`*`) in redirect URIs for dynamic environments like preview deployments, making development workflows easier. (Thanks [@Arochka](https://github.com/Arochka)!)
- **Token exchange app-level control**: Fine-grained control over token exchange grant type per application, with M2M apps now supporting this feature.
- **Trust unverified email for SSO**: OIDC social connectors and enterprise SSO connectors can now sync emails even when `email_verified` is missing or false.
## New features & enhancements
### Wildcard patterns in redirect URIs
Added support for wildcard patterns (`*`) in redirect URIs to better support dynamic environments like preview deployments. (Contributed by [@Arochka](https://github.com/Arochka) in [#8094](https://github.com/logto-io/logto/pull/8094))
Rules (web only):
- Wildcards are allowed for http/https redirect URIs in the hostname and/or pathname
- Wildcards are rejected in scheme, port, query, and hash
- Hostname wildcard patterns must contain at least one dot to avoid overly broad patterns
### Token exchange grant type with app-level control
- Add `allowTokenExchange` field to `customClientMetadata` to control whether an application can initiate token exchange requests
- Machine-to-machine applications now support token exchange
- All new applications will have token exchange disabled by default; enable it in application settings
- For backward compatibility, existing first-party Traditional, Native, and SPA applications will have this enabled
- Third-party applications are not allowed to use token exchange
- Added UI toggle in Console with risk warning for public clients (SPA / native application)
### Trust unverified email for OIDC connectors
- Add `trustUnverifiedEmail` to the OIDC social connector config (default `false`) to allow syncing emails when `email_verified` is missing or false
- Apply the setting in core OIDC/Azure OIDC SSO connectors and expose it in the Admin Console
### Skip required identifiers for social sign-in
A new option `skipRequiredIdentifiers` is available for social sign-in and sign-up flows. When enabled, users can bypass the mandatory identifier collection step during social sign-in and sign-up.
This is particularly useful for iOS apps where Apple App Store guidelines mandate that social sign-in options like "Sign in with Apple" should not require additional information collection beyond what is provided by the social IdP.
In the Logto Console, this option is represented as a checkbox labeled "Require users to provide missing sign-up identifier" under the "Social sign-in" section.
### User role API improvements
- POST `/users/:userId/roles` now returns `{ roleIds: string[]; addedRoleIds: string[] }` where `roleIds` echoes the requested IDs, and `addedRoleIds` includes only the IDs that were newly created
- PUT `/users/:userId/roles` now returns `{ roleIds: string[] }` to confirm the final assigned roles
### @logto/api SDK enhancement
Added `createApiClient` function for custom token authentication. This new function allows you to create a type-safe API client with your own token retrieval logic, useful for scenarios like custom authentication flows.
## Bug fixes & stability
### Postgres statement timeout configuration
Allow disabling Postgres `statement_timeout` for PgBouncer/RDS Proxy compatibility:
- Set `DATABASE_STATEMENT_TIMEOUT=DISABLE_TIMEOUT` to omit the startup parameter
### Enterprise SSO error code fix
Fixed the enterprise SSO account not exist error code to use a specific one instead of the generic social account error.
### JIT email domains pagination fix
Removed default pagination from `GET /organizations/:id/jit/email-domains` to ensure all JIT email domains are returned in the Console's Organization details page.
### Direct sign-in stability
Prevented repeated auto sign-in requests on direct sign-in page that could cause unexpected behavior in certain scenarios.
### Console audit log fixes
- Removed deprecated interaction log events from the Console audit log filter menu
- Fixed dropdown event key typo that caused empty filter results for several events