Upgrade guides for @ciscode/ui-authentication-kit.
Note: Version 2.x is not yet released. This section will be updated when available.
The following changes are planned for v2.0.0:
// v1.x
<RequirePermissions
fallbackpermessions={['admin.view']}
anyPermessions={['read.posts']}
/>
// v2.x (planned)
<RequirePermissions
allPermissions={['admin.view']} // ← renamed
anyPermissions={['read.posts']} // ← renamed
/>// v1.x
<AuthProvider
config={{
apiUrl: 'https://api.example.com',
loginPath: '/auth/login',
registerPath: '/auth/register',
// ...
}}
/>
// v2.x (planned)
<AuthProvider
apiUrl="https://api.example.com"
endpoints={{
login: '/auth/login',
register: '/auth/register',
// ...
}}
/>// v1.x
const { user, isAuthenticated, booting, login, logout } = useAuthState();
// v2.x (planned)
const { user, isAuthenticated, isLoading, login, logout } = useAuthState();
// ↑ `booting` renamed to `isLoading` for consistency# v0.x
npm install @ciscode/auth-ui-kit
# v1.x
npm install @ciscode/ui-authentication-kit// v0.x
import { AuthProvider } from '@ciscode/auth-ui-kit';
// v1.x
import { AuthProvider } from '@ciscode/ui-authentication-kit';Before (v0.x):
<AuthProvider
apiUrl="https://api.example.com"
loginEndpoint="/auth/login"
logoutEndpoint="/auth/logout"
>
<App />
</AuthProvider>After (v1.x):
<AuthProvider
config={{
apiUrl: 'https://api.example.com',
loginPath: '/auth/login',
registerPath: '/auth/register',
profilePath: '/auth/profile',
logoutPath: '/auth/logout',
redirectAfterLogin: '/dashboard',
redirectAfterLogout: '/',
}}
>
<App />
</AuthProvider>Migration:
// Create config object
const authConfig = {
apiUrl: process.env.REACT_APP_API_URL,
loginPath: '/auth/login',
registerPath: '/auth/register',
profilePath: '/auth/profile',
logoutPath: '/auth/logout',
redirectAfterLogin: '/dashboard',
redirectAfterLogout: '/',
};
<AuthProvider config={authConfig}>
<App />
</AuthProvider>;| v0.x | v1.x |
|---|---|
useAuth() |
useAuthState() |
usePermission(p) |
useCan(p) |
useRole(r) |
useHasRole(r) |
Before (v0.x):
const { user, authenticated } = useAuth();
const canEdit = usePermission('users.edit');
const isAdmin = useRole('admin');After (v1.x):
const { user, isAuthenticated } = useAuthState();
const canEdit = useCan('users.edit');
const isAdmin = useHasRole('admin');Before (v0.x):
<RequirePermissions permissions={['admin.view']} roles={['super-admin']} />After (v1.x):
<RequirePermissions fallbackpermessions={['admin.view']} fallbackRoles={['super-admin']} />Before (v0.x):
import { PermissionProvider } from '@ciscode/auth-ui-kit';
<PermissionProvider>
<App />
</PermissionProvider>;After (v1.x):
import { RbacProvider } from '@ciscode/ui-authentication-kit';
<RbacProvider>
<App />
</RbacProvider>;Before (v0.x):
import { Profile } from '@ciscode/auth-ui-kit';
<Profile onUpdate={handleUpdate} />;After (v1.x):
import { ProfilePage } from '@ciscode/ui-authentication-kit';
<ProfilePage onUpdate={handleUpdate} />;# Uninstall old package
npm uninstall @ciscode/auth-ui-kit
# Install new package
npm install @ciscode/ui-authentication-kitUse find-and-replace in your editor:
// Find
@ciscode/auth-ui-kit
// Replace with
@ciscode/ui-authentication-kit// Old (v0.x)
<AuthProvider
apiUrl="https://api.example.com"
loginEndpoint="/auth/login"
logoutEndpoint="/auth/logout"
>
// New (v1.x)
<AuthProvider
config={{
apiUrl: 'https://api.example.com',
loginPath: '/auth/login',
registerPath: '/auth/register',
profilePath: '/auth/profile',
logoutPath: '/auth/logout',
redirectAfterLogin: '/dashboard',
redirectAfterLogout: '/',
}}
># Find and replace in your codebase
# useAuth → useAuthState
sed -i 's/useAuth(/useAuthState(/g' **/*.tsx
# usePermission → useCan
sed -i 's/usePermission(/useCan(/g' **/*.tsx
# useRole → useHasRole
sed -i 's/useRole(/useHasRole(/g' **/*.tsx// Old (v0.x)
const { user, authenticated } = useAuth();
// New (v1.x)
const { user, isAuthenticated } = useAuthState();// Old (v0.x)
<RequirePermissions
permissions={['admin.view']}
roles={['super-admin']}
>
// New (v1.x)
<RequirePermissions
fallbackpermessions={['admin.view']}
fallbackRoles={['super-admin']}
>// Old (v0.x)
import { Profile, PermissionProvider } from '@ciscode/auth-ui-kit';
// New (v1.x)
import { ProfilePage, RbacProvider } from '@ciscode/ui-authentication-kit';Run your test suite and manually test:
npm test
npm run devPackage:
- Renamed package from
@ciscode/auth-ui-kitto@ciscode/ui-authentication-kit
Components:
Profile→ProfilePagePermissionProvider→RbacProviderAuthProvidernow requiresconfigobject prop
Hooks:
useAuth()→useAuthState()usePermission(p)→useCan(p)useRole(r)→useHasRole(r)- Return value
authenticated→isAuthenticated
Props:
RequirePermissions.permissions→fallbackpermessionsRequirePermissions.roles→fallbackRoles
Types:
AuthConfiginterface restructuredUser→UserProfile
Added:
- Google OAuth support
- Session expiration modal
- Module-based permissions
Changed:
- Improved TypeScript types
- Better error handling
Initial release:
- Basic auth components
- RBAC support
- Profile management
The following features are deprecated and will be removed in v2.0:
// DEPRECATED: Old hook names still work but log warnings
useAuth() // Use useAuthState() instead
usePermission(p) // Use useCan(p) instead
useRole(r) // Use useHasRole(r) instead
// DEPRECATED: Old prop names
<RequirePermissions permissions={[]} /> // Use fallbackpermessions
<RequirePermissions roles={[]} /> // Use fallbackRolesTo silence warnings, update to new APIs.
Create a script to automate migration:
#!/bin/bash
# migrate-to-v1.sh
echo "Migrating to @ciscode/ui-authentication-kit v1.x..."
# Update package name in imports
find src -type f -name "*.tsx" -o -name "*.ts" | xargs sed -i 's/@ciscode\/auth-ui-kit/@ciscode\/ui-authentication-kit/g'
# Update hook names
find src -type f -name "*.tsx" -o -name "*.ts" | xargs sed -i 's/useAuth(/useAuthState(/g'
find src -type f -name "*.tsx" -o -name "*.ts" | xargs sed -i 's/usePermission(/useCan(/g'
find src -type f -name "*.tsx" -o -name "*.ts" | xargs sed -i 's/useRole(/useHasRole(/g'
# Update component names
find src -type f -name "*.tsx" | xargs sed -i 's/<Profile/<ProfilePage/g'
find src -type f -name "*.tsx" | xargs sed -i 's/PermissionProvider/RbacProvider/g'
echo "Migration complete! Please review changes and test thoroughly."Use TypeScript to catch issues:
// Create a wrapper for gradual migration
import {
useAuthState as useAuthStateNew,
useCan as useCanNew,
useHasRole as useHasRoleNew,
} from '@ciscode/ui-authentication-kit';
// Provide old names with deprecation warnings
export function useAuth() {
console.warn('useAuth is deprecated. Use useAuthState instead.');
return useAuthStateNew();
}
export function usePermission(permission: string) {
console.warn('usePermission is deprecated. Use useCan instead.');
return useCanNew(permission);
}
export function useRole(role: string) {
console.warn('useRole is deprecated. Use useHasRole instead.');
return useHasRoleNew(role);
}If you encounter issues during migration:
- Check the documentation: API.md, EXAMPLES.md
- Search issues: GitHub Issues
- Ask for help: Open a discussion
Last Updated: January 31, 2026
Version: 1.0.8