SlideShare a Scribd company logo
Forge UI
A new way to customize the Atlassian user experience
SIMON KUBICA PRODUCT MANAGER
MICHAEL OATES SENIOR DEVELOPER
Under The Hood
3
2
1
FORGE UI AGENDA
The Why Behind
The Future
<iframe> </iframe>
<iframe> </iframe>
Forge UI: A New Way to Customize the Atlassian User Experience
StaticDynamic
UI EXTENSIBILITYEXISTING
StaticDynamic
UI EXTENSIBILITYEXISTING
Static Dynamic
Middle ground?
Web Items
Glance Titles Panels
Dialogs
StaticDynamic Declarative
UI EXTENSIBILITYFUTURE
import ForgeUI from ‘@atlassian/forge-ui’;
Hello Forge UI! 👋
A declarative UI framework to enable
you to quickly and easily build native,
flexible, and trusted user experiences.
import ForgeUI from ‘@atlassian/forge-ui’;
CONFLUENCEFORGE UI FAAS
(<APP />, STATE)
(EVENT, STATE)
Forge UI: A New Way to Customize the Atlassian User Experience
Trusted
Secure apps with no data
egress
Quick and easy
Rapid development with
powerful components
Cross platform
Unlock support for native
extensibility on mobile
QUICK AND EASY
Declare components that
work out of the box
Faster loading times
Atlassian handles resizing and
cross-platform compatibility
TRUSTED
“No egress” apps
Apps stay within the
Atlassian cloud
Burden of trust and
security moves to Atlassian
CROSS PLATFORM
[{
"type": "Text",
"content": "Value 0"
}, {
"type": "Button",
"text": “Atlas Camp!”,
},
{
"type": "Button",
"text": "Increment",
"onClick": { }
}]
[{
"type": "Text",
"content": "Value 0"
}, {
"type": "Button",
"text": “Atlas Camp!”,
},
{
"type": "Button",
"text": "Increment",
"onClick": { }
}]
CROSS PLATFORM
Trusted
Secure apps with no data
egress
Quick and easy
Rapid development with
powerful components
Cross platform
Unlock support for native
extensibility on mobile
Under The Hood
3
2
1
FORGE UI AGENDA
The Why Behind
The Future
Under The Hood
3
2
1
FORGE UI AGENDA
The Why Behind
The Future
<Row>
<Cell>
<Button text="Attend" />
</Cell>
</Row>
Concepts
Markup
Effects
State
{
"type": "Row",
"children": [
{
"type": "Cell",
"children": [
{
"type": "Button",
"text": "✅ Attend"
}
]
}
]
}
Concepts
Markup
Effects
State
{
"type": "render",
"aux": {
"type": "View",
"children": {
"type": "Button",
"text": "Attend"
}
}
}
Concepts
Markup
Effects
State
{
"type": "render",
"aux": {
"type": "View",
"children": {
"type": "Button",
"text": "Attend"
}
},
"state": {
"App.0": {
"count": 1
}
}
}
Concepts
Markup
Effects
State
UI = f(state)
Forge UI: A New Way to Customize the Atlassian User Experience
SYSTEMS
Invocation
Service
Client Function
APP LIFECYCLE
Discovery Initialise
Render
Event
DATA FLOW: DISCOVERY
Invocation
Service
Client Function
Forge UI: A New Way to Customize the Atlassian User Experience
APP LIFECYCLE
Discovery Initialise
Render
Event
DATA FLOW: RENDERING
{
"effects": [{
"type": "initialize",
}],
}
Event
Invocation
Service
Client Function
APP LIFECYCLE
Discovery Initialise
Render
Event
FORGE UI FUNCTION
const App = () => {
const [appointments, attendAppointment] = useAppointments();
const rows = appointments.map(appointment =>
<AppointmentRow
appointment = {appointment}
onAttend = { () => attendAppointment(appointment) }
/>);
return <AppointmentsTable title = {title}>
{ rows }
</AppointmentsTable>;
};
JSX TRANSFORM
const App = () => {
const [appointments, attendAppointment] = useAppointments();
const rows = appointments.map(appointment =>
ForgeUI.createElement(AppointmentRow,
{
appointment: appointment,
onAttend: () => attendAppointment(appointment)
})
);
return ForgeUI.createElement(AppointmentsTable,
{
title: title
},
... rows
);
};
RENDERER
APP
{
"state": {
"App.3.0": {
“0": useAction(...)
}
}
}
RENDERER
APP
{
"state": {
"App.3.0": {
"0": [
{
"id": 0,
"time": "9:00am - 9:30am",
"occupied": false
}
]
}
}
}
RENDERER
CELL
BUTTON CUSTOM
{
"type": "Button",
"onClick": () => {}
}
APP
RENDERER
CELL
BUTTON CUSTOM
{
"type": "Button",
"key": “Button.1.0",
"onClick": () => {}
}
RENDERER
CELL
BUTTON CUSTOM
{
"type": "Button",
"key": "Button.1.0",
"onClick": {
"componentKey": "Button.1.0",
"prop": "onClick"
}
}
RENDERER
CELL
BUTTON
TEXT BUTTON
FRAGMENTCUSTOM
DATA FLOW
Invocation
Service
Client Function
[{
"type": "render",
"state": { ... },
"aux": [
{
"type": "View",
“children”: [ ... ]
}, ...
]
}]
Result
Forge UI: A New Way to Customize the Atlassian User Experience
[{
"type": "Cell",
"children": [
{
"type": "Text",
"content": "Free"
}]
}, {
"type": "Cell",
"children": [
{
"type": "Button",
"text": "✅ Attend",
"onClick": {}
}]
}]
Native rendering
Faster load times
• Fewer resources to load and parse
on app load
• No need to instantiate multiple
iframe contexts
• Can cache contents if needed
Better integration
• Content resizing works
• Better dropdown and modal support
• Consistent with visual appearance of
surrounding app
• Able to leverage more complex
components in surrounding app
APP LIFECYCLE
Discovery Initialise
Render
Event
Forge UI: A New Way to Customize the Atlassian User Experience
{
"type": "Button",
"key": "Button.1.0",
}
"onClick": {
"componentKey": "Button.1.0",
"prop": "onClick"
}
DATA FLOW: EVENTS
Invocation
Service
Client Function
{
"effects": [{
"type": "event",
"handler": {
"componentKey": “Button.1.0",
"prop": "onClick"
},
"args": []
}],
"state": { ... }
}
Event
EVENTS
CELL
BUTTON
TEXT BUTTON
FRAGMENT
onClick
APP LIFECYCLE
Discovery Initialise
Render
Event
DATA FLOW: EFFECTS
Invocation
Service
Client Function
[{
"type": "render",
"state": { ... },
"aux": [
{
"type": "View",
“children”: [ ... ]
}, ...
]
}]
Result
Forge UI: A New Way to Customize the Atlassian User Experience
EFFECTS: LATENCY
Invocation
Service
Client Function
APP LIFECYCLE
Discovery Initialise
Render
Event
Under The Hood
3
2
1
FORGE UI AGENDA
The Why Behind
The Future
Under The Hood
3
2
1
FORGE UI AGENDA
The Why Behind
The Future
MORE
COMPONENTS
CROSS-
PRODUCT
VISION
SECURITY
Function
Domain A
Domain B
Allowed
Denied
SECURITY
FunctionFront End
Domain
Image
SECURITY
FunctionFront End
Domain
Image
NEW PLATFORMS
Invocation
Service
Different Clients Function
NEW PLATFORMS
Function
STATIC ASSETS
Invocation
Service
Client
IMAGES
Function
STATIC ASSETS
Invocation
Service
Client
IMAGES
CDN
Function
STATIC ASSETS
Deployment
Service
CLI
CODE
CDN
Functions
IMAGES
DEPLOYMENT
IFRAMES
Client Hosted
iframe
API
ASSETS
CDN
Functions
StaticDynamic Declarative
UI EXTENSIBILITYFUTURE
EvaluatingExperimenting Expecting
THIS YEAR
FORGE BETA
PROGRAM
TODAY
HANDS-ON
FORGE LABS
Upstairs in Schubert 3
Thank you!
SIMON KUBICA PRODUCT MANAGER
MICHAEL OATES SENIOR DEVELOPER
Q & A

