ページ内ナビ
概要
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]localForage 1.10.0 README(2026-10-05)
- [2]localForage 1.10.0 package metadata(2026-10-05)
- [3]localForage 1.10.0 changelog(2026-10-05)
- [4]localForage 1.10.0 release(2026-10-05)
- [5]localForage Apache-2.0 license(2026-10-05)
編集部からの補足
localStorageに近い操作感でIndexedDBを使えるため、ブラウザ側の永続化を段階的に導入したいときに比較しやすいOSSです。driverごとに容量や実装特性が異なり、公式READMEも実ブラウザ環境を前提としているため、対象ブラウザでの確認を含めて採用判断してください。
3ステップで試す
- 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
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
HTMLをbrowserで開いて非同期保存を確認する
index.htmlをbrowserで開き、bodyに{"ready":true}が表示されることを確認します。利用可能なbrowser storage driverが自動選択されます。index.html
成長
成長の推移 · 直近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で投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Highlight.js25,005 Stars
共通タグ 3件 · 同じ言語
コード文字列を180以上の言語定義で構文ハイライトし、言語の自動判定にも対応する
JavaScript - js-cookie22,573 Stars
共通タグ 3件 · 同じ言語
ブラウザCookieの作成・取得・削除と属性指定を小さなJavaScript APIで扱う
JavaScript - Autoprefixer22,211 Stars
共通タグ 3件 · 同じ言語
BrowserslistとCan I Use dataから必要なvendor prefixだけを自動生成する
JavaScript - SweetAlert218,098 Stars
共通タグ 3件 · 同じ言語
alert・confirm・promptをWAI-ARIA対応のpopupへ置き換え、Promiseで結果を受け取る
JavaScript - Less17,025 Stars
共通タグ 3件 · 同じ言語
変数・mixin・nestingを使うstylesheetをlesscで通常のCSSへcompileする
JavaScript - Tippy.js12,240 Stars
共通タグ 3件 · 同じ言語
tooltip・popover・dropdownをPopperベースで配置し、hover・focus・click操作へ追加する
JavaScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。