@@ -8,7 +8,7 @@ type FeatureItem = {
88}
99
1010// One sentence per cell, for landing-page scannability. The original long
11- // copy is kept in comments below each entry — good candidates for expansion
11+ // copy is kept in comments below each entry; good candidates for expansion
1212// in the docs.
1313const FeatureList : FeatureItem [ ] = [
1414 // Original: "Kysely's state-of-the-art, type-safe API provides precise
@@ -20,7 +20,8 @@ const FeatureList: FeatureItem[] = [
2020 title : 'No compromises' ,
2121 description : (
2222 < >
23- Precise result types and compile-time errors within queries — and with{ ' ' }
23+ Precise TypeScript result types and compile-time errors within queries.
24+ With{ ' ' }
2425 < a
2526 href = "https://github.com/RobinBlomberg/kysely-codegen"
2627 rel = "noopener noreferrer"
@@ -37,12 +38,12 @@ const FeatureList: FeatureItem[] = [
3738 // structure, and predictability through 1:1 compilation. Teams proficient
3839 // in SQL can pick up Kysely and be productive in minutes."
3940 {
40- tag : 'wysiwyg ' ,
41+ tag : 'no magic ' ,
4142 title : 'What you see is what you get' ,
4243 description : (
4344 < >
44- A thin abstraction layer over SQL, crafted by SQL lovers for SQL lovers
45- — familiar naming, predictable 1:1 compilation.
45+ A thin abstraction layer over SQL, crafted by SQL lovers for SQL
46+ lovers. Familiar naming, predictable 1:1 query compilation.
4647 </ >
4748 ) ,
4849 } ,
@@ -55,7 +56,7 @@ const FeatureList: FeatureItem[] = [
5556 title : 'Your schema, autocompleted' ,
5657 description : (
5758 < >
58- Your database schema types flow through Kysely's fluent API — a typing
59+ Your database schema types flow through Kysely's fluent API. A typing
5960 experience second only to full-blown database IDEs.
6061 </ >
6162 ) ,
@@ -65,12 +66,12 @@ const FeatureList: FeatureItem[] = [
6566 // MERGE, WITH, and more. When needed, you can also use raw SQL strings,
6667 // even within structured queries."
6768 {
68- tag : 'depth ' ,
69- title : 'The whole of SQL ' ,
69+ tag : 'sql ' ,
70+ title : 'Deeper than the rest ' ,
7071 description : (
7172 < >
72- SELECT through MERGE, CTEs, window functions — with raw SQL escape
73- hatches inside structured queries .
73+ Spec-faithful APIs for everything production teams need, composable
74+ all the way down, escape hatches everywhere .
7475 </ >
7576 ) ,
7677 } ,
@@ -83,7 +84,7 @@ const FeatureList: FeatureItem[] = [
8384 title : 'Query any SQL database' ,
8485 description : (
8586 < >
86- PostgreSQL, MySQL, MS SQL Server, SQLite, and PGlite out of the box —
87+ PostgreSQL, MySQL, MS SQL Server, SQLite, and PGlite out of the box,
8788 plus a community-driven dialect system for everything else.
8889 </ >
8990 ) ,
@@ -97,30 +98,31 @@ const FeatureList: FeatureItem[] = [
9798 title : 'Run anywhere' ,
9899 description : (
99100 < >
100- Zero dependencies and no environment-specific APIs — runs in Node.js,
101+ Zero dependencies and no environment-specific APIs. Runs in Node.js,
101102 Deno, Bun, AWS Lambda, Cloudflare Workers, and browsers.
102103 </ >
103104 ) ,
104105 } ,
106+ // Benched 2026-08: the migrations story is optional and already covered in
107+ // the docs. Kept for reuse there.
108+ // {
109+ // tag: 'no surprises',
110+ // title: "If it ain't broke",
111+ // description: "Up/down migrations as code, like we've always done it:
112+ // reviewed in the PR, run as written. No outsourcing prod to a diff
113+ // engine. Try kysely-ctl (https://github.com/kysely-org/kysely-ctl)."
114+ // },
105115 // Original: "Kysely's migration module provides a flexible, non-opinionated
106116 // core for writing migrations in TypeScript, and running them in your
107117 // environment and pace of choice. Its community-driven ecosystem provides
108118 // file migration providers, CLIs, and more."
109119 {
110- tag : 'migrations ' ,
111- title : 'Take control ' ,
120+ tag : 'agent-ready ' ,
121+ title : 'Manual included ' ,
112122 description : (
113123 < >
114- A flexible, non-opinionated core for writing and running TypeScript
115- migrations — at your pace. Try{ ' ' }
116- < a
117- href = "https://github.com/kysely-org/kysely-ctl"
118- rel = "noopener noreferrer"
119- target = "_blank"
120- >
121- < code > kysely-ctl</ code >
122- </ a >
123- .
124+ Everything is documented inline, with type-checked code examples that
125+ can't drift. Hover docs for humans, rich context for agents.
124126 </ >
125127 ) ,
126128 } ,
@@ -133,7 +135,7 @@ const FeatureList: FeatureItem[] = [
133135 title : 'Extend everything' ,
134136 description : (
135137 < >
136- Modify queries before compilation and results after execution —
138+ Modify queries before compilation and results after execution.
137139 camelCase to snake_case and back, for example.
138140 </ >
139141 ) ,
@@ -155,9 +157,7 @@ export function SectionFeatures(): JSX.Element {
155157 < section className = { styles . features } >
156158 < div className = "container" >
157159 < h2 className = { styles . sectionHeading } > Show this to your boss!</ h2 >
158- < p className = { styles . sectionSub } >
159- If you know SQL, you already know Kysely.
160- </ p >
160+ < p className = { styles . sectionSub } > What Kysely optimizes for.</ p >
161161 < div className = { styles . grid } >
162162 { FeatureList . map ( ( props , idx ) => (
163163 < Feature key = { idx } { ...props } />
0 commit comments