More Related Content

What's hot (20)

PDF
Drools and jBPM 6 Overview
Mark Proctor
 
PDF
[JWPA-1]의존성 주입(Dependency injection)
Young-Ho Cho
 
PDF
Robot Framework :: Demo login application
Somkiat Puisungnoen
 
PPT
[Java] Khái niệm về RMI trong Java và cách sử dụng RMI
Tí Bụng Bự
 
ODP
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGI
Marcelo Gornstein
 
PDF
Entities on Node.JS
Thanos Polychronakis
 
PDF
Service discovery with Eureka and Spring Cloud
Marcelo Serpa
 
PPTX
Postman Collection Format v2.0 (pre-draft)
Postman
 
PDF
Buenas prácticas para la construcción de software
Iker Canarias
 
PDF
An introduction to Vue.js
Javier Lafora Rey
 
PDF
Postman
Igor Shubovych
 
PPTX
Workshop Spring - Session 4 - Spring Batch
Antoine Rey
 
PPTX
Spring Boot
Jiayun Zhou
 
PDF
NestJS
Wilson Su
 
PPTX
Android audio system(audiopolicy_manager)
fefe7270
 
PDF
TypeScript Best Practices
felixbillon
 
PDF
Bizweb Microservices Architecture
Khôi Nguyễn Minh
 
