OSS探訪GitHubでログイン

IndexedDBなどのブラウザ永続化をlocalStorage風の非同期APIで扱う

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
25,809
主要言語
JavaScript
ライセンス
Apache-2.0
リポジトリ最終更新
2024/07/30
ページ内ナビ

概要

localForageはIndexedDBやWebSQLをlocalStorageに近いAPIで扱うJavaScriptストレージライブラリです。非同期のPromise/callback APIを提供し、対応する高機能driverがないブラウザではlocalStorageへfallbackします。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

setItem・getItemをPromiseまたはcallbackで非同期実行する

setItem()、getItem()、removeItem()などをlocalStorageに近い形で使えます。非同期処理にはPromiseとNode-style callbackの両方を利用でき、READMEは迷う場合にPromiseを推奨しています。

出典:[1]

文字列以外のobjectやBlob・TypedArrayも保存する

JSONで表現できるJavaScript objectに加え、ArrayBuffer、Blob、TypedArrayを扱えます。localStorageがbackendでも必要なserialize/deserializeをライブラリ側が行います。

出典:[1]

driverとstoreを設定し、複数instanceを分離する

config()でdriver、database名、store名などを指定でき、createInstance()を使うと同じapplication内で独立したstoreを複数作れます。

出典:[1]

向いている用途

Webアプリのoffline dataやclient-side cacheを簡潔なAPIで永続化したい場合に向く

raw IndexedDB APIを画面コードへ広げず、Promiseベースのkey-value操作でブラウザ永続化を共通化したい場合に適します。

出典:[1]

導入前の確認

実行環境はブラウザを前提とする

READMEはlocalForageをブラウザ向けとして説明し、projectのtestもbrowser environmentを明示的に要求します。Node.jsやSSRだけの実行環境で同じstorage driverが使える前提にしないでください。

出典:[1]

fallbackするstorage backendごとに容量や挙動が異なる

IndexedDBやWebSQLが利用できない場合はlocalStorageへfallbackします。READMEはlocalStorage backendで多数の大きなBlobを保存するのは容量上難しいと説明しているため、保存量と対象browserを確認してください。

出典:[1]

参考にした公式資料

  1. [1]localForage 1.10.0 README(2026-10-05)
  2. [2]localForage 1.10.0 package metadata(2026-10-05)
  3. [3]localForage 1.10.0 changelog(2026-10-05)
  4. [4]localForage 1.10.0 release(2026-10-05)
  5. [5]localForage Apache-2.0 license(2026-10-05)
編集部からの補足

localStorageに近い操作感でIndexedDBを使えるため、ブラウザ側の永続化を段階的に導入したいときに比較しやすいOSSです。driverごとに容量や実装特性が異なり、公式READMEも実ブラウザ環境を前提としているため、対象ブラウザでの確認を含めて採用判断してください。

3ステップで試す

  1. 1

    localForage 1.10.0を一時projectへ導入する

    current package versionを固定し、browser storageの確認用directoryを用意します。

    demo=$(mktemp -d "${TMPDIR:-/tmp}/localforage.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact localforage@1.10.0
  2. 2

    objectを保存・取得・削除する最小HTMLを作る

    Promise APIでJavaScript objectを保存し、読み戻した値を表示した後にdemo dataを削除します。

    printf "%s\n" '<!doctype html>' '<meta charset="utf-8">' '<script src="./node_modules/localforage/dist/localforage.js"></script>' '<script>' "(async () => {" " await localforage.setItem('oss-tanbou-demo', { ready: true });" " const value = await localforage.getItem('oss-tanbou-demo');" " document.body.textContent = JSON.stringify(value);" " await localforage.removeItem('oss-tanbou-demo');" "})();" '</script>' > index.html
  3. 3

    HTMLをbrowserで開いて非同期保存を確認する

    index.htmlをbrowserで開き、bodyに{"ready":true}が表示されることを確認します。利用可能なbrowser storage driverが自動選択されます。

    index.html
公式READMEで確認

成長

成長の推移 · 直近30日

25,809 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
35

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • localforage
  • localstorage
  • javascript
  • offline
  • storage
  • indexeddb
  • websql
Stars
25,809
Forks
1,288
Watchers
302
Open Issues
215
Contributors
94
所有者種別
Organization
主要言語
JavaScript
ライセンス
Apache-2.0
リポジトリ最終更新
2024/07/30

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?