NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist
Build fast native Android and iOS applications with PHP and PAM.
Last release today
07 Oct 2026
Ships on a steady schedule
a new release about every 1 weeks
Nearly every release is documented
notes for 58 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
2 months old
286 releases · first in 2026
One column per month.
Add production plugin manifests for typed IDL fingerprints, Swift Package dependencies, Apple frameworks, purpose strings, app entitlements, Info.plis
NFCReaderUsageDescription key in validated plugin metadata.Add Laravel-inspired named route stacks, tabs, screens and modals. Components navigate through their nearest application scope without receiving a Nav
Navigator, and class-based screens hydrate typed constructor parameters.AsyncResource and
Suspense APIs; add deterministic bounded numeric PNW1 worklet bytecode.Clear process-local linking, incoming-share, and push subscriptions during runtime shutdown so hot reload can rebuild an app without duplicate-listene
Make Android activity and transparent full-screen modal windows share one explicit edge-to-edge contract, including stable system-bar/display-cutout i
Complete the 17-block native navigation parity program: route identity, layered options, typed actions and bubbling, recursive state, auth guards, lin
Introduce Navigation Core 2 with typed actions, interceptable lifecycle events, recursive navigation state, exact-route preloading, dynamic options, c
Establish one explicit Android edge-to-edge window contract before mounting the PAM host, avoiding OEM-dependent decor fitting on Samsung devices.
SafeAreaView and early DeviceInfo
queries, preventing transient zero bottom insets during cold start.Router::restoreState(false) for applications that require a
deterministic initial route without deleting persisted domain state or
briefly mounting a historical navigation stack.Resolve Android safe areas from stable system-bar and display-cutout insets, including transient gesture/button navigation bars and early runtime devi
GestureDetector for pan, pinch and
rotation. High-refresh-rate media viewers can now follow the display cadence
without dispatching a PHP event or committing a render tree on every frame.on:change handlers with bind:value updates so input
masks and validators observe the freshly bound value instead of being
silently replaced by the model callback.Added a public, package-restricted Android background-push broadcast contract to the plugin API. Plugins can now handle FCM data-only messages while t
dev.pam.nativeapp.action.PUSH_RECEIVED.Add an explicit pure-function allowlist to restricted template expressions for trim, ltrim, rtrim, byte/multibyte length, substring, and casing helper
trim, ltrim, rtrim, byte/multibyte length, substring, and casing
helpers.eval, while preserving public component-method calls.Resolve safe-area padding against the system-bar space already consumed by Android's decor-fitted content frame. SafeAreaView no longer applies the st
SafeAreaView no longer applies the
status or navigation inset twice on Android versions and OEM windows that do
not run edge-to-edge.Snap Android layout edges in the absolute physical-pixel grid, deriving each rendered extent from its rounded start and end edges instead of rounding
Measure intrinsic text with the actual packaged TTF/OTF face selected by @font-face, eliminating clipped labels and font-specific centering drift.
@font-face, eliminating clipped labels and font-specific centering drift.Calibrate intrinsic text widths against Android sans-serif glyph advances instead of reserving broad per-run safety space.
Preserve inherited CSS typography across compiled component boundaries through an internal style context, while keeping those values out of typed cons
color, font, line-height, alignment, letter spacing, or text case..pam.php component with regression tests.Add PHP-compatible, right-associative ?? null coalescing to restricted PAM template expressions, including safe missing and nested array/property path
?? null coalescing to restricted PAM
template expressions, including safe missing and nested array/property paths.eval.Accept Expo Image's familiar cachePolicy="memory-disk" and camel-case memoryDisk spellings as aliases for PAM's native memory-plus-disk force-cache po
cachePolicy="memory-disk" and camel-case
memoryDisk spellings as aliases for PAM's native memory-plus-disk
force-cache policy on Image and ImageBackground.Accept keyboardType="default" and the familiar React Native keyboard names (email-address, number-pad, numeric, phone-pad, decimal-pad, and text-keybo
keyboardType="default" and the familiar React Native keyboard names
(email-address, number-pad, numeric, phone-pad, decimal-pad, and
text-keyboard variants) as aliases for PAM's typed native keyboard modes.Accept the standard CSS text-align: left and text-align: right values as aliases for PAM's direction-aware start and end alignment. Existing templates
text-align: left and text-align: right values as
aliases for PAM's direction-aware start and end alignment. Existing
templates keep their behavior, while web-style component CSS no longer
fails during mount.Position absolute flex children with automatic insets from their CSS static position. align-items/align-self and justify-content now center or trail b
align-items/align-self and justify-content now center or
trail badges, tab indicators, logo layers, and other absolute adornments
without app-specific offsets.Add safe PHP . string concatenation to template expressions with PHP 8 arithmetic precedence, while preserving PAM's $object.property shorthand. Only
. string concatenation to template expressions with PHP 8
arithmetic precedence, while preserving PAM's $object.property shorthand.
Only scalar, null, and Stringable operands are accepted; arrays and other
unsafe coercions fail during rendering.Resolve Android StatusBar from the active retained navigation route instead of letting a newer hidden route override the visible screen. Push, pop, re
StatusBar from the active retained navigation route instead
of letting a newer hidden route override the visible screen. Push, pop,
replace, restored routes, and cancelled back gestures now update system UI
from the actual route target.Align conservative intrinsic text frames from the relevant flex axis: align-items/align-self in columns and justify-content in rows. Centered text-and
align-items/align-self in columns and justify-content in rows. Centered
text-and-icon controls now stay optically centered without changing the
authored alignment of explicitly sized or growing text.Add typed, zero-selector-runtime CSS box-shadow with color, x/y offset, blur, spread, and none across Android and iOS.
box-shadow with color, x/y offset,
blur, spread, and none across Android and iOS.text-align on iOS with the same start/center/end behavior as
Android.backgroundColor, barStyle, animated, and translucent on
template StatusBar, matching familiar mobile authoring without silently
leaving the platform defaults active.Resolve every asset://… image and packaged font relative to the PAM project bundle on Android and iOS, without exposing the internal pam/ namespace to
asset://… image and packaged font relative to the PAM
project bundle on Android and iOS, without exposing the internal pam/
namespace to application code.Compile CSS colors with web semantics: transparent, the complete named color set, #RGB, #RGBA, #RRGGBB, #RRGGBBAA, modern/legacy rgb()/rgba(), and hsl
transparent, the complete named
color set, #RGB, #RGBA, #RRGGBB, #RRGGBBAA, modern/legacy
rgb()/rgba(), and hsl()/hsla().@font-face.var(--token, fallback) with
circular-reference and expansion-depth protection.rem, logical inline/block box shorthands, CSS transform,
object-fit, visibility, box-sizing: border-box, percentage opacity,
ratio syntax, font stacks, border: none, background: none, and common
text-decoration syntax to the zero-runtime scoped CSS compiler.Make the Android renderer artifact self-contained for Firebase-enabled apps by shipping the root Google Services plugin declaration, Firebase source s
Retry transient Android image-load failures while their native view remains attached, preventing the first visible VirtualizedList cell from staying b
VirtualizedList cell from staying
blank until it is recycled.Include the versioned native engine C header in the Android renderer archive, keeping bridge sources, static engines and their ABI contract self-conta
Recover automatically from a rejected incremental render patch by preserving PHP component identity and immediately resynchronizing the native rendere
Allow a false conditional component root to render an inert invisible native placeholder that consumes no parent flow space, while continuing to rejec
Add safe numeric +, -, *, /, and integer % operators to template expressions with conventional precedence, grouping, numeric type checks, and division
+, -, *, /, and integer % operators to template
expressions with conventional precedence, grouping, numeric type checks, and
division-by-zero protection.Compile the complete one-to-four-value CSS border-radius shorthand into native per-corner radii while preserving the compact uniform-radius path.
border-radius shorthand into
native per-corner radii while preserving the compact uniform-radius path.left, top, right, and bottom offsets to the protocol
and resolve them against the retained inner containing block in Rust.Add native flex-wrap row and column layout to the retained Rust engine, including intrinsic cross-axis measurement for content-sized containers.
flex-wrap row and column layout to the retained Rust engine,
including intrinsic cross-axis measurement for content-sized containers.inset, translation-x, and translation-y into native layout
and compositor properties.Compile native-safe border-top, border-right, border-bottom, and border-left CSS shorthands into directional widths and the shared native border color
border-top, border-right, border-bottom, and
border-left CSS shorthands into directional widths and the shared native
border color, matching the existing border shorthand.Add a native DrawingCanvas on Android and iOS with coalesced freehand input, brush/eraser modes and tokenized undo/clear commands. Completed strokes c
DrawingCanvas on Android and iOS with coalesced freehand
input, brush/eraser modes and tokenized undo/clear commands. Completed
strokes cross the PHP boundary only once and stay normalized to the displayed
image content.maxWidth, maxHeight and outputQuality in the iOS image editor,
matching the Android contract introduced in 0.5.59.Add scrollTargetOffset to tokenized scrollRequest operations so an application can restore an observed logical scroll offset without binding a continu
scrollTargetOffset to tokenized scrollRequest operations so an
application can restore an observed logical scroll offset without binding a
continuously controlled contentOffset.scrollTargetTestId priority and end-scroll
behavior while applying explicit offset requests on Android and iOS.Add bounded maxWidth, maxHeight, and outputQuality controls to the native image editor without breaking existing calls.
maxWidth, maxHeight, and outputQuality controls to the
native image editor without breaking existing calls.Use the context-aware MediaRecorder constructor on Android 12 and newer while retaining the API 26–30 fallback.
MediaRecorder constructor on Android 12 and newer
while retaining the API 26–30 fallback.Add a direct Android MediaLibrary API for paginated image/video metadata, album summaries and Android 14 selected-photo access, with all MediaStore wo
MediaLibrary API for paginated image/video metadata,
album summaries and Android 14 selected-photo access, with all MediaStore
work isolated from the UI thread.Files::importUri() so custom galleries copy only the asset the user
actually selects into PAM's bounded private sandbox.MediaAsset, MediaAssetPage and MediaAlbum values without
moving thumbnail bytes through the PHP bridge.PermissionKind::Photos on Android to report granted, limited,
denied and blocked access across the platform's versioned media permission
model.Synchronize Android google-services.json through an incremental Gradle task with exact file inputs and outputs, keeping Firebase builds correct after
google-services.json through an incremental Gradle
task with exact file inputs and outputs, keeping Firebase builds correct
after mobile prepare even when Gradle reuses its configuration cache.Compile text-decoration from PAM styles into the existing typed native text-decoration contract, including underline and line-through variants.
text-decoration from PAM styles into the existing typed native
text-decoration contract, including underline and line-through variants.Apply the conventional src/app.css stylesheet to every PAM component at compile time, with local scoped rules winning the cascade and no runtime CSS p
src/app.css stylesheet to every PAM component at
compile time, with local scoped rules winning the cascade and no runtime CSS
parser or selector pass..pam/google-services.json or google-services.json is present, without
adding Firebase bytecode to applications that do not configure it.Expose top, right, bottom, and left safe-area insets through DeviceInfo in logical points on Android and iOS so custom native chrome can match each de
DeviceInfo in
logical points on Android and iOS so custom native chrome can match each
device without fixed status-bar or navigation-bar guesses.Add compile-time relative @import support to scoped PAM styles so shared fonts, tokens, tag defaults, and semantic classes can live in ordinary CSS fi
@import support to scoped PAM styles so shared
fonts, tokens, tag defaults, and semantic classes can live in ordinary CSS
files without adding a runtime CSS engine.@import statements in pam-native-format.Render Android video through a retained TextureView and native MediaPlayer, keeping playback inside ordinary view clipping, transforms, transitions, a
TextureView and native
MediaPlayer, keeping playback inside ordinary view clipping, transforms,
transitions, and z-order instead of a detached SurfaceView layer.Clip Android virtualized-list drawing directly at the native canvas viewport, including translated or animated rich descendants that platform child cl
@font-face aliases for packaged TTF and OTF assets,
with numeric weight and italic variant selection through familiar CSS
font-family, font-weight, and font-style declarations.Keep Android virtual-list viewports and recycled holders as hard native paint boundaries so media cannot draw over headers, adjacent rows, or tab bars
overflow behavior inside each recycled cell.Let rich VirtualizedList and VirtualGrid cells keep their authored heights, or widths for horizontal lists, while rowHeight remains the fallback and p
VirtualizedList and VirtualGrid cells keep their authored
heights, or widths for horizontal lists, while rowHeight remains the
fallback and prefetch estimate.RecyclerView holder from the Rust-computed cell frame and
patch changed extents without remounting stable cells.RecyclerView.LayoutParams ownership, avoiding a
stale frame on older API levels.estimatedRowHeight PHP and template alias while preserving
existing rowHeight call sites.Clip Android container descendants to the authored rounded border path when overflow: hidden is active, including View, Row, Column, Pressable, and Im
overflow: hidden is active, including View, Row, Column,
Pressable, and ImageBackground.masksToBounds on iOS.Give declarative ScrollView a native Row or Column content container, allowing one or many direct children without stretching a compact item to the vi
ScrollView a native Row or Column content container,
allowing one or many direct children without stretching a compact item to
the viewport or failing when a conditional loop renders multiple items.Scroll source-compatible with its explicit single-content
contract.Make p-if, p-else-if, p-else, and p-for the canonical PAM template directives while retaining deprecated v-* aliases for migration.
<style scoped> blocks to .pam.php components with native
tag/class selectors, component-local custom properties, deterministic
cascade, dynamic classes, percentages, and box/border shorthands.p-if, p-else-if, p-else, and p-for the canonical PAM template
directives while retaining deprecated v-* aliases for migration.pam-native-format Composer binary to indent templates,
normalize scoped styles, and migrate legacy directives across files or
directories.lineHeight exactly on retained Android text views.w-full to resolve to 100% of the containing block and add h-full.contain images to Android FIT_CENTER, matching PAM's authored-frame
contract by scaling small and large bitmaps proportionally to fit.Cancel stale native long-poll waiters before a hot reload and let the new PHP runtime immediately re-arm deep-link, incoming-share, and push listeners
Convert logical-point text letter spacing to Android em units using the authored font size, matching the shared PAM and React Native-style contract.
em units using the
authored font size, matching the shared PAM and React Native-style contract.Load project-packaged TTF and OTF families through fontFamily="asset://…" on Android, with guarded asset paths and a per-renderer native typeface cach
fontFamily="asset://…"
on Android, with guarded asset paths and a per-renderer native typeface cache.Prune obsolete content-addressed Android application releases outside the startup path while retaining the active bundle and one previous release for
Nothing published for this version
Keep the iOS image-editor wire decoding contract local to its module so the release renderer compiles independently from other module extensions.
Add a typed, asynchronous native image editor with crop, rotation, horizontal flip, filters, tonal adjustments, text overlays, and compact stickers.
Apply the shared ImageFit contract to native video players on Android and iOS, including aspect-fill cover, aspect-fit contain, and stretch.
ImageFit contract to native video players on Android and
iOS, including aspect-fill cover, aspect-fit contain, and stretch.MediaPlayer::fit() in the PHP SDK and keep its reset behavior
consistent with native images.Your coding agent can read these notes before it upgrades. Set up the MCP server →