# Apple Notes Performance Tuning

> Optimize Apple Notes automation performance for large note collections. Trigger: "apple notes performance".

- Skill: `jeremylongshore/apple-notes-performance-tuning` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jeremylongshore/apple-notes-performance-tuning`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jeremylongshore/apple-notes-performance-tuning/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: jeremylongshore (https://skillmd.com/u/jeremylongshore)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/jeremylongshore/apple-notes-performance-tuning

---


# Apple Notes Performance Tuning

## Performance Benchmarks
| Operation | 100 notes | 1000 notes | 10000 notes |
|-----------|----------|------------|-------------|
| List all | ~0.5s | ~3s | ~30s |
| Search by name | ~0.3s | ~2s | ~20s |
| Full-text search | ~1s | ~8s | ~80s |
| Create note | ~0.2s | ~0.2s | ~0.2s |
| Export all to JSON | ~1s | ~10s | ~100s |

## Optimization Strategies

### 1. Limit Results
```javascript
// BAD: Load all notes then slice
const all = Notes.defaultAccount.notes(); // Loads everything
const first10 = all.slice(0, 10);

// BETTER: Specify range (JXA supports this for some operations)
// Unfortunately JXA does not support server-side filtering
// Best approach: cache results locally
```

### 2. Local SQLite Cache
```bash
# Export to SQLite once, then query locally
osascript -l JavaScript scripts/export-to-sqlite.js
sqlite3 notes-cache.db "SELECT title FROM notes WHERE body LIKE '%project%'"
```

### 3. Incremental Sync
```typescript
// Only process notes modified since last sync
const lastSync = new Date(fs.readFileSync(".last-sync", "utf8"));
const modified = allNotes.filter(n => n.modificationDate() > lastSync);
```

## Resources

- [Mac Automation Scripting Guide](https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/)
- [JXA Examples](https://jxa-examples.akjems.com/)


