Getting Started
This guide will help you get started with Crashless in minutes.
Installation
npm install crashless
Basic Setup
The simplest way to use Crashless is with default settings:
import express from 'express';
import crashless from 'crashless';
const app = express();
// One line setup
app.use(crashless());
// Your routes - errors automatically caught
app.get('/users/:id', async (req, res) => {
const user = await db.getUser(req.params.id);
res.json(user);
});
app.listen(3000);
That's it! Your server is now protected from crashes.
Access Dashboard: http://localhost:3000/_crashless
What Happens Now?
Automatic Error Handling
All errors are caught automatically:
// Async errors - automatically caught
app.get('/data', async (req, res) => {
const data = await fetchData(); // If this throws, Crashless catches it
res.json(data);
});
// Sync errors - also caught
app.get('/test', (req, res) => {
throw new Error('Test error'); // Automatically handled
});
Standardized Error Responses
Errors are returned in a consistent format:
{
"success": false,
"message": "Error message",
"code": "ERR_500"
}
Built-in Dashboard
Visit http://localhost:3000/_crashless to see:
- Real-time request metrics
- Error analytics
- Performance insights
- Distributed traces
Common Configurations
Minimal (Error Handling Only)
For high-traffic applications needing only error handling:
app.use(crashless({
telemetry: { engine: 'none' }
}));
Overhead: ~3% vs plain Express
Standard Production
For most production applications:
app.use(crashless({
telemetry: { engine: 'builtin' }
}));
Overhead: ~20% vs plain Express
Full Observability
For debugging and development:
app.use(crashless({
telemetry: {
engine: 'builtin',
traces: {
enabled: true,
samplingRate: 0.2 // Sample 20% of requests
}
}
}));
Overhead: ~27% vs plain Express
Next Steps
- Configuration Guide - Customize Crashless
- API Reference - Complete API docs
- Examples - Real-world patterns
- Performance Guide - Optimization tips