a minor fix for a regression introduced in our navigation
Our nav was behaving strangely following an update designed to ensure the correct segments were always open. I fixed it.
Our nav was behaving strangely following an update designed to ensure the correct segments were always open. I fixed it.
The Jazz website has a showcase page that highlights apps built with the framework. On mobile phones, the images and text were spilling out of their containers and looking messy. I fixed the layout so everything stays neatly within bounds on smaller screens.
Jazz is a framework for building collaborative apps. The React Native setup guide said to "install" some compatibility patches, but you don't actually install them as separate packages -- you apply them in your code. I updated the wording to be more accurate and less confusing for developers following the guide.
In our React Native and Expo documentation, we had some references to outdated practices and unnecessary modules. I refactored the docs to remove these, and I also consolidated the polyfills into a single module which can be imported directly from Jazz.
In Jazz, you can use 'selectors' to avoid React re-rendering on every state update. However, the selector function itself still runs. Added tips on avoiding heavy computation inside selector functions, and how to extract that into a useMemo call outside the selector to take advantage of batching.
The Jazz website had a promotional banner for "Advent of Jazz" that was supposed to stay visible on top of all other content as you scroll. But some elements further down the page were appearing over the banner, hiding it. I increased the banner's stacking priority so it always stays on top.
I proposed and launched an 'Advent of Jazz' initiative on our Discord. This PR adds a prominent link through a banner for December.
Previously, our analytics only captured successful search. This improvement allows us to track unsuccessful searches.
Normally, Jazz will throw if it cannot complete a resolve query as requested by the user (for example because the user doesn't have access to the data or it doesn't actually exist). Users can override this by specifying $onError: 'catch', which will instead return the rest of the query completed correctly with only the CoValue in question missing.
There was a bug in how this was implemented which I fixed.
We had some small issues with the new vanilla docs because the snippets were created before the big refactoring of code snippets was merged. This PR brought them in line with the framework specific snippets.
The Jazz docs have code examples that hide certain lines to keep things simple. In the Svelte permissions guide, a "hide this line" marker was only hiding the first line of a multi-line block of code, leaving extra lines visible that shouldn't have been shown. I fixed the formatting so the right lines are hidden.
Expo and React Native do not ship a TextDecoder implementation. This docs update explains how to polyfill for (huge) performance improvements in native apps.
In our docs, we have a hook which fetches the current framework, however, there were other bits of code around the codebase which do similar things, and the hook was becoming unwieldy and difficult to follow.
I refactored the useFramework hook to make it easier to use, and improve the separation of concerns on the homepage docs.
When a Jazz app is uninstalled, all data is deleted except the login credentials on iOS which are persisted to the keychain. This can cause issues if the account is not synced and the user reinstalls the app.
Jazz's documentation had a missing asterisk in a role permissions table, which meant a footnote reference wasn't displaying correctly. I added the missing character to fix the formatting.
The Jazz homepage stopped building after a recent change added a new dependency that made a previously-needed TypeScript workaround invalid. I removed the outdated workaround and added a proper type check, which got the homepage building and deploying again.
Users can create lists using Jazz, but there's no protection to stop users from inserting the same item multiple times into a CoList. For users wanting lists of unique items, I proposed and wrote up a pattern for using a CoRecord keyed on the CoValue ID.
We have an example chat app for all our supported frameworks. For our browser-based frameworks, this chat allows also uploading images to the chat, but our mobile apps did not.
I added the image upload functionality to the mobile framework examples.
Vercel's Workflow SDK helps you build long-running background tasks. SvelteKit (a web framework) generates a build folder called .svelte-kit that should be ignored by tools watching for file changes. I added it to the ignore list so the workflow SDK doesn't unnecessarily process those generated files.