{"id":21323,"library":"fast-flow-transform","title":"fast-flow-transform","description":"A native Hermes/FFT-based Flow type stripper built on napi-rs, providing programmatic transform, CLI, and bundler adapters for webpack, rspack, rsbuild, Parcel, Vite, Rollup, Rolldown, and esbuild. Current version 0.0.3 (pre-1.0, rapid iteration). Differentiator: uses the battle-tested Hermes parser (same as Metro/React Native) for speed and correctness, supports source map merging, removes empty type-only value imports automatically, and offers a 'preserve' format mode (experimental) that keeps whitespace structure. Compared to alternatives like babel-plugin-flow, it is purpose-built for stripping Flow types without transforming JSX or other syntax.","status":"active","version":"0.0.3","language":"javascript","source_language":"en","source_url":"https://github.com/jbroma/fast-flow-transform","tags":["javascript","esbuild","flowtype","parcel","rolldown","rollup","rsbuild","rspack","strip-flow","typescript"],"install":[{"cmd":"npm install fast-flow-transform","lang":"bash","label":"npm"},{"cmd":"yarn add fast-flow-transform","lang":"bash","label":"yarn"},{"cmd":"pnpm add fast-flow-transform","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency for Parcel adapter","package":"@parcel/plugin","optional":true},{"reason":"Peer dependency for Parcel adapter source map handling","package":"@parcel/source-map","optional":true},{"reason":"Peer dependency for Vite plugin (v7.0.0 or later)","package":"vite","optional":true}],"imports":[{"note":"Default export only. Named export does not exist.","wrong":"import { transform } from 'fast-flow-transform';","symbol":"transform","correct":"import transform from 'fast-flow-transform';"},{"note":"CommonJS require returns the default export directly, not an object with a transform property.","wrong":"const { transform } = require('fast-flow-transform');","symbol":"transform (CJS)","correct":"const transform = require('fast-flow-transform');"},{"note":"Types are exported as value-like symbols; use `import type` for type-only imports to avoid runtime side-effects.","wrong":"import { TransformOptions } from 'fast-flow-transform';","symbol":"TypeScript types","correct":"import type { TransformOptions } from 'fast-flow-transform';"}],"quickstart":{"code":"import transform from 'fast-flow-transform';\n\nconst { code, map } = await transform({\n  filename: '/path/to/input.js',\n  source: `\n    // @flow\n    function greet(name: string): string {\n      return 'Hello, ' + name;\n    }\n  `,\n  sourcemap: true,\n  comments: true,\n});\n\nconsole.log(code);\n// Output (stripped): function greet(name) { return 'Hello, ' + name; }\nconsole.log(map); // Source map object","lang":"typescript","description":"Shows basic programmatic usage: importing the default transform function, passing a Flow source string with filename and sourcemap enabled, and logging the stripped output."},"warnings":[{"fix":"If you need full source map chain fidelity, work with babel-plugin-flow or wait for a future release.","message":"Source map merge does not preserve upstream sourcesContent or custom metadata fields.","severity":"breaking","affected_versions":">=0.0.1"},{"fix":"Install flow-enums-runtime as a production dependency if your project uses Flow enums.","message":"Flow enums lower to flow-enums-runtime package. Generated code imports it at runtime.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"If you need to retain an import that appears type-only but has runtime side effects, mark it with a comment or restructure imports.","message":"Empty type-only value imports are removed. This may break code expecting side-effect imports that are actually type-only.","severity":"gotcha","affected_versions":">=0.0.3"},{"fix":"Use reactRuntimeTarget only when using Flow component syntax with React 18 vs 19. For pure type stripping, omit it.","message":"reactRuntimeTarget option only affects Flow component lowering. It does not change JSX handling.","severity":"deprecated","affected_versions":">=0.0.1"},{"fix":"Stick to 'compact' or 'pretty' for production. Test preserve mode thoroughly.","message":"Preserve format mode is experimental. Output may differ from input whitespace.","severity":"gotcha","affected_versions":">=0.0.1"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"npm install flow-enums-runtime or add to dependencies.","cause":"Generated code imports flow-enums-runtime when Flow enums are lowered, but it is not installed.","error":"Error: Cannot find module 'flow-enums-runtime'"},{"fix":"Use import transform from 'fast-flow-transform' or const transform = require('fast-flow-transform').","cause":"Named import { transform } used instead of default import.","error":"TypeError: (0 , fast_flow_transform_1.default) is not a function"},{"fix":"Ensure transform is awaited: const result = await transform({...}).","cause":"transform was called without waiting for promise (missing await) or source was not passed correctly.","error":"SyntaxError: Unexpected token (1:16) - Flow syntax not stripped"},{"fix":"npm install fast-flow-transform@latest","cause":"Package not installed or mismatched version in package.json.","error":"Error: Could not resolve 'fast-flow-transform'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}