PDF
Testing Spring Boot Applications
VMware Tanzu
 
PDF
OpenID Connect Explained
Vladimir Dzhuvinov
 
PDF
Diagramas de componentes
Portal_do_estudante_ADS
 
Drools and jBPM 6 Overview
Mark Proctor
 
[JWPA-1]의존성 주입(Dependency injection)
Young-Ho Cho
 
Robot Framework :: Demo login application
Somkiat Puisungnoen
 
[Java] Khái niệm về RMI trong Java và cách sử dụng RMI
Tí Bụng Bự
 
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGI
Marcelo Gornstein
 
Entities on Node.JS
Thanos Polychronakis
 
Service discovery with Eureka and Spring Cloud
Marcelo Serpa
 
Postman Collection Format v2.0 (pre-draft)
Postman
 
Buenas prácticas para la construcción de software
Iker Canarias
 
An introduction to Vue.js
Javier Lafora Rey
 
Workshop Spring - Session 4 - Spring Batch
Antoine Rey
 
Spring Boot
Jiayun Zhou
 
NestJS
Wilson Su
 
Android audio system(audiopolicy_manager)
fefe7270
 
TypeScript Best Practices
felixbillon
 
Bizweb Microservices Architecture
Khôi Nguyễn Minh
 
Testing Spring Boot Applications
VMware Tanzu
 
OpenID Connect Explained
Vladimir Dzhuvinov
 
Diagramas de componentes
Portal_do_estudante_ADS
 

Similar to Forge UI: A New Way to Customize the Atlassian User Experience (20)

PDF
Designing Forge UI: A Story of Designing an App UI System
Atlassian
 
PDF
mobl - model-driven engineering lecture
zefhemel
 
PDF
Let's Build an Editor Macro with Forge UI
Atlassian
 
PDF
Cross-platform UI Engines Rendering Performance
Igalia
 
PDF
mobl presentation @ IHomer
zefhemel
 
PDF
Learn Programming Languages & Get Programming Assignment Sample Solutions PDF...
Assignment Task
 
PDF
Software Language Design & Engineering
Eelco Visser
 
PDF
Azure mobile services
Nicolò Carandini
 
PDF
mobl
Eelco Visser
 
PPTX
Cross platform mobile app development with Xamarin
Pranav Ainavolu
 
PDF
Software Language Design & Engineering: Mobl & Spoofax
Eelco Visser
 
PPTX
Developing for Next Gen Identity Services
ForgeRock
 
PDF
Xamarin 9/10 San Diego Meetup
Seamgen
 
PPTX
App innovationcircles xamarin
Mohit Chhabra
 
PDF
How to modernise WPF and Windows Forms applications with Windows Apps SDK
Mirco Vanini
 
PPTX
KnowiXML: A Knowledge-Based System Generating Multiple Abstract User Interfac...
Jean Vanderdonckt
 
PDF
Frontend APIs powering fast paced product iterations
Karthik Ramgopal
 
PDF
The JSON architecture
Constantin Dumitrescu
 
