Development · 0.2.0.dev

Compare authentication gems

Reviewed 2026-09-07

Choose the tool that fits the login system you want to own. Latchkey extends Rails’ generated authentication; Devise, Rodauth, and Sorcery offer different starting points.

Latchkey is still unreleased

Its column describes locally tested 0.2.0.dev development work, not a published gem. The other projects have published packages. Compare the fit, then check the release and upgrade requirements of the version you would install.

Where each approach fits

  • Latchkey: you want to keep Rails’ generated account and session models while adding email links, passkeys, and checks before sensitive changes. You accept an unreleased development checkout and own signup and deployment operations.
  • Devise: you want an authentication framework with account signup, password reset, confirmation, and configurable modules. It supplies controllers and views; additional gems extend the feature set. Devise overview.
  • Rodauth with rodauth-rails: you want a broad feature set, including passkeys and multiple second-factor options. It brings its own authentication configuration and feature tables; its Rails integration connects views, mail, and models. Rails integration.
  • Sorcery: you want login helpers and optional modules while writing your app’s controllers and pages yourself. That gives you more presentation work to own. Sorcery overview.

These fit suggestions are our interpretation of the projects’ documented designs. They are not a security ranking or a reason to migrate a working app on their own.

Compare the features

Checked on against official documentation. Included means the project provides the feature, often as an option you must enable. Extra gem means a separate integration. App-owned means your application supplies the flow. Not in core means it is not provided by the built-in modules reviewed here; extensions or custom code may add it.

On a narrow screen, scroll the table sideways. With a keyboard, focus the table area and use the arrow keys.

Authentication features and who provides them
FeatureLatchkey Unreleased developmentDeviseRodauth with rodauth-railsSorcery
Password sign-inIncluded; uses the Rails accountIncludedIncludedIncluded
Email-link sign-inIncludedExtra gemIncludedNot in core
PasskeysIncludedExtra gemIncluded; login and autofillNot in core
Expire an idle sessionIncluded; also a total time limitIncluded; TimeoutableIncluded; also a total time limitIncluded
Sign out all browsersIncluded; confirm identity againNot in coreIncluded; Active SessionsIncluded; optional invalidation
Account signupApp-ownedIncluded; RegisterableIncludedApp-owned; model helpers
Forgotten-password resetApp-owned; keeps Rails’ flowIncluded; RecoverableIncludedReset module; app-owned pages
Codes from an authenticator app A second-factor option, often called TOTPNot includedExtra gemIncludedNot in core
Backup recovery codesFuture considerationExtra gemIncludedNot in core
Google or GitHub sign-inNot includedOmniAuth integration + provider strategyExtra gemIncluded; External module
Turnstile / reCAPTCHA bot checksIncluded adapters; provider setup requiredNot in coreNot in coreNot in core
Customize authentication pagesIncluded pages; copy and editIncluded views; copy and editView generator in rodauth-railsWrite your own pages

Feature names do not imply identical behavior. For example, password reset, email-link sign-in, and passkey recovery are different flows. Review expiry, fallback rules, session invalidation, and failure handling for your app. Listed extensions are examples, not a compatibility test or endorsement of every combination.

All four approaches run in your application. You still operate delivery and storage, protect secrets, apply updates, and decide what signed-in users may do.

Sources and review scope

The table uses the projects’ documented core features and the named extensions, not an exhaustive survey of their ecosystems. Package versions observed on the review date: Devise 5.0.4, Rodauth 2.47.0, rodauth-rails 2.2.2, and Sorcery 0.18.0. Official documentation and extension compatibility can move independently of a release; check the version you choose.

Already using one of these gems? Check its extensions and upgrade path before replacing it. Starting with Rails’ authentication generator? Read what Latchkey adds, then follow the development quickstart.

Something unclear? Suggest a correction Development source status

Search documentation

Type to find a guide.

Use Tab to move through results. Escape closes search.