What PersistKit does

Every capability below carries a status, and each one means exactly one thing:

Available in the package and enforced by tests · Verified exercised and passing in a named environment · Adapter required the package ships the contract, you supply the service · Roadmap planned, not shipped · Not verified reasoned about, never run · Not supported deliberately out of scope, with the reason stated

Saving and loading#

CapabilityStatusNotes
One line to save, one to loadAvailablePersist.Save("score", 1500) / Persist.Load("score", 0)
Numbers, text, booleans, chars, enumsAvailableStored as text, so a save file stays readable
Unity value typesAvailableVector2/3/4, Quaternion, Color, Rect, Bounds, and the rest
Your own [Serializable] classes and structsAvailableIncluding nested ones and lists of them
Arrays, List<T>, Dictionary<K,V>, and their nestingsAvailableT[][], List<List<T>>, Dictionary<K, List<V>> — with no wrapper class
Raw text and raw bytesAvailableStored byte for byte
Types that bring their own formatAvailableIPersistCustomValue
Failures returned, never thrown for an ordinary conditionAvailableA result carries a code, a sentence and a next step
Asynchronous local save/loadNot supportedA local save is a small file write; the asynchronous operations are the cloud ones

No code at all#

CapabilityStatusNotes
PersistKit Behaviour componentAvailableTick fields in the Inspector; no script
Save and Load chosen per fieldAvailableA value can be written without being overwritten, or read without being rewritten
Built-in handlers for Unity componentsAvailableTransform, RectTransform, Rigidbody, Rigidbody2D, Animator, Collider, Collider2D, CharacterController, AudioSource
Physics written through the bodyAvailableSo the next physics step does not undo a restore
A field it cannot store is namedAvailableTolerated when PersistKit chose the fields, refused (PK-TYPE-001) when you ticked it
Saving at OnDisable, OnDestroy, pause and quitAvailableWith each platform's limits written down

Unity objects and assets#

CapabilityStatusNotes
References to objects in a sceneAvailableStored as a PersistKitIdentity id, never an instance id
Asset references (Sprite, ScriptableObject, prefab)AvailableStored as a registry key — never a path, a GUID or an instance id
Asset registry found automaticallyAvailableResources/PersistKit/PersistKit Asset Registry; Instance overrides it
Objects spawned from prefabs at run timeAvailablePersist.Spawn remembers which prefab and which instance
Loading the same set twiceAvailableAn instance already in the scene is reused, never duplicated
AddressablesNot supportedThe registry is the table, and Instance lets you point it at your own resolver

Slots, backups and recovery#

CapabilityStatusNotes
Named save slotsAvailableEach with its own file, backups and description
Slot descriptionsAvailableNever a source of truth: every report reads the save file itself
Rotating backupsAvailableThree copies by default, one to ten
Recovery from a damaged fileAvailableThe newest copy that still works, and the result says which file was used
Damaged files kept for inspectionAvailableNothing is ever deleted or repaired behind your back
File managementAvailableExists, list, delete, rename, copy — with confirmation for anything destructive

Versioning and migration#

CapabilityStatusNotes
A saved-data version in every fileAvailableChecked before anything is parsed
A save from a newer build refusedAvailablePK-VERSION-001, and the file is left exactly as it was
Ordered migrationsAvailableRename, add a default, remove, convert a value, or run your own code
Preview before applyingAvailableThe same report a real migration produces, writing nothing
Copy, migrate in memory, validate, then writeAvailableA failure puts the original back (PK-MIGRATION-004)
A missing migration refused, not guessed atAvailablePK-MIGRATION-001
Unknown keys preservedAvailableA key a migration does not mention is left where it was

Security#

CapabilityStatusNotes
Integrity stamp on every saveAvailableSHA-256 over the payload, checked before anything is parsed
Encryption and authentication on requestAvailableAES-256-CBC, HMAC-SHA256, PBKDF2 with a salt per file
The header stays readableAvailableSo the version gate and the damage check run before decryption
Compression when it helpsAvailableDeflate, and the file says which happened
Protecting a save from a determined playerNot supportedThe passphrase lives in your build: it is a strong lock, not a safe

Cloud#

CapabilityStatusNotes
A provider contract for any serviceAvailableFive operations; PersistKit carries the comparison, conflicts, queue and retries
A folder that syncs (Dropbox, OneDrive, a share)VerifiedReal files and real interruptions in the package's own tests
Any REST endpointVerifiedConditional writes, metadata and deletion; verified over a real socket
An in-memory double for testsAvailableUploads live only until the process ends, and it says so
Conflict detection by content, not clocksAvailableA fingerprint of what was uploaded, per slot
A conflict is a question, never an overwriteAvailablePK-CLOUD-004 and an explicit choice
Keep bothAvailableThe one answer that cannot lose data
Offline queueAvailableA save made offline is marked and sent later
SDK providers (UGS, Steam, Firebase, Supabase, PlayFab)Not supportedEach needs an account, a plan or a platform SDK; none could be run here

Editor#

CapabilityStatusNotes
Save folder, validation and registry toolsAvailableUnder Tools → PersistKit
Field discovery with Save and Load columnsAvailableShows what it can and cannot store, and why
Cloud status, upload, download, sync and conflict answeringAvailableThrough the same API a game uses
Migration preview and applyAvailableWith the confirmation that rewriting a save file requires
Diagnostics reportAvailableVersions, folder, every slot's state and size, and the last problem

Next#