a quick fix to upgrade our Svelte versions
A vulnerability was discovered in Svelte. I upgraded our versions to ensure we were not exposed to risks.
A vulnerability was discovered in Svelte. I upgraded our versions to ensure we were not exposed to risks.
Jazz apps can show low-quality placeholder images while the full-resolution version loads. On Expo (a React Native framework for mobile apps), uploaded images had broken placeholders because the image data was missing a required prefix. I added the missing data: prefix so placeholder images display correctly on mobile.
Jazz is a framework for building collaborative apps. When you upload an image, Jazz automatically creates smaller versions of it so they load faster. The existing sizes jumped from 256px straight to 1024px, which meant medium-sized images (like in a sidebar or card) had to either load a tiny version or wait for a much larger one. I added a 512px in-between size so images load more smoothly in those situations.
Jazz is a framework for building collaborative apps. I wrote a new API reference page for the docs site that gives developers a clear, concise overview of the most important functions they need to work with Jazz's core data structures, without overwhelming them with every possible option.
Jazz is a framework for building collaborative apps. When your data models reference each other in circles (like a project that has a manager who has projects), things can get confusing. I added documentation explaining how to handle these circular references cleanly, so developers don't get stuck in an infinite loop of loading nested data.
Jazz is a framework for building collaborative apps. When something goes wrong while loading data, apps need a way to gracefully show an error message instead of crashing. I added documentation explaining how to use React's Suspense and Error Boundary features with Jazz, so developers know how to handle loading states and errors properly.
Jazz uses secret keys for user authentication, but these keys were being incorrectly converted when sent between the server and browser -- they were being turned into an object format instead of a simple list of numbers. I fixed the conversion so the keys are sent in the right format and can be properly used on the client side for login features like passphrases and passkeys.
I built a Better Auth provider for Svelte, with example project and documentation.
As well as the main frameworks (React, Svelte, React Native, React Native with Expo), we now have code snippets and guides for using Jazz with vanilla JavaScript.
We have the hooks useSuspenseCoState and useSuspenseAccount which integrate with React's Suspense API to suspend component rendering until all data is successfully loaded.
This PR documents how to use them.
We allow users to do stuff when a subscription throws an error, but this wasn't documented. I added documentation.
We were previously warning users to avoid using never and signedUp on iOS, as this could result in credentials being cached to the keychain, which would not be deleted when deleting the app. In this case, if the user re-installed the app, their client could crash, as the account for which the credentials were created no longer existed. We now recommend that users who want to keep completely local data without syncing use a randomised prefix for their credentials, and store this in the Settings (which is deleted on app uninstallation).
The Jazz docs site has an interactive chat demo embedded in an iframe. It wasn't working because the page was listening for the wrong event from the iframe. I fixed it to listen to the correct event so the demo works properly again.
The Jazz homepage has a QR code and a link for quickly getting started, but they were broken because the URL was missing a hash fragment. I added the missing hash so both the QR code and the link work correctly.
Safari's Web Locks API doesn't release immediately on navigation, which was causing the browser to effectively hang when viewing our docs landing page. This PR moved the co-ordination of the routes to a parent component.
Jazz is a framework for building real-time collaborative apps. I fixed a small documentation issue where the example invite URL wasn't formatted correctly -- it now uses a hash fragment, which is the proper way to structure these links so that sensitive information isn't sent to the server.
Our docs previously had a page showing how to use Jazz's version control functionality with React. I updated our docs to show how it can be done across all our supported frameworks.
I'm quite proud of this one: I build a minimal Jazz example (a working to-do list with sync in less than 100 lines of code), and published it on our docs landing page.
There was a security issue in Next due to an issue in React. I bumped our Next versions.