Skip to content

Codecs (Serializers)

Codecs convert between your typed values and the string stored in the URL.

Built‑in codecs

  • serializers.stringCodec
  • serializers.numberCodec
  • serializers.booleanCodec
  • serializers.dateISOCodec
  • serializers.createJsonCodec<T>()
  • serializers.createArrayCodec(innerCodec, separator?)
  • serializers.createEnumCodec(values)

You can use either:

ts
queryRef('count', { defaultValue: 0, parse: serializers.numberCodec.parse });
// or shorter
queryRef('count', { defaultValue: 0, codec: serializers.numberCodec });

Arrays and enums:

ts
const tags = queryRef<string[]>('tags', {
  defaultValue: [],
  codec: serializers.createArrayCodec(serializers.stringCodec),
});

const sort = queryRef<'asc' | 'desc'>('sort', {
  defaultValue: 'asc',
  codec: serializers.createEnumCodec(['asc', 'desc'] as const),
});

Custom codec

ts
import type { QueryCodec } from 'vue-qs';

const percentNumber: QueryCodec<number> = {
  parse: (raw) => (raw ? Number(raw.replace('%', '')) : 0),
  serialize: (n) => `${n}%`,
};

const discountRate = queryRef('discountRate', { defaultValue: 0, codec: percentNumber });

Return null from serialize to omit the param entirely.

Released under the MIT License.