MetaMask / MetaMask/metamask-extension

Storage Resilience Quick Wins

Open
#44,260 1 comment 0 reactions 0 assignees View on GitHub
epic for-migration mig-epic-67-child mig-epic-68 ta-triaged team-extension-platform
Dominant language
TypeScript
Stars
13.2k
Forks
5.6k
Avg merge
2d 5h
Merged PRs (30d)
451

Description

### What is this about?

## Goal

Track the small, independent storage-resilience tasks listed in this issue.

## Tasks

- [x] [`waitUntil` to ensure all scripts load](https://github.com/MetaMask/metamask-extension/issues/43773) — `waitUntil` was investigated and does not solve this.
- [ ] [`waitUntil` to ensure async storage writes finish before the service worker terminates](https://github.com/MetaMask/metamask-extension/issues/43774) — the `waitUntil` attempt failed; the underlying shutdown-write goal remains open.
- [ ] [Set IndexedDB durability mode to `strict` (not `relaxed`)](https://github.com/MetaMask/metamask-extension/issues/44741)
- [ ] [Detect outliers in storage footprint / write volume](https://github.com/MetaMask/metamask-extension/issues/44250) — tracked by E0.
- [ ] Re-word error messages to deflect blame from user hardware where appropriate — no matching current message was found in the storage-error or corruption UI. This needs the exact message or code path before we open an issue.
- [x] [Automatic write retry after failure](https://github.com/MetaMask/metamask-extension/issues/44681)
- [ ] [Reconsider the background-connection health check before adding a retry](https://github.com/MetaMask/metamask-extension/issues/44742)

## Tracking decisions

Keep each task separate. Reuse #43774 and #44681, merge the storage-outlier work into E0, and do not open an error-copy issue until the original author identifies the current message that needs changing.

## Open questions

- Which IndexedDB backup transactions should request strict durability?
- Is the current `ALIVE` check still useful, or should it be simplified, replaced, or removed before adding a retry?
- Which current error message was the error-copy task referring to?

### Scenario

_No response_

### Design

_No response_

### Technical Details

_No response_

### Threat Modeling Framework

_No response_

### Acceptance Criteria

- [ ] Every task links to an existing issue, another storage-resilience epic, or a recorded decision not to open an issue.
- [ ] Each child issue matches the current code path it intends to change.

### Stakeholder review needed before the work gets merged

- [ ] Engineering (needed in most cases)
- [ ] Design
- [ ] Product
- [ ] QA (automation tests are required to pass before merging PRs but not all changes are covered by automation tests - please review if QA is needed beyond automation tests)
- [ ] Security
- [ ] Legal
- [ ] Marketing
- [ ] Management (please specify)
- [ ] Other (please specify)

### References

- Parent epic: #44248
- Exploratory retry PR for #44681: #44003
- Exploratory shutdown-write PR for #43774: #44610

The linked PRs are research and may or may not become the final implementation.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the linked child issues #43774, #44741, #44250, and #44742, along with parent epic #44248 and the exploratory PR references. Done means each task is linked to an existing issue, epic, or recorded decision, and each child issue matches the current code path it intends to change.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.