Codecs (Serializers)
Codecs convert between your typed values and the string stored in the URL.
Built‑in codecs
serializers.stringCodecserializers.numberCodecserializers.booleanCodecserializers.dateISOCodecserializers.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.