Trade-Offs
When FraiseQL might not be the right choice
We're Honest About Trade-Offs
FraiseQL is great at specific problems. But it's not a silver bullet. Here's where it has limitations:
1. Rapid Schema Evolution
The Problem
FraiseQL compiles views at deploy time. If you're rapidly changing your schema multiple times per day, you'll need to redeploy for each change.
This means: Deploy cycle for every schema change. Not great for early-stage startups doing rapid experimentation.
Better Alternatives
- Hasura - Schema inference from database (changes reflected immediately)
- PostGraphile - Auto-generates schema from database structure
- Apollo with resolvers - Runtime flexibility, no recompilation needed
When FraiseQL Still Works
- You've stabilized your schema (post-MVP)
- Schema changes are planned and infrequent
- Your deployment pipeline is automated
2. Flexible, Ad-Hoc Queries
The Problem
FraiseQL views are pre-defined. Each view is a specific query composition.
If you need completely flexible, user-defined queries (like building a reporting tool), FraiseQL requires a view for each possible query combination.
Better Alternatives
- Metabase/Superset - Ad-hoc query builders with caching
- Cube.js - Semantic layer for analytics
- Traditional GraphQL - Field resolvers provide flexibility
- REST API - Simple, flexible for reporting
When FraiseQL Still Works
- You know the queries developers need (dashboards, reports, etc.)
- You can predict data composition patterns
- You have a finite set of common queries
3. Complex Runtime Logic
The Problem
FraiseQL moves logic to the database (SQL views). This works great for data composition.
But if you need complex application logic (business rules, integrations, workflows), FraiseQL keeps that in resolvers—which then defeats the "no N+1" advantage if those resolvers fetch additional data.
Better Alternatives
- Traditional GraphQL - Resolvers give you full control over logic
- REST API - Better for complex business logic workflows
- gRPC - Type-safe, efficient for complex services
When FraiseQL Still Works
- Most of your logic is data composition (not business logic)
- You can push logic to the database layer
- You don't need external service integrations in resolvers
4. Prototype/MVP Speed
The Problem
FraiseQL requires upfront schema planning. You need to:
- Design your database schema
- Write SQL views
- Define types in your framework
- Compile and deploy
For a quick MVP where you don't know what you're building, this overhead might be too much.
Better Alternatives
- Firebase/Supabase - Fastest path to MVP
- Hasura - Auto-generates API from schema
- Apollo + Node.js - Rapid development with resolvers
When FraiseQL Still Works
- You have a clear data model in mind
- Your MVP is past the validation stage
- You're ready to build for scale
5. NoSQL / Document Databases
The Problem
FraiseQL is SQL-first. It works with PostgreSQL, MySQL, MariaDB, and SQLite—databases with structured schemas and SQL support.
If you're using MongoDB, DynamoDB, or other NoSQL databases, FraiseQL doesn't apply.
Better Alternatives
- Apollo - Language-agnostic, works with any data source
- Pothos - GraphQL schema builder for TypeScript
- Strawberry - Python GraphQL with dataloader support
When FraiseQL Still Works
- You're committed to SQL databases
- You need ACID transactions and referential integrity
- Your data is relational and structured
6. Deployment Overhead
The Problem
FraiseQL introduces an extra deployment step: view compilation.
For tiny APIs or MVPs where simplicity matters more than scale, this can feel like extra ceremony.
Better Alternatives
- Vercel Functions + Apollo - Simplest possible deployment
- Firebase Functions - Serverless GraphQL
- Hasura Cloud - Single-click deployment
When FraiseQL Still Works
- You have a mature deployment pipeline
- Your team is comfortable with compiled systems
- You're building for scale from the start
Decision Matrix
Use this to help decide if FraiseQL is right for your project:
| Question | FraiseQL ✅ | Something Else ❌ |
|---|---|---|
| Is your data relational and structured? | Yes | No (using NoSQL) |
| Do you use SQL databases? | PostgreSQL, MySQL, MariaDB, SQLite | MongoDB, DynamoDB, Firestore |
| Is your schema mostly stable? | Yes (post-MVP) | No (rapid iteration) |
| Do you know your common queries? | Yes (defined views) | No (ad-hoc queries) |
| Is performance critical? | Yes (zero N+1) | Flexible |
| Do you need to scale? | Yes (compile-time safety) | Not immediately |
| Is your logic mostly data composition? | Yes | No (complex business logic) |
The Honest Truth
FraiseQL solves a specific problem really well:
"I have relational data in SQL, I know my queries, and I want predictable, fast APIs without N+1 queries."
If that's you, FraiseQL is probably the best choice.
If you need something else, there are great tools for those problems too. Use the right tool for your job.