Skip to main content
UIKit Component: Event components are built on top of the social.plus SDK, providing ready-to-use event creation and discovery UI with full data management handled automatically.
Explore

Feature Overview

The Event feature in social.plus UIKit v4 enables users to create scheduled events, discover upcoming/past events, manage attendees, and navigate between event-related experiences.

Key Features

Event Creation

Schedule events with rich details
  • Select where to create the event (community/user)
  • Configure details (name, description, date & time)
  • In-person or virtual options
  • Optional cover image

Event Discovery

Explore and manage your events
  • My events feed vs explore events feed
  • Upcoming events page
  • Past events page
  • Community-specific event feed

Attendees & RSVP

Track and manage attendance
  • RSVP (Going/Interested/Not going)
  • Attendees list
  • Navigate to attendee profiles

Platform Support

FeatureiOSAndroidWebFlutterReact Native
Event Creation--
Event Detail & Attendees--
Event discovery--
Event in community profile--

Permission Handling

Spec 6 defines the visibility rules for entry points that trigger event creation:
  1. Global feed: Only users with global permission will see the create event button
    • Check: client.hasPermission(AmityPermission.createEvent)
  2. Community feed: Users with global OR community permission will see the create event button
    • Check: client.hasPermission(AmityPermission.createEvent, communityId)
UIKit applies these permission checks automatically. If you implement your own custom entry points, keep the same permission logic for consistent UX.

Implementation Guide

Event Target Selection Page

Use AmityEventTargetSelectionPage to choose the destination for the event (e.g., community or user).

Customization Options

Config IDTypeDescription
select_event_target_page/*/*PageCustomize page theme
select_event_target_page/*/close_buttonElementCustomize close button image
select_event_target_page/*/titleElementCustomize page title

Code Examples

let page = AmityEventTargetSelectionPage()
let viewController = AmitySwiftUIHostingController(rootView: page)
navigationController?.pushViewController(viewController, animated: true)

Event Setup Page

Use AmityEventSetupPage to create or edit an event.Public API alignment:
enum AmityEventSetupPageMode {
  case create(targetId, targetName)
  case edit(AmityEvent)
}

AmityEventSetupPage(mode: AmityEventSetupPageMode)

Customization Options

Config IDTypeDescription
event_setup_page/*/*PageCustomize page theme
event_setup_page/*/titleElementCustomize title
event_setup_page/*/camera_buttonElementCustomize camera label/icon
event_setup_page/*/image_buttonElementCustomize photo label/icon
event_setup_page/*/event_name_titleElementCustomize “Event name” label
event_setup_page/*/event_details_titleElementCustomize “Event details” label
event_setup_page/*/event_date_time_titleElementCustomize “Date and time” label
event_setup_page/*/event_location_titleElementCustomize “Location” label

Code Examples

// Create
let page = AmityEventSetupPage(mode: .create("<targetId>", "<targetName>"))
let viewController = AmitySwiftUIHostingController(rootView: page)
navigationController?.pushViewController(viewController, animated: true)

// Edit
// When you already have an AmityEvent object
let editPage = AmityEventSetupPage(mode: .edit(event))

Customization

Spec 6 provides these customization keys for event entry points and pages.
{
  "*/community_sidebar/events_sidebar_menu_item": {
    "text": "Events",
    "icon": ""
  },
  "social_home_page/*/events_button": {
    "text": "Events"
  },
  "social_home_page/create_post_menu/create_event_button": {
    "text": "Event",
    "image": ""
  },
  "community_profile_page/*/create_event_button": {
    "text": "Event"
  },
  "select_event_target_page/*/title": {
    "text": "Create event"
  },
  "event_setup_page/*/title": {
    "text": "Create event"
  },
  "upcoming_events_page/*/*": {},
  "past_events_page/*/*": {}
}