docs/install/reference/breaking-changes.mdx
Log fields are now grouped under the entity they belong to, so each thing has one name. A flow run id is flowRun.id (it used to appear as runId, flowRunId, or a bare id), and other ids follow the same shape (flow.id, project.id, job.id, …). Errors are logged under error. This only changes how logs look — nothing about the API, database, or flows changes.
"Sign in with Google" can no longer be enabled from the SSO page in the admin panel — that setting has been removed. It is now controlled solely by the AP_GOOGLE_CLIENT_ID and AP_GOOGLE_CLIENT_SECRET environment variables. The button only appears when both are set (and the platform's Google auth toggle is enabled).
Each piece is now built into a single self-contained bundle — its own code, the Activepieces framework, and its third-party dependencies are inlined into one artifact, so the engine provisions a piece by downloading one file instead of installing a dependency tree at runtime. As part of this, the shared libraries (@activepieces/shared, @activepieces/pieces-framework, @activepieces/pieces-common, @activepieces/core-*) are no longer published to npm, and pieces import only from @activepieces/pieces-framework (which re-exports the foundation symbols that used to come from @activepieces/shared). Built-in pieces are unaffected — this only matters for custom pieces.
AP_PRE_WARM_CACHE removedThe AP_PRE_WARM_CACHE environment variable no longer exists. It used to make a worker install pieces into its cache on startup. The worker is now its own sandbox and fills its cache lazily on first use, so the flag has no effect and setting it does nothing. Cache warmth now comes from running long-lived worker replicas rather than an up-front install step.
The up-front install is no longer needed because piece installs are now fast: each piece is a self-contained bundle fetched as a single file. If you have S3 enabled, official piece bundles are cached to your S3 bucket on first use and served from there via signed links — so when your bucket is co-located in the same region as your workers, subsequent installs are a low-latency download from a nearby object store instead of a registry round-trip.
AP_GOOGLE_CLIENT_ID and AP_GOOGLE_CLIENT_SECRET environment variables.runId → flowRun.id and err → error.npm run cli -- pieces migrate <piece-name> (or --all), or follow the migration guide. Pieces that still import @activepieces/shared or depend on the now-unpublished libraries will fail to build.AP_PRE_WARM_CACHE. Remove it from your environment — it is no longer read. Nothing else is required.Logging moved from pino + OpenTelemetry to evlog. Logs are now one rich event per request/job instead of many small lines, so the JSON shape changed.
Traces and metrics are no longer exported. OpenTelemetry tracing produced a huge volume of low-value spans — far more data (and cost) than it was worth — so we dropped it in favour of these wide events, which carry the same context in one place. AP_OTEL_ENABLED=true now sends logs only, over OTLP.
New optional env vars: AP_LOG_SAMPLE_RATE_INFO (percent of info logs to keep, default 100) and AP_LOG_KEEP_SLOW_MS (always keep requests slower than this, default 2000). Drain settings (AP_AXIOM_*, AP_BETTERSTACK_*, AP_LOKI_*, AP_HYPERDX_TOKEN) are unchanged.
Action: only if you ingest Activepieces telemetry — update log dashboards to the new shape, and move any trace- or metric-based monitoring to logs.
Previously if you had a step called step_1 you would had to reference it "step_1['the_property_you_want']" but now you must reference it as "step_1['output']['the_property_you_want']", there is already a migration that will take care of this for you, but if you must abide by this new syntax if you are writing/editing step references manually not through the builder. You can now also reference the step error via "step_1['error']", these changes come with the error handling feature. Also step names there were shown on hover in the builder are now removed, you can right click the step and copy its reference instead.
Previously if your worker was on a different version of your app server, the worker would work fine most of the time, but because some changes we do will require both of them to be on the same version we added this safeguard.
This is an important behavior change in how flow run logs are stored and capped, but no action is required — the existing default (AP_MAX_FLOW_RUN_LOG_SIZE_MB=50) is preserved.
AP_FLOW_RUN_LOG_SLICE_THRESHOLD_KB env var (default 32).(truncated, original size <N>) placeholder in the log via the new AP_FLOW_RUN_LOG_INPUT_TRUNCATE_THRESHOLD_KB env var (default 2). The step still receives the full value at runtime.AP_MAX_FLOW_RUN_LOG_SIZE_MB now terminate with the new LOG_SIZE_EXCEEDED status instead of silently trimming inputs. Offloaded outputs still count their original size against the cap.AP_ALLOWED_EMBED_ORIGINS for setting pre-allowed origins, and a new endpoint for adding these origins — check docs.AP_GOOGLE_CLIENT_ID and AP_GOOGLE_CLIENT_SECRET environment variables. The button only appears when both are set (and the platform's Google auth toggle is enabled).AP_GOOGLE_CLIENT_ID and AP_GOOGLE_CLIENT_SECRET environment variables.When creating a project now, the platform owner email doesn't automatically get added to the alert recievers list of the project, you can manually assign it in the UI/API, when creating a project.
~1.2.0, ^1.2.0). All piece steps now use exact versions (e.g. 1.2.0).LOCK_AND_PUBLISH operation no longer resolves piece versions at publish time — steps run with the exact version stored in the flow.ADD_ACTION, UPDATE_ACTION, and UPDATE_TRIGGER now strip wildcard prefixes (~, ^) from pieceVersion before saving. If you were relying on wildcard versions to auto-resolve on publish, your steps will now be pinned to the base version (e.g. ~1.2.0 becomes 1.2.0).LOCK_AND_PUBLISH no longer modifies pieceVersion on any step. The version in the draft is the version that will run.GET /v1/pieces/:name/versions is available to list all versions of a piece, useful for building custom version selection.AP_MAX_CONCURRENT_JOBS_PER_PROJECT → AP_DEFAULT_CONCURRENT_JOBS_LIMIT. Default drops from 100 to 5.AP_SSRF_ALLOW_LIST.~ or ^), switch to exact versions; wildcards are silently stripped. If your publish flow relied on LOCK_AND_PUBLISH resolving wildcards, set the exact version on each step before publishing. Use GET /v1/pieces/:name/versions to list available versions.AP_MAX_CONCURRENT_JOBS_PER_PROJECT to AP_DEFAULT_CONCURRENT_JOBS_LIMIT. To keep the old cap, set AP_DEFAULT_CONCURRENT_JOBS_LIMIT=100.AP_SSRF_ALLOW_LIST (comma-separated IPs or CIDRs, e.g. 10.0.5.12,192.168.10.0/24) before upgrading.AP_MAX_WEBHOOK_PAYLOAD_SIZE_MB has been introduced to control the maximum allowed webhook payload size. The default is 25 MB. Webhooks exceeding this limit will be rejected with a 413 Request Too Long response./api prefix natively. If you were using /v1/health as a health check endpoint (e.g. in Kubernetes probes or load balancer checks), update it to /api/v1/health.UPDATE_SAMPLE_DATA_INFO flow operation has been introduced to handle sample data updates independently.UPDATE_ACTION and UPDATE_TRIGGER no longer accept or apply changes to sampleData in step settings. Any sampleData fields sent in these requests will be ignored and the existing sample data will be preserved.lastUpdatedDate field has been added to all actions and triggers, tracked automatically by the server. It is not accepted in UPDATE_ACTION or UPDATE_TRIGGER requests.25 MB default, set AP_MAX_WEBHOOK_PAYLOAD_SIZE_MB to your desired limit.UPDATE_ACTION or UPDATE_TRIGGER, switch to the new UPDATE_SAMPLE_DATA_INFO operation instead./v1/health, update them to /api/v1/health.Operator role can now edit all projects.usageCount field has been removed from both the template API responses and the database—it's no longer available./flow-templates API endpoints have been removed and replaced by /templates.AP_MAX_FILE_SIZE_MB no longer controls flow run logs. Use AP_MAX_FLOW_RUN_LOG_SIZE_MB instead./templates page.AP_MAX_FILE_SIZE_MB, be sure to also set AP_MAX_FLOW_RUN_LOG_SIZE_MB accordingly.AP_LOAD_TRANSLATIONS_FOR_DEV_PIECES=true to enable.AP_LOAD_TRANSLATIONS_FOR_DEV_PIECES=true in your environment variables.AP_DB_TYPE=SQLITE3 is now deprecated and replaced with AP_DB_TYPE=PGLITE.aiCredits feature per project has been removed. In the next version, it will be replaced by integration with the AI Gateway.AP_DB_TYPE=SQLITE3: Update your configuration to use AP_DB_TYPE=PGLITE instead.AP_EXECUTION_MODE mode SANDBOXED is now deprecated and replaced with SANDBOX_PROCESSAP_EXECUTION_MODE mode SANDBOXED, you should replace it with SANDBOX_PROCESSAP_QUEUE_MODE is now deprecated and replaced with AP_REDIS_TYPEAP_REDIS_TYPE to SENTINELAP_QUEUE_MODE, you should replace it with AP_REDIS_TYPEAP_REDIS_TYPE to SENTINELAP_FLOW_WORKER_CONCURRENCY and AP_SCHEDULED_WORKER_CONCURRENCY are now deprecated all jobs have single queue and replaced with AP_WORKER_CONCURRENCYAP_FLOW_WORKER_CONCURRENCY or AP_SCHEDULED_WORKER_CONCURRENCY, you should replace them with AP_WORKER_CONCURRENCYembedding.dashboard.hideSidebar used to hide the navbar above the flows table in the dashboard now it relies on embedding.dashboard.hideFlowsPageNavbarAP_FLOW_WORKER_CONCURRENCY and AP_SCHEDULED_WORKER_CONCURRENCY environment variables. These values are now retrieved from the app server.AP_CONTAINER_TYPE is set to WORKER on the worker machine, and AP_SCHEDULED_WORKER_CONCURRENCY or AP_FLOW_WORKER_CONCURRENCY are set to zero on the app server, workers will stop processing the queues. To fix this, check the Separate Worker from App documentation and set the AP_CONTAINER_TYPE to fetch the necessary values from the app server. If no container type is set on the worker machine, this is not a breaking change.AppConnection entity.AppConnection entity.name attribute to externalId and add the displayName attribute.AP_MAX_FILE_SIZE_MB.AP_MAX_FILE_SIZE_MB to a higher value, and make sure the storage system (database/S3) has enough capacity for the files.AP_SANDBOX_RUN_TIME_SECONDS is now deprecated and replaced with AP_FLOW_TIMEOUT_SECONDSAP_CODE_SANDBOX_TYPE is now deprecated and replaced with new mode in AP_EXECUTION_MODEAP_CODE_SANDBOX_TYPE to V8_ISOLATE, you should switch to AP_EXECUTION_MODE to SANDBOX_CODE_ONLYAP_SANDBOX_RUN_TIME_SECONDS to set the sandbox run time limit, you should switch to AP_FLOW_TIMEOUT_SECONDSEXTERNAL_CUSTOMER role has been deprecated and replaced with the OPERATOR role. Please check the permissions page for more details.SIGN_UP_ENABLED environment variable, which allowed multiple users to sign up for different platforms/projects, has been removed. It has been replaced with inviting users to the same platform/project. All old users should continue to work normally.If you use the embedding SDK or the create project member API with the EXTERNAL_CUSTOMER role, you should start using the OPERATOR role instead.
Multiple platforms/projects are no longer supported in the community edition. Technically, everything is still there, but you have to hack using the API as the authentication system has now changed. If you have already created the users/platforms, they should continue to work, and no action is required.