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.