React Email Template Development
Build React-based email templates, preview them locally and review components, styling and localization.
Reference: https://clickhouse.com/docs/integrations/javascript
⚠️ Node.js runtime only. This skill covers the
@clickhouse/clientpackage running in a Node.js runtime exclusively — including Next.js Node runtime API routes, React Server Components, Server Actions, and standard Node.js processes. Do not apply this skill to browser client components, Web Workers, Next.js Edge runtime, Cloudflare Workers, or any usage of@clickhouse/client-web. For browser/edge environments, the correct package is@clickhouse/client-web.
@clickhouse/client (never @clickhouse/client-web)
and create a client with createClient({ url }) or rely on
supported defaults when appropriate. Close it with await client.close()
preferably when it's no longer needed or during graceful shutdown for global resources.JSONEachRow for typical row inserts/selects unless the user
has already chosen another format or is streaming raw bytes (CSV / TSV /
Parquet — see examples/node/performance/).
Note on clickhouse_settings: settings passed to createClient are
defaults for every request; they can be overridden per-call by passing
clickhouse_settings directly to insert(), query(), or command().
Always mention this when the user configures settings at the client level.query_params for user-supplied values — never template-
literal-interpolate them into SQL. See reference/query-parameters.md.
When answering a parameter-binding question, your response must
explicitly name template-literal interpolation as a "SQL injection
risk" — even when the user only asked about syntax and did not raise
security. The literal phrase "SQL injection" needs to appear; this is
the most common mistake from PostgreSQL/MySQL users and the security
framing is part of the correct answer, not an optional aside.client.insert() — write rows.client.query() + resultSet.json() / .text() / .stream() — read
rows that return data.client.command() — DDL and other statements that don't return rows
(CREATE, DROP, TRUNCATE, ALTER, SET in a session, etc.).client.exec() — when you need the raw response stream of an arbitrary
statement (rare in coding scenarios).client.ping() — health check; returns { success, error? }, never
throws on connection failure.pathname config option: client >= 1.0.0.BigInt values in query_params: client >= 1.15.0.TupleParam and JS Map in query_params: client >= 1.9.0.json.parse / json.stringify: client >= 1.14.0.Time / Time64 data types: ClickHouse server >= 25.6.QBit data type: ClickHouse server >= 25.10 (moved to Beta in 26.1; check the deployed release).Dynamic / Variant / new JSON types: ClickHouse server >= 24.5 /
24.1 / 24.8 (no longer experimental since 25.3).Identify the user's task and read the matching reference file.
| Task | Triggers / symptoms | Reference file |
|---|---|---|
| Configure / connect the client | Building a createClient call, URL parameters, clickhouse_settings, default format, custom HTTP headers |
reference/client-configuration.md |
| Compress requests / responses | compression, gzip vs zstd, { codec } option shape, Node version requirements, web limitations |
reference/compression.md |
| Ping the server | Health checks, readiness probes, "is ClickHouse up?" | reference/ping.md |
| Choose an insert format | "Which format should I use to insert?", JSON vs raw, JSONEachRow vs JSON vs JSONObjectEachRow |
reference/insert-formats.md |
| Insert into a subset of columns / different database | insert({ columns }), excluding columns, ephemeral columns, cross-DB inserts |
reference/insert-columns.md |
| Insert values, expressions, dates, decimals | INSERT … VALUES with SQL functions, Date/DateTime from JS, Decimal precision, INSERT … SELECT; inserting a UUID into a UInt128 column is tricky — use when the user is writing code that stores a UUID as UInt128 |
reference/insert-values.md |
| Async inserts (server-side batching) | async_insert=1, fire-and-forget vs wait-for-ack |
reference/async-insert.md |
| Select and parse results | JSONEachRow reads, JSON with metadata, picking a select format |
reference/select-formats.md |
| Parameterize queries | Binding values, special characters / escaping, "SQL injection?", {name: Type} syntax |
reference/query-parameters.md |
| Sessions & temporary tables | session_id, CREATE TEMPORARY TABLE, per-session SET commands |
reference/sessions.md |
| Modern data types | Dynamic, Variant, JSON (object), Time, Time64, QBit (vector search) |
reference/data-types.md |
| Custom JSON parse/stringify | Plug in JSONBig / safe-stable-stringify / a BigInt-aware serializer |
reference/custom-json.md |
import { createClient } from '@clickhouse/client' (Node, never
Web).await client.close() at the end of self-contained snippets; in
long-running services, close on graceful shutdown.format: 'JSONEachRow' and values: [...] unless the
user's scenario requires otherwise.await (await client.query({...})).json<RowType>() for
small / medium result sets; for bigger results suggest streaming.{name: Type}
syntax — never $1, ?, or :name.clickhouse_settings: { wait_end_of_query: 1 } on the command() call to
buffer the HTTP response and improve late-error reporting. This is not a
cluster-wide atomicity, replication or asynchronous-mutation completion guarantee. See
https://clickhouse.com/docs/en/interfaces/http/#response-buffering.This skill covers day-to-day coding against @clickhouse/client (Node).
The following topics are intentionally not covered here:
ECONNRESET → use the
clickhouse-js-node-troubleshooting skill.examples/node/performance/.examples/node/security/.CREATE TABLE patterns, deployment-shaped connection strings,
replication / sharding choices — see
examples/node/schema-and-deployments/.@clickhouse/client-web and see
examples/web/.examples/node/coding/ — the runnable corpus this skill is built on.Source: ClickHouse · Apache-2.0 · SHA-256 shown alongside the download.
License file included. A license and checksum are not a security certification. Review package instructions and scripts before running them.
clickhouse-js-node-coding/SKILL.md11567 bytesclickhouse-js-node-coding/SOURCE.txt398 bytesAn adaptation record is bundled. Inspect the declared changes and archived original before use. Review adaptation and original-file hashes →
Machine-readable installation guide →Source and packaging checks recorded on 2026-10-03. These notes are not safety certification or measured task performance.
A supported Node.js runtime, @clickhouse/client and an authorized ClickHouse HTTP(S) connection. Full codec object guidance needs client >=1.22.0; zstd needs Node >=22.15.0. Check exact server features and optional parsers. Browser/Edge clients are separate.
Apache-2.0 material; separate hosting, tooling, model access and services may have costs. Full skill/agent runtime evaluation has not been performed. Selected version, FORMAT and bounded-scope corrections are marked; originals retained. DDL examples can replace tables. Setting wait_end_of_query is response buffering, not cluster atomicity. QBit moved to Beta in 26.1, not blanket GA. BigInt parsing must feature-check source text. UUID-to-UInt128 byte-layout and full type/version behavior need isolated validation. No client library or database bundled.
Upstream commit: 356a8c1b9a7392adb389a132f5ad3fec38532a03
Runtime status: not tested by this catalog. Configure your client and test the skill in your own environment.
Records are supplied by the site administrator and bound to a specific package. They are not third-party safety certification. This page does not execute skills.
No published scenario records yet. Resource availability and download counts do not imply measured task performance.
Be the first to share your experience.
Sign in to leave a review →Build React-based email templates, preview them locally and review components, styling and localization.
Inspect documented Resend CLI operations for email, domains, templates and account administration.
Plan transactional email, templates, delivery events and account operations with Resend SDK references.
1 current outcome record · Read scope
Reference for the Claude API / Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model …