Coupling
The onboarding flow assumes Extra Chill's user shape — user_is_artist and user_is_professional boolean flags, hardcoded copy, EC-specific username-pick UX.
Affected files:
src/auth/context.tsx — completeOnboarding(username, userIsArtist, userIsProfessional) signature
app/onboarding.tsx — UI for the flags + EC-branded copy
This is genuinely platform-specific data. The flags map to community.extrachill.com user roles. They have no meaning on a generic WordPress install.
Target shape (abilities-first)
The shell exposes onboarding as a slot + ability name, not a fixed flow:
- Generic onboarding scaffold in the shell — handles the route, the auth check, the "must complete onboarding before app entry" gate, and invokes a configured ability.
- Consumer-supplied onboarding screen — the actual UI is the consumer's responsibility. The screen calls
client.execute(config.onboarding.ability, args) with whatever shape that ability expects.
// extrachill.config.ts (consumer side)
export const config: WPNativeConfig = {
onboarding: {
enabled: true,
ability: 'extrachill/user.complete-onboarding',
screen: ExtraChillOnboardingScreen,
},
...
};
ExtraChillOnboardingScreen lives in this repo as a normal RN component. It's free to ask for userIsArtist / userIsProfessional / whatever, then call the configured ability with that payload. The shell never sees those EC-specific fields.
The corresponding server-side ability extrachill/user.complete-onboarding is registered by an EC plugin (probably extrachill-users). The Abilities API auto-exposes it via REST, MCP, chat, CLI — and now mobile.
Acceptance
Related
Part of the wp-native extraction effort. See chubes4/wp-native ROADMAP M5/M7.
Coupling
The onboarding flow assumes Extra Chill's user shape —
user_is_artistanduser_is_professionalboolean flags, hardcoded copy, EC-specific username-pick UX.Affected files:
src/auth/context.tsx—completeOnboarding(username, userIsArtist, userIsProfessional)signatureapp/onboarding.tsx— UI for the flags + EC-branded copyThis is genuinely platform-specific data. The flags map to community.extrachill.com user roles. They have no meaning on a generic WordPress install.
Target shape (abilities-first)
The shell exposes onboarding as a slot + ability name, not a fixed flow:
client.execute(config.onboarding.ability, args)with whatever shape that ability expects.ExtraChillOnboardingScreenlives in this repo as a normal RN component. It's free to ask foruserIsArtist/userIsProfessional/ whatever, then call the configured ability with that payload. The shell never sees those EC-specific fields.The corresponding server-side ability
extrachill/user.complete-onboardingis registered by an EC plugin (probablyextrachill-users). The Abilities API auto-exposes it via REST, MCP, chat, CLI — and now mobile.Acceptance
user_is_artist/user_is_professionalreferencesclient.execute()with the configured ability nameRelated
Part of the wp-native extraction effort. See chubes4/wp-native ROADMAP M5/M7.