name: implementing-new-features description: Implementation guide for new Streamlit features. Use when adding new elements, widgets, or features that span backend, frontend, and protobufs.
New Feature Implementation Guide
Most features need implementation in three areas:
- Backend:
lib/streamlit/ - Frontend:
frontend/ - Protobufs:
proto/
New features should include:
- Python unit tests in
lib/tests - Vitest unit tests
- E2E Playwright tests in
e2e_playwright/
Order of Implementation
Protobuf changes in
proto/then runmake protobuf- New elements: add to
proto/streamlit/proto/Element.proto
- New elements: add to
Backend in
lib/streamlit/- New elements: add to
lib/streamlit/__init__.py
- New elements: add to
Python unit tests in
lib/tests- Run:
uv run pytest lib/tests/streamlit/the_test_name.py - New elements: add to
lib/tests/streamlit/element_mocks.py
- Run:
Frontend in
frontend/- New elements: add to
frontend/lib/src/components/core/Block/ElementNodeRenderer.tsx
- New elements: add to
Vitest tests in
*.test.tsx- Run:
cd frontend && yarn vitest lib/src/components/elements/NewElement/NewElement.test.tsx
- Run:
E2E Playwright tests in
e2e_playwright/- Run:
make run-e2e-test e2e_playwright/name_of_the_test.py
- Run:
Autofix formatting and linting:
make autofixVerify the implementation:
make check