SearchCtrlK

  • ↑↓navigate
  • ↵open
  • escclose

Can’t find it? Contact us

Pick packages by problem

A map from the task in front of you to the packages that solve it and the guide that puts them to work, grouped by the kind of work rather than by package.

After reading this guide, you will know

  • What package solves the task in front of you
  • Where the guide that composes those packages is
  • What else a package usually arrives with, so you install them together

You know the problem and want the package. Each table below starts from a task, names the packages that solve it, and links the guide that puts them to work. The packages in one row are installed together, at one release, as Install and pin describes, and every package missing here is listed on the API reference.

Handle failures and validate input

I need to…PackagesGuide
return failures as values instead of throwing@sdxc/resultResult everywhere
validate form posts, query strings and route params@sdxc/validateValidate forms and route params
answer a failure as an RFC 9457 problem document@sdxc/problemErrors as responses

Answer HTTP requests

I need to…PackagesGuide
answer JSON with a named status, outside any framework@sdxc/responseUse the packages outside Remix
set cache headers on a response in a Remix app@sdxc/httpCache on Cloudflare Workers
redirect to one canonical host and path@sdxc/no-www-middleware, @sdxc/trailing-slash-middlewareCanonical URLs, lazy routes and header fields
read the caller's IP address and classify it@sdxc/get-client-ip, @sdxc/ipClient addresses and networks
fetch a URL someone else chose, within bounds@sdxc/outboundFetch URLs a stranger chose

Build an API

I need to…PackagesGuide
build a JSON API that answers failures as problems@sdxc/problem, @sdxc/httpBuild a JSON API with problem details
page a list by offset or keyset@sdxc/pagination, @sdxc/link-headerPaginate lists
limit how often a caller may ask@sdxc/rate-limitClient addresses and networks
describe the API as an OpenAPI 3.1 document@sdxc/openapi, @sdxc/json-schemaDescribe your API with OpenAPI
make a create safe to retry, accept partial updates@sdxc/idempotency, @sdxc/merge-patchIdempotent writes and JSON Merge Patch
write a typed client for someone else's API@sdxc/api-clientWrite a typed API client
expose the app to AI agents over MCP@sdxc/mcpExpose your app over MCP
call a Streamable HTTP MCP endpoint from code@sdxc/mcpCall an MCP server
point handshake-era agents at a modern-only MCP URL@sdxc/mcpBridge Agents to a modern MCP server

Sign people in and decide what they may do

I need to…PackagesGuide
sign people in with an OpenID Connect provider@sdxc/auth, @sdxc/session-storage-kvSign in with OpenID Connect
issue and verify JWTs and publish a JWKS@sdxc/jwtIssue and verify JWTs
add passkeys@sdxc/passkeyAdd passkeys
add TOTP two-factor sign-in@sdxc/crypto, @sdxc/qrAdd two-factor sign-in with TOTP
decide who can do what@sdxc/authzDecide who can do what
mint record ids, random identifiers and secrets@sdxc/uuid, @sdxc/typeid, @sdxc/cryptoIdentifiers and secrets

Secure the app

I need to…PackagesGuide
hash, sign and encrypt with Web Crypto@sdxc/cryptoHash, sign and encrypt with Web Crypto
send CSP, HSTS and Permissions-Policy headers@sdxc/security-headersSecurity headers and CSP
receive and send signed webhooks@sdxc/webhooksReceive and send webhooks
stop bots on a public form@sdxc/honeypot, @sdxc/captchaProtect forms from bots and abuse
score submitted content for spam@sdxc/spamProtect forms from bots and abuse

Publish content

I need to…PackagesGuide
parse markdown with typed frontmatter and render it@sdxc/markdownA markdown content pipeline
highlight code blocks@sdxc/highlightA markdown content pipeline
publish RSS, Atom and JSON feeds@sdxc/feed, @sdxc/rss, @sdxc/atom, @sdxc/json-feedPublish RSS, Atom and JSON feeds
serve a sitemap, robots.txt and structured data@sdxc/sitemap, @sdxc/robots, @sdxc/seoSEO, sitemaps and robots.txt

Read and write file formats

I need to…PackagesGuide
import and export CSV@sdxc/csvImport and export CSV
stream JSON Lines@sdxc/jsonlStream JSON Lines
bundle several files into one ZIP download@sdxc/zipStream several files as a ZIP
publish calendar feeds and read .ics uploads@sdxc/icalendarPublish calendar feeds
write invoices and reports as PDF@sdxc/pdfGenerate PDF documents

Build the interface

I need to…PackagesGuide
compose pages from styled components@sdxc/ui, @sdxc/u, @sdxc/iconsBuild the interface with remix/component
translate the app@sdxc/i18n, @sdxc/messageformatTranslate your app
slug titles, format dates, compare versions@sdxc/strings, @sdxc/dates, @sdxc/semverDates, text and identifiers
draw social card images in a Worker@sdxc/png, @sdxc/font, @sdxc/rasterDraw social card images
draw QR codes@sdxc/qrDraw QR codes

Store data

I need to…PackagesGuide
query D1 or a Durable Object's SQLite@sdxc/data-table-d1, @sdxc/data-table-sqlstorage, @sdxc/database-middlewareQuery D1 and Durable Object SQL
model tables with scopes and callbacks@sdxc/data-modelModel your tables
cache values in KV and responses at the edge@sdxc/cache, @sdxc/workers-cacheCache on Cloudflare Workers
store uploads in R2@sdxc/file-storage-r2Accept PNG avatars and draw placeholders
search text over SQLite@sdxc/searchFull-text search over SQLite
roll out features behind flags@sdxc/flags, @sdxc/flags-engineFeature flags
charge for the app@sdxc/billingCharge for your app

Run work in the background and reach people

I need to…PackagesGuide
run background jobs and cron schedules@sdxc/jobs, @sdxc/cronBackground jobs and cron
retry on a growing delay@sdxc/backoffRetry on a growing delay
send email@sdxc/mailSend email
send alerts to chat and paging services@sdxc/messagingSend alerts to chat and paging services

Operate and test

I need to…PackagesGuide
log one wide event per request and trace into jobs@sdxc/logger, @sdxc/trace-context, @sdxc/server-timingLogs, traces and timings
answer GET /health for monitors@sdxc/healthDependency health checks
build a command line@sdxc/cliBuild a command line
test against Cloudflare bindings in memory@sdxc/cloudflare-mocksTest Workers apps
generate believable, repeatable test data@sdxc/sample, @sdxc/randomGenerate believable test data
start, generate and upgrade a whole app@sdxc/kitThe sdxc command

Where to go next

Documentation

Can’t find it? Contact us