Breaking Change: CLI Now Subcommand-First
April 7, 2026 Breaking change in arize-phoenix 14.0.0 The Phoenix server CLI is now subcommand-first. Flags that previously preceded the subcommand must now follow it. Before:db migrate subcommand is unchanged. Pass --database-url directly to the subcommand that needs it, or rely on PHOENIX_SQL_DATABASE_URL:
--enable-websockets flag has been removed. Use phoenix serve --help or phoenix db migrate --help for full option listings.
Breaking Change: Legacy px.Client() Removed
April 7, 2026
Breaking change in arize-phoenix 14.0.0
phoenix.session.client.Client (accessed as px.Client()) has been removed. All client interactions now go through arize-phoenix-client.
endpoint parameter is now base_url. When omitted, the client falls back to environment variables or http://localhost:6006. The new client organizes methods under resource namespaces (.spans, .traces, .datasets, .experiments) instead of flat methods on the client object.
See the v14 migration guide for a full method-by-method mapping.
Breaking Change: /v1/evaluations Endpoint Removed
April 7, 2026
Breaking change in arize-phoenix 14.0.0
The POST /v1/evaluations and GET /v1/evaluations REST endpoints have been removed. Use the annotations API instead:
| Previous | Replacement |
|---|---|
POST /v1/evaluations (span evals) | POST /v1/span_annotations |
POST /v1/evaluations (trace evals) | POST /v1/trace_annotations |
POST /v1/evaluations (document evals) | POST /v1/document_annotations |
GET /v1/evaluations | client.spans.get_span_annotations(...) |
protobuf is no longer a direct dependency of the Phoenix server (it remains a transitive dependency via OpenTelemetry gRPC packages).
Breaking Change: Evals 1.0 Removed
April 7, 2026 Breaking change in arize-phoenix-evals 3.0.0, arize-phoenix-client 2.3.1+arize-phoenix-evals 3.0.0 removes the legacy evals 1.0 module and the legacy experiments module from the Phoenix server package.
Removed from arize-phoenix-evals:
- The entire
legacy/subpackage and itsmodels/wrappers MultimodalPrompt,PromptPartContentType, andPromptParttypes — all adapter methods now usePromptLike
arize-phoenix:
phoenix.experiments— the legacy experiment execution module (functions.py,tracing.py,evaluators/)phoenix.experiments.types— usephoenix.client.__generated__.v1.DatasetExampleinstead
phoenix-client experiments module (phoenix.client.experiments) is the replacement and has no dependency on arize-phoenix-evals.
Breaking Change: GraphQL Forward Pagination Requires first
April 7, 2026
Breaking change in arize-phoenix 14.0.0
Three GraphQL connection fields now require an explicit first argument and no longer accept backward pagination (last/before):
| Type | Field | Max first |
|---|---|---|
Project | spans | 1000 |
Trace | spans | 1000 |
ProjectSession | traces | 1000 |
first will fail with "first" is required. Queries that pass first greater than 1000 will fail with "first" must be less than or equal to 1000. Backward pagination with last/before is no longer supported on these fields.
This change protects the server from unbounded queries that could cause excessive memory usage and slow response times.
New: Resume Interrupted SDK Experiments
April 7, 2026 New in arize-phoenix 14.0.0 SDK experiments still run in the caller’s Python process. Phoenix v14 adds dedicated resume APIs so you can continue interrupted experiments without starting over from scratch. Additional capabilities:- Resume API — use
resume_experiment(experiment_id=..., task=...)to re-run only missing or failed task runs. - Async resume API — use
async_resume_experiment(...)for async tasks. - Evaluator support — pass
evaluatorstoresume_experimentto run or re-run evaluations on completed task runs after resuming.
run_experiment call signature is unchanged. See Resume Interrupted Experiments for full documentation.
