Is Flow still maintained?
Yes — Flow is actively maintained by Meta (formerly Facebook) and powers the type-checking of large internal codebases including the React Native repository and many of Meta’s product surfaces. Flow continues to receive regular releases on its public GitHub repo, though the broader ecosystem outside Meta has consolidated around TypeScript.
Flow vs TypeScript — which should I pick?
TypeScript has become the default for new JavaScript projects in 2026 thanks to its larger ecosystem, broader editor support, and ubiquity in npm packages. Flow remains an excellent choice when you are working in a Meta-internal codebase, contributing to React Native, or maintaining a project that adopted Flow before TypeScript dominance. Flow’s type inference is famously sound and its variance and exact-object syntax are more expressive in some areas.
How are nested objects handled?
Nested objects are emitted inline using object type literal syntax — { city: string }. Flow allows arbitrary nesting and the syntax matches what TypeScript developers expect. For exact object types (no extra keys allowed) wrap the literal in {| ... |} after generation.
How are arrays typed?
A JSON array becomes Array<T> where T is inferred from the first element. Arrays of strings become Array<string>; arrays of objects become Array<{...}>. For tuple types use [string, number] explicitly after generation; the inferrer picks list types because JSON does not distinguish tuples from arrays.
What about exact object types?
Flow supports exact types via {| key: type |} syntax — the type then forbids extra properties at compile time. The generator emits regular {} object types for compatibility with libraries that spread additional metadata; convert to {| |} by hand when you want strict shape enforcement.
How do I run the type checker?
Install Flow: npm install --save-dev flow-bin, run flow init to create .flowconfig, then npx flow at the project root. Files containing // @flow at the top will be checked. Babel’s @babel/preset-flow strips the annotations at build time so the compiled JS is clean.
Is the JSON uploaded to your servers?
No. Conversion runs entirely in your browser via JavaScript. Open DevTools → Network and click Convert — no requests are made. Pasting JSON containing tokens or proprietary data never leaves your machine.
Can I migrate Flow types to TypeScript later?
Yes — the syntax overlap is large. Tools like flow-to-ts (community) automate the bulk of the conversion. The main differences are exact object types ({| |} → strict via TypeScript noUncheckedIndexedAccess), Array<T> → T[] preference, mixed → unknown. Most type aliases convert one-to-one.