Feature
Round-trip fidelity: saving without rewriting the whole file
Native Sheets keeps the raw bytes of every part of an .xlsx package and regenerates only the parts it models, so charts, pivot caches and themes survive a save.
An .xlsx package usually contains more than the cells you can see. Native Sheets treats the parts it does not model as data to carry rather than data to discard.
How it works
The reader holds on to the raw bytes of every part it opened, in a PackageParts structure that sits alongside the parsed workbook. On save, the writer regenerates only the parts it understands and copies the rest through unchanged:
| Regenerated on save | Copied through byte for byte |
|---|---|
| workbook.xml | Themes |
| xl/worksheets/sheetN.xml | Tables |
| sharedStrings.xml | Pivot caches |
| [Content_Types].xml | Charts and drawings |
| The workbook relationships | Conditional formatting, printer settings |
What has been measured
On the project's sample workbook, a 1.6 MB four-sheet tracker with 20,739 cells and 4,530 formulas, a read-write-read cycle produced 20,739 identical cells out of 20,739, and 4,530 of 4,530 formulas matched the values the file itself had cached. The saved file was also opened with openpyxl, an unrelated implementation, which reported no differences in values, styles, tables, column widths or frozen panes.
The same check runs against any workbook you point it at, which is the only way to know about yours:
xcodebuild build-for-testing -scheme "Native Sheets" -derivedDataPath build/DerivedData
XLSX_CHECK_SOURCE=~/book.xlsx xcrun xctest -XCTest XLSXKitTests.ExternalWorkbookTests \
build/DerivedData/Build/Products/Debug/XLSXKitTests.xctestPrerequisites and limits
- macOS 14 or later, and Xcode 26 or newer to build the app.
- Preserved is not editable. Charts, images, pivot tables and conditional formatting are carried through a save but are neither displayed nor edited.
- A pivot cache is a snapshot taken when the workbook was last saved by an application that models pivot tables. Preserving it does not refresh it.
If you want to see which parts your own files carry before deciding anything, this article walks through comparing a workbook before and after a save.
Related
Why charts and pivot tables disappear when you edit someone else's workbook
What is actually inside an .xlsx file, why a save in the wrong app strips charts, pivot caches and conditional formatting, and how to check whether your own workflow does it.
The formula engine: dependency-ordered recalculation
How Native Sheets parses, orders and recalculates formulas, what it does with circular references, and how references shift when rows and columns move.
XLSX viewer: open a spreadsheet in your browser
Open an .xlsx workbook in this browser tab, read every sheet, see the formula behind a cell, and export a sheet as CSV. The file is parsed on your device and is never uploaded.