📣June 14th release is out!Read the release notes
An astronaut decoding alien hieroglyphs

Typescript types that are friends not foe

TLDR

We improved Typescript types for results, added a short hand for querying on the ID of an entity, and added a useQueryOne hook to the React Client.

Typescript type improvements

Out of the box, Triplit now generates more human-readable types for your query results. Before when you inspected the type returned from a query you would get a type with an opaque name, with the latest update results will have simple types that are usually plain objects with simple primitive values.

Before 🤔

QueryFetchResult<string, ClientFetchResultEntity<...>>

After 🤩

{
  id: string;
  name: string;
  age: number;
}

A shorthand for querying by ID

We've added a shorthand for querying by ID. Now you can use the id method when building queries as a more concise way to query for an entity by its ID.

Before

triplit.query('todos').where('id', '=', 'the-todo-id');

After

triplit.query('todos').id('the-todo-id');

useQueryOne React hook

If you're building a React app with Triplit, you can now use the useQueryOne hook when you only want a single entity returned from your query. This hook works the same as the useQuery but it will only return a single entity instead of a multiple of entities. Going forward you should use this instead of the useEntity hook.

Example

import { useQueryOne } from '@triplit/react';
import client from './triplit-client';

function AlbumPage({ albumId }: { albumId: string }) {
  const query = client.query('albums').id(albumId).include('tracks');
  const { result: albumWithTracks } = useQueryOne(client, query);
  return <>...</>;
}