Releases: evoluhq/evolu
evolu@3.0.1
Patch Changes
- f9cacfc: Fix two bugs
evolu@3.0.0
Major Changes
-
11f1a40: Better and more versatile encryption
For the upcoming integration of Evolu with Trezor (a cryptographic hardware wallet developed by SatoshiLabs), we changed the owner id and encryption key derivation to use SLIP-21 (hierarchical derivation of symmetric keys).
As a result, the existing owner will get a new id and encryption key, requiring all data to be re-sync. Evolu provides automatic migration for these breaking changes, so no further actions are needed.
Minor Changes
- 9be7e78: Add support for SQLite binary
evolu@2.2.0
Minor Changes
- 0fb793f: Enable OPFS for Firefox 111+
evolu@2.1.3
Patch Changes
- b8296f7: Update peer dependencies
evolu@2.1.2
Patch Changes
- c949b26: Improve docs
evolu@2.1.1
Patch Changes
- e3deac8: Update readme
evolu@2.1.0
Minor Changes
- be95d2c: Documentation for the whole public API
evolu@2.0.0
Major Changes
-
2f0a596: Evolu 2.0
- Zod replaced with effect-ts/schema.
- Types are more strict, readable, fast, reusable, and descriptive for the domain model. We also simplified type hints in IDEs.
- The
mutate
function was replaced with thecreate
andupdate
functions. - We removed internals from public API.
- Evolu enforces the useQuery
filterMap
helper usage because it's super-useful.
We removed internals from public API because exporting all under the same namespace wasn't ideal for DX. If necessary, we will reexport them but namespaced. If you already have an app made with Evolu, the only breaking changes are in the API; the persistence remains the same.
We replaced Zod with Schema because Schema is fantastic and going to be even better. Let me explain it. There are several well-established runtime type checkers in the TypeScript ecosystem. The best was io-ts from Giulio Canti, but during its further development, Giulio hit the wall of architectural design. After a few attempts, it looked like he had given up. Then Zod was created to continue the mission of the best runtime types checker. That's why Evolu chose Zod. Zod is good. But several months ago, Giulio Canti restarted its open-source work and joined his endeavor with the Effect team to work full-time on Schema and other awesome libs. While fresh new, Schema is already very powerful and faster than Zod. It's also very well documented. Evolu has big plans with type-driven development, and Schema is ideal.
Switching to Schema allowed us to improve Evolu DX by making types more strict, readable, fast, reusable, and descriptive for the domain model. Before this change, every column except for Id was nullable. Evolu 2.0 makes nullability explicit and optional. That's why the
mutate
function was refactored to thecreate
andupdate
functions. Thecreate
function enforces non-nullable columns now. To leverage this feature, use TypeScript 4.7 or newer with strict and exactOptionalPropertyTypes flags enabled in your tsconfig.json file.The last change is that Evolu enforces useQuery
filterMap
usage. While Evolu enforces creating new rows with the desired Schema, it can't enforce the order of messages from other devices. That's a rule in distributed systems and local-first software: messages can and will come in any order. Also, local-first apps have to handle all schema versions gracefully. That's whatfilterMap
is for.
evolu@1.0.2
Patch Changes
- ddac0d6: Silence SQLite console output
evolu@1.0.1
Patch Changes
-
f2c88d3: Use SQLite without rowid
A WITHOUT ROWID table is an optimization that can reduce storage and processing requirements.