Internal APIs
Low-level primitives exposed for building decorators and composables — signals, effects, resource, type guards, and RootComponent.
Internal APIs
Two sub-paths expose the framework's low-level primitives for use inside decorator and composable implementations:
import { signal, effect, history, RootComponent } from '@praxisjs/core/internal'
import { isSignal, isComponent, flattenChildren } from '@praxisjs/shared/internal'
import type { ComponentConstructor, BaseReactive } from '@praxisjs/shared/internal'Not for application code
These paths are not part of the public API. Use them only inside packages/foundation/** or packages/features/** when implementing framework primitives. In application code, import from @praxisjs/core and @praxisjs/decorators.
What's in each path
@praxisjs/core/internal
The reactive engine — every primitive the framework is built on:
signal,computed,effect,batch,peek,untrack— the core reactive graphpersistedSignal,syncedSignal— signals with localStorage and BroadcastChannel persistencewhen,until,debounced,history— higher-level reactive utilitiesresource,createResource— reactive async data fetchingRootComponent— the abstract base class all components extend
@praxisjs/shared/internal
Runtime introspection and framework-level types:
isSignal,isComputed,isReactive,isComponent— brand-checked type guardsflattenChildren— recursive child-array flattening used by the rendererBaseReactive,ComponentConstructor,ComponentInstance,ReactiveChildren,Cleanup— TypeScript interfaces shared across packages
When to use internal paths
| You need | Import from |
|---|---|
| Create a signal inside a decorator | @praxisjs/core/internal |
| Run an effect tied to a component's lifecycle | @praxisjs/core/internal |
| Fetch reactive async data inside a composable | @praxisjs/core/internal |
Access RootComponent to type a base class | @praxisjs/core/internal |
| Check if a value is a signal at runtime | @praxisjs/shared/internal |
| Accept a component constructor as a parameter | @praxisjs/shared/internal |
| Flatten JSX children before mounting | @praxisjs/shared/internal |