{"id":25768,"library":"isomor-react-app","title":"isomor-react-app","description":"React application setup package for the Isomor framework (v2.6.4). Isomor enables full-stack TypeScript development in a single project by auto-generating the API layer between frontend and backend, eliminating the need for explicit REST or GraphQL endpoints. It uses Babel transpilation at compile time to split client and server code. Release cadence is irregular; latest stable is v2.6.x. Key differentiator: seamless function calls from UI to server with full type safety, no boilerplate.","status":"active","version":"2.6.4","language":"javascript","source_language":"en","source_url":"https://github.com/apiel/isomor","tags":["javascript","isomorphic","typescript","react","server"],"install":[{"cmd":"npm install isomor-react-app","lang":"bash","label":"npm"},{"cmd":"yarn add isomor-react-app","lang":"bash","label":"yarn"},{"cmd":"pnpm add isomor-react-app","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core framework for server-side function transpilation and client-server bridging","package":"isomor","optional":false},{"reason":"Peer dependency for React projects","package":"react","optional":false}],"imports":[{"note":"Default export; named import will fail","wrong":"import { IsomorReactApp } from 'isomor-react-app'","symbol":"IsomorReactApp","correct":"import IsomorReactApp from 'isomor-react-app'"},{"note":"CJS users must use .default property; package is ESM-first since v2","wrong":"const IsomorReactApp = require('isomor-react-app')","symbol":"default","correct":"const IsomorReactApp = require('isomor-react-app').default"},{"note":"Namespace import imports an object with default key, not the class directly","wrong":"import * as IsomorReactApp from 'isomor-react-app'","symbol":"IsomorReactApp","correct":"import IsomorReactApp from 'isomor-react-app'"}],"quickstart":{"code":"import IsomorReactApp from 'isomor-react-app';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nconst app = new IsomorReactApp({\n  serverDir: './server',\n  port: process.env.PORT ?? '4000',\n});\n\napp.start();\n\nfunction App() {\n  const [message, setMessage] = React.useState('');\n  React.useEffect(() => {\n    // Direct server function call (generated by isomor)\n    import('./server/api').then(({ getMessage }) => {\n      getMessage().then(setMessage);\n    });\n  }, []);\n  return <div>{message}</div>;\n}\n\nReactDOM.render(<App />, document.getElementById('root'));","lang":"typescript","description":"Sets up an Isomor React application with server directory, port, and a demo component that calls a server function directly."},"warnings":[{"fix":"Ensure 'new IsomorReactApp({...})' is called at the entry point before dynamic imports of server functions.","message":"IsomorReactApp must be instantiated before any server-side imports are resolved, otherwise transpilation may fail.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Wrap in an async function to prepare for v3: 'await app.start()'.","message":"The 'start' method in v2.x is synchronous; it will become async in v3.","severity":"deprecated","affected_versions":"2.x"},{"fix":"Use 'serverDir' instead of 'serverFolder'.","message":"In v2.0, the constructor option 'serverDir' replaced 'serverFolder'.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Use dynamic imports like 'import('./server/api').then(...)' instead of static imports.","message":"Server functions must be dynamically imported with import() to allow isomor to transpile them at build time.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Upgrade Node to v11 or later.","message":"Isomor v2.6 requires Node >=11; older Node versions will throw on start.","severity":"breaking","affected_versions":"2.6.x"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"ESM: import IsomorReactApp from 'isomor-react-app'; CJS: const IsomorReactApp = require('isomor-react-app').default;","cause":"Using named import instead of default import in ESM, or forgetting .default in CJS","error":"Uncaught TypeError: IsomorReactApp is not a constructor"},{"fix":"Run 'npm install isomor'.","cause":"Missing peer dependency 'isomor'.","error":"Error: Cannot find module 'isomor'"},{"fix":"Ensure you imported the default export. For v2.x, start is a function; if using v1, use 'app.init()' instead.","cause":"Importing wrong module or using older version without start method?","error":"TypeError: app.start is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}