When a dump looks like an exception, Dumpio renders a dedicated view: the framework badge, the error class and message, the parsed stack trace with code context, extracted request/user/database/environment information, and ranked solution suggestions.
When a dump is treated as an exception
The content is an object and at least one of the following holds:
typeis"exception", or- it contains one of the keys
exception,error,stack,stackTrace,trace, or - it contains
messagetogether withfile,line, orstack.
The simplest valid exception:
1{2 "type": "exception",3 "exception": "RuntimeException",4 "message": "Payment gateway timed out",5 "file": "/app/Payments/Gateway.php",6 "line": 887}
Recognized frameworks
If you set the framework field, it's used directly. Otherwise Dumpio infers it from the content. Recognized values:
laravel, symfony, php, node, react, vue, alpine, js, python, django, flask, fastapi, go, gin, echo.
Detection uses signals such as the exception class namespace (Illuminate\, Symfony\), the framework_version field, language markers in the stack (goroutine, panic:, a Python traceback), and framework-specific context keys. An unknown framework falls back to js. Each framework has its own icon and badge in the header.
Extracted error fields
| Shown as | Read from |
|---|---|
| Error class | exception → error.name → type (default Error) |
| Message | message → error.message |
| File / line | top-level file/line, or error.file/error.line |
| Code | code / error.code (may be a string, e.g. SQLSTATE "42S02") |
| Severity | severity → level |
Stack trace
The trace is read from trace, stackTrace, stack, or error.stack.
- An array of frames: each frame can carry
file/filename,line/lineno,column/colno,function/method/name,class,type,args, and a code snippet (code/code_snippet/context, orpreview). - Text traces are parsed in three formats:
- JS —
at fn (file:line:col) - PHP —
#0 file(line): fn() - Laravel/Symfony —
at Class->method() in file:line
- JS —
The file and line of each frame is a clickable jump-to-editor link, and frames with a code snippet show it highlighted on the error line.
The Context tab
Dumpio parses rich context from the top level or from a nested context object and shows the most useful parts in the Context tab:
- Request – url/uri, method, headers, body/data, query/get, params, ip, user agent.
- User – id, email, name, roles.
- Database – connection, query/sql, bindings, execution time (rendered as SQL).
- Environment – PHP/Node/Python/Go version, framework and its version, environment, debug flag, plus language-specific extras.
You populate the context by nesting it under context (or providing top-level fields such as request / user etc.):
1{ 2 "type": "exception", 3 "framework": "laravel", 4 "exception": "Illuminate\\Database\\QueryException", 5 "message": "SQLSTATE[42S02]: Base table or view not found", 6 "code": "42S02", 7 "file": "/app/Models/User.php", 8 "line": 45, 9 "trace": [10 {11 "file": "/app/Http/Controllers/UserController.php",12 "line": 20,13 "function": "index",14 "class": "App\\Http\\Controllers\\UserController",15 "type": "->"16 }17 ],18 "context": {19 "request": { "method": "GET", "url": "/users", "ip": "127.0.0.1" },20 "user": { "id": 7, "email": "ada@example.com" },21 "database": { "connection": "mysql", "query": "select * from users", "time": 3.8 },22 "environment": { "framework": "Laravel", "framework_version": "11.0", "app_env": "local", "app_debug": true }23 }24}
Solution suggestions
Dumpio matches the error message and class against a built-in database of common problems (e.g. "Class not found", SQLSTATE, "Cannot read property", "Unexpected token", CORS, "Maximum update depth exceeded", Laravel CSRF / mass-assignment, React hook rules, Vue mounting) and offers ranked suggestions with a confidence probability. These are heuristic hints, not guaranteed fixes.
The automatically assigned flag
When you don't set flag, the exception's severity maps to a color: fatal/critical → red, warning/deprecated → yellow, notice/info → blue, sql/database → purple, else red.