PDF
Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile Apps
Kevin Moran
 
PDF
Develop your first mobile App for iOS and Android
Ricardo Alcocer
 
Designing Forge UI: A Story of Designing an App UI System
Atlassian
 
mobl - model-driven engineering lecture
zefhemel
 
Let's Build an Editor Macro with Forge UI
Atlassian
 
Cross-platform UI Engines Rendering Performance
Igalia
 
mobl presentation @ IHomer
zefhemel
 
Learn Programming Languages & Get Programming Assignment Sample Solutions PDF...
Assignment Task
 
Software Language Design & Engineering
Eelco Visser
 
Azure mobile services
Nicolò Carandini
 
Cross platform mobile app development with Xamarin
Pranav Ainavolu
 
Software Language Design & Engineering: Mobl & Spoofax
Eelco Visser
 
Developing for Next Gen Identity Services
ForgeRock
 
Xamarin 9/10 San Diego Meetup
Seamgen
 
App innovationcircles xamarin
Mohit Chhabra
 
How to modernise WPF and Windows Forms applications with Windows Apps SDK
Mirco Vanini
 
KnowiXML: A Knowledge-Based System Generating Multiple Abstract User Interfac...
Jean Vanderdonckt
 
Frontend APIs powering fast paced product iterations
Karthik Ramgopal
 
The JSON architecture
Constantin Dumitrescu
 
Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile Apps
Kevin Moran
 
Develop your first mobile App for iOS and Android
Ricardo Alcocer
 
Ad

More from Atlassian (20)

PPTX
International Women's Day 2020
Atlassian
 
PDF
10 emerging trends that will unbreak your workplace in 2020
Atlassian
 
PDF
Forge App Showcase
Atlassian
 
PDF
Meet the Forge Runtime
Atlassian
 
PDF
Take Action with Forge Triggers
Atlassian
 
PDF
Observability and Troubleshooting in Forge
Atlassian
 
PDF
Trusted by Default: The Forge Security & Privacy Model
Atlassian
 
PDF
Forge: Under the Hood
Atlassian
 
PDF
Access to User Activities - Activity Platform APIs
Atlassian
 
PDF
Design Your Next App with the Atlassian Vendor Sketch Plugin
Atlassian
 
PDF
Tear Up Your Roadmap and Get Out of the Building
Atlassian
 
PDF
Nailing Measurement: a Framework for Measuring Metrics that Matter
Atlassian
 
PDF
Building Apps With Color Blind Users in Mind
Atlassian
 
PDF
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Atlassian
 
PDF
Beyond Diversity: A Guide to Building Balanced Teams
Atlassian
 
PDF
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
Atlassian
 
PDF
Building Apps With Enterprise in Mind
Atlassian
 
PDF
Shipping With Velocity and Confidence Using Feature Flags
Atlassian
 
PDF
Build With Heart and Balance, Remote Work Edition
Atlassian
 
PDF
How to Grow an Atlassian App Worthy of Top Vendor Status
Atlassian
 
International Women's Day 2020
Atlassian
 
10 emerging trends that will unbreak your workplace in 2020
Atlassian
 
Forge App Showcase
Atlassian
 
Meet the Forge Runtime
Atlassian
 
Take Action with Forge Triggers
Atlassian
 
Observability and Troubleshooting in Forge
Atlassian
 
Trusted by Default: The Forge Security & Privacy Model
Atlassian
 
Forge: Under the Hood
Atlassian
 
Access to User Activities - Activity Platform APIs
Atlassian
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Atlassian
 
Tear Up Your Roadmap and Get Out of the Building
Atlassian
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Atlassian
 
Building Apps With Color Blind Users in Mind
Atlassian
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Atlassian
 
Beyond Diversity: A Guide to Building Balanced Teams
Atlassian
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
Atlassian
 
Building Apps With Enterprise in Mind
Atlassian
 
Shipping With Velocity and Confidence Using Feature Flags
Atlassian
 
Build With Heart and Balance, Remote Work Edition
Atlassian
 
How to Grow an Atlassian App Worthy of Top Vendor Status
Atlassian
 
Ad

Recently uploaded (20)

PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Python basic programing language for automation
DanialHabibi2
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 

Forge UI: A New Way to Customize the Atlassian User Experience