kundan_s__r
10 hours ago
Really impressive work, especially on mobile. The mmap + zero-copy, read-only approach feels like the right tradeoff for files at this scale.
Curious how it behaves with extremely wide objects or deep nesting — do index build time or memory pressure become the limiting factor?
Nice example of serious systems engineering in a place where it’s rarely done.
kotysoft
10 hours ago
Thanks! Really appreciate it.
Deep nesting: The indexer enforces a 255-depth limit (and gives a clear error if exceeded). That's a u8 + stack overflow safety guard. Details on the Known Limitations page: https://giantjson.com/docs/known-limitations/
Wide objects / long lines: This was actually the harder problem. In Text Mode, extremely long lines (especially without spaces, like minified JSON or base64 blobs) caused serious issues with Android's text layout engine. I ended up detecting those early and truncating at ~5KB for display.
In Browser Mode, cards truncate values aggressively (100 chars collapsed, 1000 chars expanded), but the full value is still available for copy-to-clipboard operations. I also tried to make truncation "useful" by sniffing for magic bytes—if it looks like base64-encoded data, it shows a badge with the detected format (PNG, PDF, etc.) and lets you extract/download it.
Index build time & memory: These are definitely the limiting factors right now. The structural index itself grows linearly with node count (32 bytes/node stored on disk), and for minified JSON I also keep a sparse line index in memory. For big files, the initial indexing can take a minute—I'm not sure if that scares users away or if they expect it for a GB sized file.
I've been watching Play Console for ANRs/OOMs and so far just had 1-2 isolated cases that I could fix from the stack traces. But honestly, I'm still figuring out which direction to prioritize next—real-world usage patterns will tell me more than my synthetic tests did.