Skip to content

EreoJSReact Fullstack Framework

Built on Bun for speed, simplicity, and developer experience

Quick Start ​

Create a new EreoJS project:

bash
bunx create-ereo@latest my-app
cd my-app
bun dev

Choose Your Learning Path ​

New to EreoJS? Follow the Getting Started guide to build your first app.

Coming from another framework? Jump to the migration guide for Next.js, Remix, or Express.

Looking for a specific topic? Browse the Guides for practical how-to articles or the API Reference for detailed API docs.

Want to understand the architecture? Read the Core Concepts to learn how EreoJS works under the hood.

Why EreoJS? ​

EreoJS combines the best ideas from modern React frameworks while staying true to web standards and keeping things simple:

  • Web Standards First - Uses standard Request/Response APIs throughout
  • Type-Safe by Default - Full TypeScript support with inferred types for routes, loaders, and actions
  • Progressive Enhancement - Forms work without JavaScript, then enhance with client-side features
  • Minimal Abstraction - Learn web APIs, not framework magic

Framework Comparison ​

FeatureEreoJSNext.jsRemix
RuntimeBunNodeNode/Bun
BundlerBunWebpack/Turbopackesbuild
IslandsNativeManualManual
Data LoadingLoadersServer ComponentsLoaders
CachingTag-basedISR/CacheManual
FormsProgressiveClient-onlyProgressive

See detailed comparisons →

Example ​

tsx
// app/routes/posts/[id].tsx
import { createLoader, createAction } from '@ereo/data'

export const config = {
  render: 'ssr',
  cache: { tags: ['posts'] }
}

export const loader = createLoader(async ({ params }) => {
  const post = await db.posts.find(params.id)
  return { post }
})

export const action = createAction(async ({ request }) => {
  const formData = await request.formData()
  await db.posts.update(formData.get('id'), {
    title: formData.get('title')
  })
  return { success: true }
})

export default function Post({ loaderData }) {
  const { post } = loaderData
  return (
    <article>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </article>
  )
}

Released under the MIT License.