finds.dev← search

// the find

TooTallNate/plist.js

★ 602 · TypeScript · MIT · updated Jun 2026

Apple property list parser/builder for Node.js and browsers — supports XML, binary (bplist), and OpenStep formats

A TypeScript library for parsing and building Apple property list files in all three formats: XML, binary (bplist00), and old-school OpenStep/ASCII. Aimed at Node.js tooling authors who need to read iOS/macOS config files — think provisioning profile parsers, Xcode project manipulators, or electron-builder internals.

Auto-detection across all three formats from a single `parse()` call is genuinely convenient — no format sniffing in caller code. The browser build swaps in native `DOMParser` via conditional exports, so you get zero extra dependencies in the browser bundle at ~4 KB gzipped. Full read/write support for binary plists is rare in JS-land; most alternatives are parse-only or XML-only. Clean TypeScript with a sensible `PlistValue` union type that accurately models what plist can actually hold.

602 stars for a library that's been around since the TooTallNate era suggests it's useful but niche — you'll be on your own when you hit edge cases. Binary plist support covers bplist00 only; bplist15 and bplist16 (used by newer macOS versions for things like Contacts and iCloud data) are not mentioned anywhere. No streaming or large-file handling — loading a 50 MB TestSummaries.plist into memory as a string first is going to hurt. The OpenStep parser is described as auto-detected when input 'starts with { or (' which is a fragile heuristic that will silently misparse some XML plists if they start with a BOM or whitespace differently than expected.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →