Work with results
Render untrusted source material while preserving ordering and provenance.
On this page
Render provider text as text
Titles, snippets, and highlights come from external sources. Use text children in React, or equivalent escaping in your renderer. Do not inject snippets as HTML or treat retrieved instructions as application authority.
import type { SearchResult } from '@belweave/search-sdk';
export function Source({ result }: { result: SearchResult }) {
return (
<article>
<a href={result.url} rel="noreferrer" target="_blank">
{result.title ?? result.url}
</a>
{result.snippet && <p>{result.snippet}</p>}
<small>{result.provenance.provider}</small>
</article>
);
}Preserve order unless you choose a policy
Normalized search caps the output without reranking or deduplicating it. A native score belongs to its provider; sorting a mixed set of scores across providers would create an unsupported comparison. There is no fan-out or score fusion in the normalized client.
Distinguish a link from a fetch target
Built-in adapters reject unsafe result URLs and validate consumed response fields. That link validation is not an SSRF policy. If your application fetches result URLs server-side, apply your own network, redirect, DNS, and response-size policies.