Skip to content

Added memory mode support - #243

Open
DhananjayNazare wants to merge 4 commits into
soofstad:mainfrom
DhananjayNazare:feature/inmemory-support
Open

DhananjayNazare wants to merge 4 commits into
soofstad:mainfrom
DhananjayNazare:feature/inmemory-support

Conversation

@DhananjayNazare

@DhananjayNazare DhananjayNazare commented May 31, 2026

Copy link
Copy Markdown

What does this pull request change?

Add support for memory storage along with local and session storage

Why is this pull request needed?

In case local storage and session storage is considered as the vulnerability, need a safe option for storage

Issues related to this change

Token stored in local storage is considered as sensitive data which is getting exposed. With mythos release, organisations are scanning all the applications leading to these kind local storage usages being triggered a vulnerabilties and auto suggestion from model is either have a inmemroy storage or build server driven solution. In most scenarios inmemory solution is a quick solution rather than build server driven solutions.

@DhananjayNazare
DhananjayNazare requested a review from soofstad as a code owner May 31, 2026 03:42
@soofstad

soofstad commented Jun 1, 2026

Copy link
Copy Markdown
Owner

You will need to elaborate on why you consider local-/sessionstorage as a vulnerability, and how storing the token in memory remedies that. Also, please run the formatter included in the project via pre-commit.

@DhananjayNazare

Copy link
Copy Markdown
Author

Also added few more inputs on in issue section as an justification for the change. Please let me know if u have any further review comments.
Formatted code.

@sebastianvitterso sebastianvitterso left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@soofstad will make the final review, to consider whether this is something we need/want to support.

Code-wise, this looks good and proper. Fits our code style well. The inMemoryStorage definition is simple and elegant. Nice to have tests properly covering it. All-in-all very good.

Comment thread src/authConfig.ts Outdated
@DhananjayNazare

Copy link
Copy Markdown
Author

@soofstad coud you please review the PR?

@github-actions

Copy link
Copy Markdown

Stale pull request, will be closed in 7 days unless there is further activity

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds in-memory authentication storage as an alternative to local and session storage.

Changes:

  • Adds memory storage support and configuration validation.
  • Keeps PKCE redirect data in session storage.
  • Adds documentation, tests, and Biome formatting tooling.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/inMemoryStorage.ts Implements module-level memory storage.
src/useBrowserStorage.ts Integrates memory storage with the React hook.
src/authentication.ts Selects session storage for memory-mode PKCE data.
src/authConfig.ts Validates the new storage option.
src/types.ts Extends the public storage type.
tests/memory-storage.test.tsx Tests memory storage behavior.
README.md Documents memory mode.
package.json Adds Biome and a formatting script.
biome.json Enables formatting.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/authentication.ts
Comment on lines +23 to +25
// For 'memory' storage the in-memory state is lost on redirect, so PKCE
// verifier and auth state are kept in sessionStorage to survive the round-trip.
const storage = config.storage === 'local' ? localStorage : sessionStorage
Comment thread README.md
Comment on lines +158 to +162
// 'memory' - Held in a module-level Map; never written to disk or browser storage.
// State is lost on page refresh. Useful for SSR environments, incognito
// restrictions, or embedded contexts where browser storage is unavailable.
// NOTE: PKCE verifier and auth state are stored in sessionStorage during the
// login redirect so the callback page can still complete the code exchange.
Comment thread src/inMemoryStorage.ts
/**
* A module-level in-memory store that mimics the Web Storage API interface.
* Unlike localStorage/sessionStorage, values are held in a plain Map and do
* not survive page refreshes or shared across tabs. This is useful when
@soofstad

Copy link
Copy Markdown
Owner

Testing your branch, it simply fails to login. I did not look too much into it, but it it probably related to the first finding by Copilot.

Please make sure it actually works, and I will do another review 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants