Back to list
timequity

offline-first

by timequity

Claude Code plugins for developers

2🍴 0📅 Jan 24, 2026

SKILL.md


name: offline-first description: Local storage, data sync, and conflict resolution for offline-capable apps.

Offline-First

Storage Options

OptionUse Case
AsyncStorageSimple key-value
MMKVFast key-value
SQLiteComplex queries
WatermelonDBLarge datasets, sync
import { MMKV } from 'react-native-mmkv';

const storage = new MMKV();

// Store
storage.set('user', JSON.stringify(user));
storage.set('token', 'abc123');

// Retrieve
const user = JSON.parse(storage.getString('user') || '{}');
const token = storage.getString('token');

// Delete
storage.delete('token');

Sync Strategy

Optimistic Updates

async function updateItem(id: string, data: Partial<Item>) {
  // 1. Update local immediately
  await localDb.update(id, { ...data, _synced: false });

  // 2. Update UI
  queryClient.setQueryData(['item', id], (old) => ({
    ...old,
    ...data,
  }));

  // 3. Sync to server
  try {
    await api.updateItem(id, data);
    await localDb.update(id, { _synced: true });
  } catch (error) {
    // Queue for retry
    await syncQueue.add({ type: 'update', id, data });
  }
}

Background Sync

import NetInfo from '@react-native-community/netinfo';

NetInfo.addEventListener((state) => {
  if (state.isConnected) {
    syncQueue.processAll();
  }
});

Conflict Resolution

// Last-write-wins
if (serverItem.updatedAt > localItem.updatedAt) {
  await localDb.update(id, serverItem);
} else {
  await api.updateItem(id, localItem);
}

// Or: Manual resolution
if (hasConflict) {
  showConflictResolver(serverItem, localItem);
}

Network Status

function useNetworkStatus() {
  const [isOnline, setIsOnline] = useState(true);

  useEffect(() => {
    return NetInfo.addEventListener((state) => {
      setIsOnline(state.isConnected ?? false);
    });
  }, []);

  return isOnline;
}

Score

Total Score

40/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon