Fireproof Logo

0.6.0 release - React hooks, Sync, Encryption

We have been hard at work on 0.6.0, which is now available on npm. The biggest change is that we extracted React support to its own module.

Features:

As part of developing sync we built a 2-player Animal Game demo. At this point it shows that Fireproof works great, but that WebRTC has a sub-par experience and reliability story out of the box. I did have fun playing it with a few of you, but it can take luck to get the initial connection bootstrapped. There is nothing structural about this -- WebRTC is easy to improve on, but I started with it because it is designed to work fully peer-to-peer. In this case it means the demo requires the user to paste back and forth multiple tokens. A cloud solution is the most straightforward solution to this. (Another option may be using transports like lib-p2p which can bootstrap from hosted nodes.)

Once we have the sync experience running on an improved transport, we'll release the game more widely. However it does show that you can get pretty far with WebRTC, so it may be useful in this configuration for particular use cases (for instance when you already have a webrtc based app).

Sync was particularly helpful in hardening some of the database clock usage. We also eliminated the dependency on IndexedDB features, and now we just use it as an object store, no indexing.

0.7.0 roadmap

Now that we are at 0.6.0 we will start respecting more build process and quality constraints, so contributors are moving more of the codebase to TypeScript. Once we have the TypeScript buildĀ tested in the real world we'll have the confidence to move the rest of the source base over more aggressively.

The 0.6.0 -> 0.7.0 transition will also be the first one where we take pains not to break the storage format compatibility (eg we'll write an update function if we need to). We're aiming for 0.7.0 to mark the transition from alpha to beta.

Here are the features we are thinking about for 0.7.0:

There's also a planned website update, to make the whole thing more clearly built for React (although we happily support other environments).

Tagged: