Migration Guide
Step-by-step guides for migrating from Express, Fastify, Hono, NestJS, and other frameworks to MoroJS.
Why Migrate to MoroJS?
Performance
68k+ req/sec - up to 10x faster than Express with native TypeScript support
Type Safety
End-to-end type inference with built-in Zod validation
Zero Config
Production-ready with intelligent routing and automatic middleware ordering
Migrating from Express
Core Concepts
Express
- • Middleware-first approach
- • Manual type definitions
- • Callback-based handlers
- • Manual validation setup
MoroJS
- • Intelligent middleware ordering
- • Automatic type inference
- • Modern async/await
- • Built-in Zod validation
Express Code
Express App
typescript
MoroJS Equivalent
MoroJS App
typescript
Migration Steps
- Replace
express()withcreateApp() - Remove middleware imports (body-parser, cors) - they're built-in
- Convert routes to chainable API with validation
- Replace manual validation with Zod schemas
- Update
app.listen()toawait app.listen()
Migrating from Fastify
Key Differences
Fastify
- • JSON Schema validation
- • Plugin-based architecture
- • Manual schema definitions
- • TypeScript via @fastify/type-provider
MoroJS
- • Zod/Joi/Yup validation
- • Module-based architecture
- • Type inference from schemas
- • Native TypeScript support
Fastify Code
Fastify App
typescript
MoroJS Equivalent
MoroJS App
typescript
Migration Steps
- Replace
Fastify()withcreateApp() - Convert JSON Schema to Zod schemas
- Remove plugin registrations - use built-in features
- Update route definitions to chainable API
- Replace
request/replywithreq/res
Migrating from Hono
Similarities & Differences
Both MoroJS and Hono prioritize modern TypeScript and edge runtime support. Here's what changes:
Hono
- • Context-based API
- • Manual validator integration
- • Edge-first design
- • Lightweight core
MoroJS
- • Request/Response objects
- • Built-in validation
- • Multi-runtime adapters
- • Full-featured framework
Hono Code
Hono App
typescript
MoroJS Equivalent
MoroJS App
typescript
Migration Steps
- Replace
new Hono()withcreateApp() - Remove
@hono/zod-validator- use built-in validation - Convert context API (
c) to destructured parameters - Replace
c.json()with direct returns - Update
c.req.param()to typedparamsobject
Migrating from NestJS
Architectural Shift
NestJS uses decorators and dependency injection. MoroJS provides similar patterns with a more functional approach:
NestJS
- • Decorator-based routing
- • Class-based controllers
- • Heavy DI container
- • Module imports/exports
MoroJS
- • Functional routing API
- • Function-based handlers
- • Lightweight DI container
- • Module auto-discovery
NestJS Code
NestJS Controller
typescript
MoroJS Equivalent
MoroJS Module
typescript
Migration Steps
- Convert controllers to functional route handlers
- Replace DTOs with Zod schemas
- Move services to MoroJS DI container or use directly
- Replace decorators with chainable API
- Update module imports to MoroJS module system
- Convert guards/interceptors to middleware
Common Migration Patterns
Middleware Pattern
Any Framework → MoroJS
typescript
Error Handling
Error Handlers
typescript
Authentication
JWT Auth Migration
typescript
Database Integration
ORM Migration
typescript
Migration Checklist
Step-by-Step Migration
1. Setup MoroJS Project
Install MoroJS and configure TypeScript for ESM
2. Migrate Routes Incrementally
Start with simple routes and gradually move complex ones
3. Convert Validation
Replace validation libraries with Zod schemas (or keep using adapters)
4. Update Middleware
Port middleware or use MoroJS built-in features
5. Migrate Services & Dependencies
Move business logic to MoroJS DI container or modules
6. Update Tests
Adapt tests to MoroJS testing utilities
7. Deploy & Monitor
Deploy to your target runtime and verify performance