Originally published on xroot.dev.

Solana's transaction size limit — 1,232 bytes, unchanged since genesis — is being raised to 4,096 bytes. The catch: the extra room only exists inside a brand-new wire format, and the day its feature gate activates, code that merely reads transactions can start failing.

The upgrade ships as two proposals: SIMD-0296 raises the size ceiling, and SIMD-0385 defines the v1 transaction format that carries it. Legacy and v0 transactions keep working exactly as they do today — if you never touch v1, nothing about sending changes for you. But reading is a different story: one v1 transaction inside a block is enough to make an un-upgraded getBlock call fail outright, and indexers that scan ComputeBudget instructions will silently record zeros for every v1 transaction they see.

Here is what actually changes, why it changes, the three ways it breaks existing apps — loudly, silently, and sneakily — and the exact fix for each. Everything below is verified against the proposal texts, then exercised end-to-end against a local Agave 4.2 validator rather than taken from the headlines.

Why 1,232 Bytes Existed, and Why It Can Finally Move