Developer Playbook
In this guide, we’ll break down the “Extras” syntax in Python, compare each installation tier, and give you the definitive recommendation.
The first time I installed FastAPI, I genuinely thought I had messed something up. I installed it, ran my app… and nothing worked. No server, no clear hint of what was missing. After double-checking my code and the docs, I realized the issue wasn’t FastAPI at all — it was how I installed it. FastAPI is intentionally minimal by default, and once you understand its installation options, everything suddenly makes sense.
If you are just getting started, the very first hurdle isn’t the code — it’s the terminal. You’ll likely see three different commands floating around documentation and tutorials:
pip install fastapipip install "fastapi[standard]"pip install "fastapi[all]"Which one is right for your project? If you pick the wrong one, your app might fail to start, or you might bloat your production environment with unnecessary packages.
In this guide, we’ll break down the “Extras” syntax in Python, compare each installation tier, and give you the definitive recommendation for 2026.
FastAPI follows a modular design philosophy. Unlike “batteries-included” frameworks like Django, FastAPI aims to be a lightweight core. It relies on a high-performance ecosystem of tools but doesn’t force them on you unless you need them.
By using Python’s extras syntax (the [...] brackets), FastAPI allows you to opt-in to features. This keeps your deployment:
pip install fastapi
This installs the bare essentials required to write FastAPI code, but not to run it.
This version does not include an ASGI server. If you try to run uvicorn main:app, your terminal will throw an error: command not found: uvicorn.
Best For: Advanced developers building custom Docker images who want to pin specific versions of Uvicorn or use alternatives like Hypercorn.
Using pip
$ pip install fastapi
or using UV
$ uv add fastapi
pip install "fastapi[standard]”
This is the officially recommended default. It includes everything you need to develop and deploy a modern web API.

Best For: 99% of developers, beginners, and production-grade applications.
Using pip
$ pip install fastapi[standard]
using UV
$ uv add fastapi[standard]
pip install "fastapi[all]”
This is the “everything plus the kitchen sink” option. It installs every optional dependency FastAPI might ever interact with.
While it sounds convenient, [all] can lead to "Dependency Hell." It installs specialized libraries for email validation, template engines (Jinja2), and experimental features. This leads to slower CI/CD pipelines and larger cloud hosting costs.
Best For: Rapid prototyping or following a tutorial where you don’t want to stop and install individual packages.
$ pip install fastapi[all]
using UV
$ uv add fastapi[all]

If you are starting a new project today, follow these steps to ensure a clean, professional environment:
# Create the environment
python -m venv venv
# Activate it (Windows)
venv\Scripts\activate# Activate it (Mac/Linux)
source venv/bin/activate
pip install "fastapi[standard]"
Create a main.py and run it:
Python
from fastapi import FastAPI
app = FastAPI()@app.get("/")
def read_root():
return {"Hello": "World"}
Run with: fastapi dev(The modern way to start development).
Don’t overthink it. Use pip install "fastapi[standard]".
It provides the perfect balance between “ready-to-use” and “production-lean.” As your project grows, you can always manually add specific libraries, but starting with [standard] ensures you have the right tools for the job without the clutter.
Check out more deep dives and tutorials at createwitheric.me.
The core fastapi package contains only the framework logic (Starlette and Pydantic). If you install it alone, you will lack an ASGI server to run your code. In contrast, fastapi[standard] is the recommended installation for most developers; it includes the FastAPI CLI, the uvicorn server, and essential tools for local development and deployment.
While fastapi[all] is convenient for rapid prototyping or following tutorials, it installs every possible optional dependency, including specialized libraries for email validation, Jinja2 templates, and experimental features. Using this in production can lead to "Dependency Hell," significantly larger Docker image sizes, and slower CI/CD pipeline builds. For production-grade applications, it is better to use [standard] and manually add only the specific extra libraries your project requires.
Technically, yes, but you will need to manually manage your server environment. If you only install pip install fastapi, you must separately install an ASGI server like Uvicorn or Hypercorn. This "minimalist" approach is common among advanced developers building highly optimized, custom Docker containers who want to pin specific versions of every sub-dependency to minimize security vulnerabilities and overhead.
Want this applied to your project? Book a call or message me directly.
Live schedule
2 busy periods
Monday, Apr 27
Past date — booking closed
Day breakdown
Working
Busy09:00 AM - 05:00 PM
Current Project
Current Project
Meeting
Busy05:50 PM - 06:20 PM
Meeting/Call
In a meeting
Free Time
Free05:50 PM - 06:30 PM
Open For Meetings
This date is no longer available for new meeting requests.
1 busy period
Tuesday, Apr 28
Past date — booking closed
Day breakdown
Working
Busy09:00 AM - 05:00 PM
Current Project
Current Project
This date is no longer available for new meeting requests.
1 busy period
Wednesday, Apr 29
Past date — booking closed
Day breakdown
Working
Busy09:00 AM - 05:00 PM
Current Project
Current Project
This date is no longer available for new meeting requests.
1 busy period
Thursday, Apr 30
Past date — booking closed
Day breakdown
Working
Busy09:00 AM - 05:00 PM
Current Project
Current Project
This date is no longer available for new meeting requests.
1 busy period
Friday, May 1
Past date — booking closed
Day breakdown
Public Holiday
Out Of Office12:00 AM - 11:59 PM
Labor Day
This date is no longer available for new meeting requests.
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
No slots
1 open slot
Friday, May 29
Day breakdown
Free
Free07:20 PM - 08:15 PM
Open for Virtual Calls/Meetings
Discovery Calls and Meetings
Available slots
Free
07:20 PM - 07:50 PM
Open for Virtual Calls/Meetings
1 open slot
Saturday, May 30
Day breakdown
Free
Free07:20 PM - 08:15 PM
Open for Virtual Calls/Meetings
Discovery Calls and Meetings
Available slots
Free
07:20 PM - 07:50 PM
Open for Virtual Calls/Meetings
No slots
or